How to Approach System Design
System design interviews and real-world architecture sessions share the same structure: clarify requirements, estimate scale, then design incrementally. Skipping requirements is the most common mistake — building a system that handles 10 million users when the product has 100 is engineering waste. Skipping scale estimation means discovering too late that your choices cannot handle the load.
Start every design with two questions: what does the system need to do (functional requirements), and what constraints must it meet (non-functional: latency, throughput, availability, consistency). Then do back-of-envelope math. A system handling 1 million requests per day averages on the order of ~10 RPS — often within one well-tuned server for light handlers, depending on work per request and peak-to-average ratio. At 100 million per day you are around ~1,000+ average RPS and usually need horizontal capacity. Workload math drives decisions; peaks matter more than daily averages.
Check your understanding
What two requirement types should you clarify first?Show answerHide answer
Answer
Functional (what it does) and non-functional (latency, throughput, availability, consistency).Why do back-of-envelope numbers matter?Show answerHide answer
Answer
They tell you whether one server suffices or you already need horizontal scale — before drawing microservices.Rough order of magnitude: 1M requests/day average RPS?Show answerHide answer
Answer
About ~12 RPS on average (burst will be higher) — often one well-tuned server class, depending on work per request.