System Design: Multi-Channel Notification Service
Goal
Design a company-wide Notification Service that reliably delivers messages via push, SMS, and email.
Functional Requirements
-
Per-recipient personalization and templating (multi-language, per-channel content).
-
Ordering guarantees per user (messages for a user are processed in order of creation).
-
Idempotency and de-duplication across retries and client resubmits.
-
At-least-once delivery with configurable SLAs (deadline/TTL, priorities).
-
Provider failover (multi-provider routing) and multi-region resilience (active-active).
-
Observability: metrics, logs, distributed tracing.
-
Cost controls: budgets/quotas, price-aware routing, graceful degradation.
Deep Dive: 100× Traffic Spike (e.g., flash sale)
Discuss how you would handle sudden spikes 100× above baseline:
-
Ingestion protections and API backpressure
-
Partitioning strategy
-
Queuing and buffering
-
Per-user and per-provider rate limiting
-
Backpressure propagation end-to-end
-
Autoscaling policies
-
Scheduling and prioritization (SLA-aware)
-
Retry and dead-letter strategy
-
Quota enforcement and fairness (tenant/team/user)
-
Graceful degradation strategies
Deliverables
-
Public APIs (request/response, idempotency)
-
Storage schemas (core tables/documents, indexes)
-
Capacity estimates and assumptions
-
End-to-end data flow
-
Potential bottlenecks and mitigations