The System Design Framework: How to Approach Any Problem

The 4-Step Framework

Step 1: REQUIREMENTS (5 min) • Clarify functional requirements (what does it do?) • Clarify non-functional requirements (scale, latency, availability) • Identify constraints and assumptions Step 2: ESTIMATION (5 min) • QPS (reads and writes) • Storage (per day, per year) • Bandwidth • Number of servers needed Step 3: HIGH-LEVEL DESIGN (15 min) • Draw the architecture (clients, LB, services, DB, cache) • Identify core components and data flow • Choose database type, communication pattern Step 4: DEEP DIVE (15 min) • Dive into 2-3 interesting components • Discuss trade-offs and alternatives • Address failure scenarios • Discuss scaling bottlenecks

Common Building Blocks

NeedReach For
Handle many requestsLoad balancer + horizontal scaling
Fast readsCache (Redis) + CDN
Fast writesMessage queue (Kafka) + async processing
SearchElasticsearch
Real-timeWebSocket + pub/sub
Large filesObject storage (S3) + CDN
Unique IDsSnowflake / ULID
ConsistencySingle leader DB + synchronous replication
AvailabilityMulti-region + eventual consistency

Trade-off Discussions to Always Mention

What You've Learned in This Guide

🎓 Congratulations!

You now have a complete mental toolkit for system design:

Practice by designing systems you use daily: how would you build Spotify? Uber? Your company's internal tools? Apply the framework, draw diagrams, identify trade-offs.