Published: September 1, 2025
5
72
1.0k

You’re in a backend interview. They ask: “How would you design a notification system (email, SMS, push) that scales?” Here’s how to approach it:

Before we dive in, we are building the next interview prep playground targeting backend engineers. Join our MB Interview waitlist: https://tally.so/r/w46glb

Start with the requirements: - Support multiple channels (email, SMS, push). - Handle high throughput (millions of notifications). - Guarantee delivery as much as possible. - Allow retries and user-level preferences.

High-level design: - API layer → receives notification requests. - Queue → decouples producers from workers. - Workers → process notifications per channel. - Channel providers → (SES, Twilio, FCM).

Why a queue? - Spikes in traffic won’t overwhelm workers. - Enables retries on failure. - Supports backpressure if a downstream provider is slow.

Workers: - Each channel gets its own worker pool. - Workers must be idempotent → if retried, don’t double-send. - Use exponential backoff for retries.

Scaling: - Add more workers per channel when load increases. - Partition jobs across queues (per region or per channel). - Use rate limiting to respect provider quotas.

User preferences: - Store in DB: when, how, and what type of notifications users want. - Check before enqueueing a job. - Avoid wasting resources sending unwanted notifications.

Reliability concerns: - Dead-letter queues for jobs that keep failing. - Monitoring for provider outages. - Failover: switch providers (e.g., from Twilio → Nexmo) when needed.

How to frame it in an interview: “I’d design a notification service with an API, queue, channel-specific workers, retries, and provider failover. It would scale horizontally and respect user preferences while ensuring reliable delivery.”

If you like Tweets like this, you will absolutely enjoy my exclusive weekly newsletter, Sharing exclusive backend engineering resources to help you become a great Backend Engineer. Join 10,000+ subscribers here: https://backendweekly.dev

@Kaperskyguru good one

@Kaperskyguru I use Resend for this. Very straightforward.

@Kaperskyguru Nice read 🍻🙌

Got my 250k USD remote offer finally.

Image in tweet by Solomon Eseme

September Goals: ⚔️ - Complete Linear Algebra. - Complete Probability. - Complete Statistics. - Complete Machine Learning. - Complete Python. - Complete DBMS.

Image in tweet by Solomon Eseme

30 Blogs to Learn 30 System Design Concepts: 1. APIs: https://blog.algomaster.io/p/w... 2. API Gateways: https://blog.algomaster.io/p/w... 3. JWTs: https://blog.algomaster.io/p/j... 4. Webhooks: https://blog.algomaster.io/p/w... 5. REST vs GraphQL: https://blog.algomaster.io/p/r... 6. Load Balancing:

Image in tweet by Solomon Eseme

wasn't able to sleep last night, so completed kubernetes, from start to finish.

Image in tweet by Solomon Eseme
Image in tweet by Solomon Eseme
Image in tweet by Solomon Eseme

Share this thread

Read on Twitter

View original thread

Navigate thread

1/18