From MozillaWiki
Jump to: navigation, search
rnewman's high-level vision of how to design a scalable notification system.

A basic prototype of the interactions between the client and the server was demonstrated, including:

  • Registering a user with the server
  • Registering/revoking a mailbox token
  • Sending notifications to multiple clients

Also discussed were the steps that would need to be taken to design the system for scalability. After aamariutei and sdasilva met with rnewman to discuss the possibility of using a queuing system, rnewman suggested building a system with three layers, with queuing servers (e.g. RabbitMQ) acting as the buffers between layers. His design would allow the system to be scalable in that it would be able to handle large spikes in notifications, allowing the notifications to be queued up, merely slowing down the system rather than bringing it to a halt.

Simplified conceptual model of the notification system.

For the purposes of development, rnewman suggested a simpler conceptual model that could eventually be extended to the more scalable model in future. This will most likely be the approach taken by sdasilva in developing the server prototype supporting message queuing.

sdasilva also determined that RabbitMQ would be a good candidate for developing the queuing system with, as the pika python library makes it very simple to quickly build a simple publish/subscribe system that pushes notifications to multiple clients. He will continue to play around with the library and try to integrate it with the currently existing server code to allow delivery of notifications via AMPQ.

Goals for Next Week

The main goal for next week is to research possible technologies to use in building the next stage of the prototype (one that uses asynchronous message queuing):

  • What subset of BOSH (XMPP) do we need to implement for the client-server communication?
  • Can BOSH be used to speak with RabbitMQ (AMPQ) delivery queues?
  • Can we layer our current server code on top of RabbitMQ effectively?

Unsolved Issues

Multiple users on a single client

  1. Alex can receive notifications from Gmail on his browser
  2. Alex "lends" his computer to Shane to check Shane's email; Shane logs in
  3. Gmail discovers that it can send notifications to Alex's browser about Shane's email and asks for this.
  4. How does Gmail know who is it sending notifications to?
    • Potential Solution: Have an anonymous mode that Alex can activate before lending his machine?

Sending confirmation messages once notification has been sent

  • Do we give web apps the option of receiving an asynchronous ACK?
  • Would require a near-duplication of the entire system suggested by rnewman, but going in the opposite direction.


Schedule meetings with:

  • UX
  • bsmith (crypto)