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 β†’