System Design Interview FrameworkLesson 1.4
How to draw a high-level system design diagram
component identification, data flow, client-server model, load balancer placement, service decomposition, database selection
What Goes in a High-Level Design
A high-level design answers one question: how does data flow through the system? You're identifying components, not configuring them.
Standard Components to Consider
- Clients: mobile, web, third-party API consumers
- Load Balancers: distribute traffic, handle SSL termination
- Application Servers: business logic, stateless when possible
- Databases: SQL for relational data, NoSQL for high-scale unstructured data
- Caches: Redis/Memcached for hot reads
- Message Queues: Kafka/RabbitMQ for async processing
- CDN: static assets, geographic distribution
Drawing Order
- Start with the client
- Draw the entry point (API gateway or load balancer)
- Add core services
- Add data stores
- Add cross-cutting concerns (cache, queue, CDN)
Label every arrow with the protocol (HTTP, gRPC, TCP). Interviewers often ask 'how does the app server talk to the database?' โ your diagram should already show it.
Keep the diagram simple. You'll add complexity in the deep dive phase.
