System design interview questionMediumMessaging & Async
Design an Email / Notification Delivery Service
Design an email/notification delivery service: accept send requests and deliver asynchronously at scale.
Interview scope
Client β Gateway/LB β App β Message Queue; workers (App) consume Queue; App β DB for status. No Client β Queue.
Functional requirements
- Accept a send request (to, subject/body or template).
- Queue delivery work and process it with workers.
- Track delivery status / retries at a high level.
Scale and quality goals
- Sending must not block the callerβs HTTP request on SMTP/provider latency.
- Spikes of millions of emails need a durable queue.
- Status should be queryable later from storage.
Capacity assumption
Design for this scale
Assume ~100M emails/day β ~1,160 sends/s average; peaks much higher during campaigns.
Practice more than a diagram
Place components on the Froquiz canvas, connect the data flow, and see which decisions the scenario-specific review finds missing. The full exercise and review unlock with Premium.
Explore Premium β