Overview
Your complete guide to System design
How to design a system that serves millions: estimating with numbers, scaling and load balancing, caching, replication and sharding, then microservices and queues.
Non-technical and technical learners alike. Every part opens two ways in: a plain path built on an analogy for someone starting from zero, and a detailed path for someone who knows the basics and wants depth.
An animation, then what you need before you start, then the idea with code you run, then a worked example, then review cards and "test your understanding" questions.
Do not leave a part before you can answer its questions without guessing. Reading alone proves nothing.
Pick a topic
A look at System design
You start with the server, then the database, then communication between parts. Each lesson solves the bottleneck that appears after the one before.
| Part | Topic | You learn |
|---|---|---|
| 1 | Scaling and load balancing | Back-of-the-envelope estimates, horizontal scaling, stateless servers and balancing algorithms |
| 2 | Caching, replication and sharding | LRU, TTL and invalidation, read replicas, and consistent hashing |
| 3 | Microservices and queues | Service boundaries, queues, retries and idempotency |
Done with this lesson?
Sign in to save your progress.