Design: Notification System
Design covers notification generation, delivery, user preferences, and history storage. Does not cover content creation or user authentication systems.
Functional Requirements
Non-Functional Requirements
Jump into concepts and practice - no test required
+-----------------+
| Client / Other |
| Services API |
+--------+--------+
|
v
+--------+--------+
| API Gateway |
+--------+--------+
|
v
+--------+--------+ +-------------------+
| Notification | | User Preferences |
| Service |<-------->| Store (DB/Cache) |
+--------+--------+ +-------------------+
|
v
+--------+--------+
| Message Queue |
+--------+--------+
/ | \
v v v
+---------+ +-----+-----+ +--+---------+
| Email | | SMS | | Push |
| Service | | Service | | Service |
+---------+ +-----------+ +------------+
|
v
+--------+--------+
| Retry & Failure |
| Handling |
+-----------------+
|
v
+-----------------+
| Notification |
| History DB |
+-----------------+