00. High-Level Design — The Five-Year-Old Version¶
You know the building blocks. Now we zoom out and design entire cities.
Imagine you are a city planner. Someone says: "We need a new town for one million people."
You don't start by choosing doorknobs. You start with a blueprint — a bird's-eye drawing that shows zones. Homes here. Shops there. Factories in the back. The blueprint doesn't show every room. It shows which zones exist and how they connect.
Then you draw roads connecting the zones. People and goods need to flow between them. Wide roads for heavy traffic. Narrow lanes for quiet neighborhoods. Some roads are one-way. Some have express lanes. The road layout decides how fast the city moves.
At the city entrance, you put a toll booth. Every car entering the city passes through it. The toll booth checks who you are, decides which road to send you down, and stops the city from getting overcrowded. Without it, cars flood in and jam every intersection.
Goods need somewhere to sit. You build warehouses — big buildings that store everything the city needs. Some warehouses keep fresh produce (fast access, small capacity). Others keep bulk grain (slower, massive capacity). You pick the right warehouse for each kind of goods. Put milk in the cold room. Put furniture in the big shed.
Rush hour comes. One road jams. You add an overflow lane — a second path that absorbs the extra cars. Maybe you build a second warehouse across town so people don't all crowd into one. Maybe you duplicate the entire shopping zone on the east side. That is scaling. The overflow lane is whatever you add when the original path can't keep up.
Now notice: a city planner never designs the plumbing inside a single house. That is someone else's job. HLD is the same. You draw the zones, the roads, the toll booths, the warehouses, and the overflow lanes. You don't worry about the code inside each service — that is LLD. You worry about whether the city works when a million people show up on the same Monday morning.
One more thing. A good city plan has answers for bad days. What if the main road floods? What if a warehouse catches fire? What if the toll booth breaks? The blueprint must show backup routes, spare capacity, and emergency protocols. That is resilience — and it lives at the HLD level, not buried inside individual buildings.
The placeholders you will see called back¶
| Placeholder | Meaning |
|---|---|
| blueprint | the high-level architecture diagram — zones and connections, not internal details |
| road | communication path between components — API call, message queue, event stream |
| toll booth | the single entry point that inspects, routes, and limits traffic — API gateway or load balancer |
| warehouse | the storage layer — database, cache, object store, file system |
| overflow lane | the mechanism for handling excess load — replicas, shards, queues, CDN nodes |
Top resources¶
- System Design Interview by Alex Xu (Vol 1 & 2) — the most practical HLD interview prep; real problems, structured walkthroughs
- Designing Data-Intensive Applications by Martin Kleppmann — the definitive deep dive on storage, replication, and distributed systems tradeoffs
- ByteByteGo newsletter — weekly system design breakdowns with clear architecture diagrams
- The System Design Primer (GitHub) — open-source collection of HLD concepts with diagrams and interview tips
- Google SRE Book — Chapter 2: Production Environment — how Google's infrastructure is actually wired at the HLD level
- AWS Well-Architected Framework — cloud-native HLD patterns across reliability, performance, cost, and security
What's coming¶
- 01-requirements-to-architecture.md — translating vague requirements into the first box-and-arrow diagram
- 02-component-decomposition.md — breaking one giant box into well-bounded services
- 03-api-design-at-boundaries.md — how components talk: contracts, protocols, versioning
- 04-data-modeling-and-storage.md — choosing where data lives and which database fits
- 05-sync-vs-async-communication.md — request-reply vs fire-and-forget and when each wins
- 06-load-balancing-and-routing.md — distributing traffic so no single server drowns
- 07-caching-at-system-level.md — layered caches from browser to database
- 08-scaling-read-path.md — read replicas, CDNs, and denormalization
- 09-scaling-write-path.md — sharding, partitioning, and write-ahead strategies
- 10-consistency-and-replication.md — what happens when copies of data disagree
- 11-failure-modes-and-resilience.md — circuit breakers, retries, and graceful degradation
- 12-rate-limiting-and-backpressure.md — protecting the system from itself and from the world
- 13-common-hld-archetypes.md — patterns for feeds, chat, URL shorteners, and other classics
- 14-ai-system-hld-patterns.md — model serving, feature stores, and training pipelines
- 15-honest-admission.md — what we don't fully understand about designing large systems
Bridge. The blueprint is blank. First step: turn fuzzy requirements into concrete boxes and arrows. → 01-requirements-to-architecture.md