Notification System
Push, SMS and email to millions — without dropping a beat.
Fan a breaking-news event out to millions across push, SMS and email — surviving sender crashes and provider throttling.
Decouple senders from the request with a queue; workers call the providers (APNs/FCM/SMS/email). Rate-limit and dedup so one throttled provider doesn't sink the rest.
Components in play
- Notify API — Accepts events, applies user prefs & dedup.
- Send queue — Buffers the fan-out so a spike never blocks producers.
- Channel senders — Workers that call push / SMS / email providers.
- Push providers — Downstream APNs / FCM / SMS / email gateways.
Graded on these SLOs
- ≥ 97.00%Notifications delivered
- ≥ 10k rpsFan-out rate
- ≤ 90%Headroom
- ≤ 12Lean fleet
The brief
Design a system that delivers notifications across channels — push (APNs/FCM), SMS and email. A single event (breaking news) can fan out to millions; third-party providers throttle and fail, and users have preferences and quiet hours.
Functional
- Send across push / SMS / email
- Respect user preferences & opt-outs
- Dedup and rate-limit per user
Non-functional
- Absorb huge fan-out spikes
- Tolerate flaky / throttling providers
- At-least-once delivery for important messages
Read the deep dive
17 min readNotification systems look deceptively simple: call an API, send a push. The hard part shows up at the edges. One event, like a breaking-news alert, can need to reach millions of people within seconds. The third-party providers you depend on (Apple's APNs, Google's FCM, an SMS gateway, an email service) throttle you the moment you push hard. Your own sender processes crash mid-blast. And every recipient has preferences, opt-outs and quiet hours you must honor, while still guaranteeing that the password-reset code actually arrives. Get any of these wrong and you either drop important messages or spam people into unsubscribing. This guide walks through the design the way you would in a FAANG interview, and it is tuned to the SysGym "Notification System" simulator: a 35-second run that ramps offered load from 10,000 to 18,000 events per second, kills sender workers twice, and throttles a provider, all while grading you on availability (deliver at least 97 percent), sustained throughput (at least 10,000 per second), peak saturation (keep the hottest component at or below 90 percent) and cost (a footprint of 12 or fewer instances). Every number below is chosen so the reasoning and the gym reinforce each other.
Warm-up: design decisions
Optional theory to prime the calls a senior engineer would make before you build.
Solving is a Pro feature
Unlock the on-canvas AI design coach, per-run design reviews, the chaos simulator and all 12 problems for $15/month.
- AI design coach on your canvas — pins failure points & over-engineering
- Honest AI design review on every run
- All 12 problems + unlimited chaos simulator
- Points, levels & leaderboard