Design a service other teams call to send a notification to a user — push, email or SMS. Choosing what to send and when is out of scope; delivering it is not.
Requirements
- Accept a send request from any internal service
- Deliver over push, email or SMS
- Respect the user’s channel preferences
- A provider being down does not lose the notification
Scale
- Notifications
- 100M per day
- Channels
- push, email, SMS
- Providers
- a third party per channel
- Peak
- about 5× the average
Draw the design on the board, fill in Your answer, then submit.