Building a scalable system that sends out millions of notifications.
Requirements:
- 10 million push notifications daily to different devices
- A soft real-time system. We want a user to receive notifications as soon as possible. If the system is under a high workload, a slight delay is acceptable.
- Notifications can be triggered by client applications
- User can opt-out (unsubscribe)

Source: ByteByteGo https://medium.com/@meenak1996/system-design-of-notification-system-8c2828be3e8e

Source: ByteByteGo https://bytebytego.com/guides/how-does-a-typical-push-notification-system-work/
Third-party Communication APIs
- iOS: Apple Push Notification Service (APNS)
- Android: Firebase Cloud Messaging (FCM)
- Jpush, PushY are used in China
- SMS: Twilio, Nexmo
- Email: Sendgrid, Mailchimp
Notification Servers
Missions
- Provide internal APIs for business logic services (e.g., payment service)
- Verify emails, phone numbers, etc.
- Query the database or cache in order to render a notification content (e.g., HTML).
- Put notification data to message queues for parallel processing. The data includes:
- metadata (user ID, even ID, notification type, payload, timestamp, etc)
- filled template