Design a notification system that sends order-status updates to users across email, SMS, and push. How do you keep it reliable and decoupled from the services that trigger notifications?

system-design · Mid level · software-engineering

What the interviewer is really asking

Assesses understanding of asynchronous, queue-based decoupling, third-party delivery failure handling, and at-least-once delivery semantics — the realistic concerns of a fan-out notification pipeline.

What to say

What to avoid

Example answers

Strong: The order service publishes an order_status_changed event to a topic and is done — it doesn't know or care how notifications get sent. A notification service subscribes, looks up the user's enabled channels and preferences, and enqueues per-channel jobs. Each channel worker calls its provider with retry-and-backoff; messages that exhaust retries go to a DLQ so we can alarm and replay after fixing the issue. Because the queue is at-least-once, each send is idempotent keyed by event id plus channel, so a redelivery doesn't double-text the customer.

Weak: When an order ships, the order service loops over the user's channels and calls the email and SMS APIs right there before returning the response.

Want questions matched to your role? Paste a job title, job description, or CV and get a personalized set, or go Pro to unlock the full bank.