Design a Notification System
A full case study of a push, SMS and email notification platform, covering queues, retries, deduplication, priorities and user preferences.
Requirements
A notification system sends messages to users on several channels: mobile push, SMS, email and in-app.
Functional:
- Other services call it ("order shipped", "OTP", "weekly digest").
- Channels: push, SMS, email.
- Users can opt out per channel and per category.
- Templates, scheduling, and a record of what was sent.
Non-functional:
- OTPs (one-time passwords) arrive in seconds; marketing can wait minutes.
- Never send the same notification twice (annoying) and rarely lose an important one (costly).
- Survive provider outages.
- Scale to bursts: a campaign can be millions of messages at once.
1 of 11