Cookies are used for the best experience on my website.

Accept Cookie Policy

No internet detected

Check your connection and try again.

Logo Image

No match found

Buy a coffee

I launched this blog in 1995. Since then, we have published 1603 articles. It's all free and means a lot of work in my spare time. I enjoy sharing knowledge and experiences with you.

Your support

Have you learned something new by reading, listening, or watching my content? With your help, I can spend enough time to keep publishing great content in the future.

Or, select an option below:

A small slice of my data processing time each month

It's ongoing work running this site and what's really great is ongoing support. Here's a sense of what goes into this site: research topics for discussion. Manage the Tech stuff: website, SEO, graphics, email, back-end servers, DNS routing, edge servers. Create advertisements and load the campaigns in Google Ads. Manage the social media forums (Facebook, Reddit, Twitter). Write updates to the blog. Keep GitHub up-to-date.

$4.50 — A large cappuccino at my local

Things just work better with coffee! I like to take the kids to school then grab a cappuccino from my local on the way home before beginning the things that take mental energy.

$8.99 — A month of Netflix for some quiet nights in

A lot of the work on this happens after hours when I should be relaxing on the couch. Help me make it so and I promise to keep off the devices for a bit!

$11.50 — Fund a month of email delivery

This site sends out thousands of emails every month. For that volume and to ensure deliverability, I need to pay MailChimp.

$20 — Pay for one month of AWS storage fees

Websites are not free. The storage alone takes some cash. If you are willing to lighten the burden, we can keep this site up online.

$30 — One hour's pay for a graphics artist

Art doesn't create itself without a hand to guide it. I can't draw, so I need to pay others to help.

$45 — Pay a full-stack web developer for one hour

Much of the work on this site happens on weekends which means giving up time with the kids. Help me pay the developers so I can give my kids more time.

How to Design a Notification System

A notification system has become a mandatory feature of ⋯

Author

Leandro FRANCHI


  • 443

  • 2600

  • 5

  • 0

  • 0

A notification system has become a mandatory feature of any system that helps touch users, collect analytics data, etc. It’s more than a mobile push and there are some different types of notification formats like push, SMS, email and software badge (not covered here).

In this article, we will skim the surface on Notification System Design for Push, SMS and email formats in near real time, average of 10 million of notifications per day triggered by a secure API Endpoint respecting an unsubscribe list control.

Notification Types 🔗

iOS Push 🔗

Notification for iOS Devices.

A provider sends notifications do Apple Push Notification Service, a remote service provided by Apple do push notifications do iOS devies.

Android Push 🔗

Notification for Android Devices.

The android notification is similar of IOS notification flow, but, instead using de APNs we will use Firebase Cloud Messaging do tens android push notifications.

SMS Message 🔗

Notification using SMS Message.

Same above, but, using a SMS Service provider like Twilio. Some providers like Twilio has features to send message using WhatsApp telephony and mail marketing.

Email Message 🔗

Notification using Email Message.

Same above, but, using a email service provider like Sendgrid (or AWS SES with SQS).

Complete Notification System Design 🔗

Important to say, it’s a high-level design and we will have a lot of not covered details in this article when we focus on each point of this picture.

  1. External software sends JSON message through https with message data, like address, type, message, etc.
  2. Rate limiter validate internal rules to protect system overload and security issues.
  3. Notification Service receives the message, deliver to correct message queue and writes some log to data store over a Data Cache cluster.
  4. Some workers consumes the messages from queue and connect with third part software to send a message to defined device type ou message format.
  5. Third part software calls back using Web Hooks to give status and analytics information about message.
  6. More workers running gets these information and stores on data store layer.
  7. Status and analytics data are available for Notification Status & Analytics Service giving these data to external Service back.

Using these system design the software we gain the following benefits:

  • Reliability: mechanisms to minimize the failure rate and SPOF.
  • Security: running over https using AppKey/appSecret pair to ensure only authorized users can send messages.
  • Tracking and Monitoring: logs, status and analytics data are stored.
  • Rate Limiting: protect system overload, unexpected burst and security issues.
  • This design works very well and should be replicated in other regions to increase the SLA, inserting new components like Load balancers, Big IPs, etc.

More about balance and reliability here.

This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.