@RaulJuncoV: Push-based systems come up in 90% of system design interviews. Here's the exercise you should be able to solve: Design …
Summary
A Twitter thread by RaulJuncoV explains the fan-out problem in push-based notification systems, using the example of designing for 100M users. It discusses the hybrid push-pull approach used by Twitter and the additional challenges of stateful connections and reconnect logic.
View Cached Full Text
Cached at: 05/23/26, 12:03 PM
Push-based systems come up in 90% of system design interviews.
Here’s the exercise you should be able to solve:
Design a notification system for 100M users. Some have 50 followers. Some have 10M.
The instinct is to hold a WebSocket connection open to every active user and push updates as they arrive. Clean mental model. It collapses the moment a celebrity posts.
When someone with 10M followers posts, you push to 10M open connections simultaneously. Your message broker saturates. Your WebSocket servers fall over. The system fails at the exact moment it needs to work.
That’s the fan-out problem. And it kills more interview answers than any other mistake.
The production answer: push and pull aren’t binary. You pick based on follower count. Users with fewer than 1,000 followers get push fan-out. Each follower gets notified immediately.
Users with millions of followers get pull fan-out. Their feed assembles on read. Nobody gets a push. Followers see the post when they open the app.
Twitter built exactly this: push-on-write for small accounts, pull-on-read for large ones.
But fan-out is only half the problem.
Push means stateful connections. Your servers now need to know which connection lives on which machine. You can’t route blindly. Most teams reach for Redis pub/sub here; the WebSocket server subscribes, the backend publishes, the message finds the right node.
Add a 3-second network drop and you have another layer: what did the client miss? Now you need sequence IDs, a message buffer, and reconnect logic that replays missed events.
“Push-based” became push with a pull fallback, a message broker, sticky routing, and a replay buffer.
Most engineers stop at the first diagram. The ones who get the offer keep pulling the thread until the system breaks.
Similar Articles
@NikkiSiapno: 35 system design concepts developers should know: 1. Event-driven architecture ↳ https://lucode.co/event-driven-archite…
A Twitter thread listing 35 essential system design concepts with links to detailed explanations, aimed at helping developers learn and review key topics.
@Akintola_steve: https://x.com/Akintola_steve/status/2055620856802357587
A practical blueprint for designing a backend system capable of handling 1 million concurrent users, covering architecture decisions like language selection, load balancing, database sharding, multi-layer caching, and resilience patterns.
@techyoutbe: https://x.com/techyoutbe/status/2076189458869928324
A guide to 40 backend concepts organized into six stages, from HTTP basics to system architecture, designed to help engineers prepare for system design interviews.
ByteByteGoHq/system-design-101
A GitHub repository providing visual and simple explanations of complex system design concepts, covering topics like APIs, load balancing, HTTP, and networking.
@RaulJuncoV: System design interviews are 80% questions and 20% diagrams. The better you clarify, the better your architecture becom…
This tweet discusses the importance of asking clarifying questions in system design interviews, explaining how questions drive better architecture than rote diagrams.