Guide
IntermediateSystem Design Fundamentals
A from-first-principles guide to system design — requirements and estimation, scaling, the data layer, and the distributed-systems building blocks that show up in almost every real architecture.
4 chapters · 12 sections · 23 min read · Updated Sep 12, 2026
What you'll learn
- How to turn an ambiguous prompt into concrete functional and non-functional requirements
- How to do back-of-the-envelope estimation before committing to an architecture
- When to scale vertically versus horizontally, and how load balancing actually works
- How to choose between SQL and NoSQL, and how replication and sharding scale a database
- The CAP theorem and what it really constrains during a network partition
- The distributed-systems building blocks — queues, CDNs, circuit breakers — behind most real architectures
Chapters
- 1. Foundations
System design is often taught as a grab-bag of buzzwords — "just add a cache," "shard the database," "put a queue in front of it." This cha…
3 sections
- 2. Scaling Fundamentals
Once you know what the system needs to do and roughly how much load it's under, the next question is almost always: what happens when one m…
3 sections
- 3. The Data Layer
Most system design decisions eventually come back to the database, because it's usually the hardest part of a system to scale after the fac…
3 sections
- 4. Distributed Systems Building Blocks
The last three building blocks that show up in almost every real distributed system: decoupling work with queues, pushing content physicall…
3 sections