System Design: Multi-Channel Notification Platform
Context
Design a multi-tenant notification platform that delivers messages across email, SMS, and mobile push. The system must support both real-time and scheduled notifications, per-user preferences, and be resilient, scalable, and cost-aware.
Functional Requirements
-
Channels: email, SMS, push notifications.
-
Delivery modes: real-time and scheduled (one-time and recurring).
-
User controls: per-user preferences (opt-in/out per category), quiet hours, locale/time zone.
-
Reliability: deduplication, idempotency, retries with exponential backoff.
-
Throttling: rate limiting per user, per tenant, and per provider.
-
Isolation: strict multi-tenant isolation (configs, limits, data segregation).
-
Content: templating with variables, localization (i18n, l10n), and A/B testing support.
-
Observability: monitoring, alerting, delivery analytics.
-
Compliance: GDPR/data minimization, consent management, auditability.
-
Cost controls: budgets/quotas and provider selection for cost/performance.
Non-Functional Requirements
-
High availability; horizontal scalability.
-
Message delivery latency targets and throughput (TPS) goals.
-
Delivery semantics: discuss exactly-once vs at-least-once.
-
Graceful degradation and failure-mode strategies.
Deliverables
-
Public APIs (send, schedule, templates, preferences, status).
-
Storage schema (entities, key indexes, partitioning).
-
Queue/pub-sub design and retry strategy.
-
Worker orchestration and provider integration patterns.
-
Monitoring/alerting and analytics plan.
-
Scalability targets (e.g., p99 latency, TPS) with reasoning.
-
Failure modes and mitigations.
-
A/B testing strategy.
-
GDPR/compliance approach.
-
Cost controls and budgets.