What you didn’t know about Real-time notification systems

I have been intrigued by Event Notification systems for a long time now, In fact this started from my programming days in legacy environments like iSeries. So I started working on a toy project which evolved into a solid project. I thought I will muse about that recent project the RealTimeNotification. But before going into the details of the project I would like to set the context. Below is the link to Github project.

Source

I am a big fan of AWS services. One of their services that I like and I would recommend  is AWS SNS (Simple notification service). Simple description ? Imagine a horizontally scalable service that you can embed into enterprise applications to send notifications to multiple endpoints. Some of the use cases it covers are:

  • x-Platform Mobile Push Notifications
  • sending SMS
  • sending email/email-JSON
  • notifying to a HTTP/s end
  • AWS Simple Queue Service (SQS)

AWS SNS comes with a very affordable pricing. check it out.

So why am I writing my RealTimeNotification project ? Hold on to that thought for a min and please continue reading.

  • Like other AWS services, SNS is also confined by the AWS regions/availability zones – What if you need a similar feature in a zone which has data privacy issues as well performance issues which might demand you to have the entire notification system deployed right next to your app.
  • The AWS SNS x-Mobile push notification flavour internally uses the platform provider’s notification systems like Apple Push notification (APNS), Google cloud messaging (GCM) and so on.. – what if I you have to send Notifications to constrained devices in IoT network using protocols like MQTT?
  • Finally what if we need a wholesome distributed Pub/Sub system for your enterprise application and not just an outbound notification system as AWS SNS.

RealTimeNotification project was aimed at closing the above gaps (of course in phased releases).  Try it out and let me know what do you think.

RTN High level Architecture

MPN

 Persistence and Logging

Persistence