Requirements
Functional Requirements:
- Ability to send notification synchronously
- Ability to target specific cohort of userId and devices
- Ability to schedule notification to be delivered
- Ability to personalize notification based on user information (name, location, etc.)
- Ability to track how many notifications are delivered, to evaluation effectiveness
- Ability to distribute notification sent across a certain period of time to not create a big load of TPS
Non-Functional Requirements:
List the key non-functional requirements (performance, scalability, reliability, etc.)...
- Performance
- Highly scalable
- Reliability should be high > 99%
- Notification delivery rate should be optimized (normally this is around 50% depending on if customer actually have notification enabled)
Traffic TPS:
- Suppose we send notification to 10 million customers everyday, within 8 hours time window when user is using their phone. This creates 350 TPS of traffic
Data Size
- Say we schedule 10 million notification on a daily basis, each record is 10 bytes. This adds up to be 85k GB per year. Although we can add optimization to clean up the records. We should go with a noSQL data base for scaling.