System Design Step by Step: A Free Course in 7 Modules
A free system design course in seven modules: scaling, caching, databases, consistency, reliability and case studies, with step-through animated diagrams.
By Matthews WongReviewed on
Key takeaway
System design is the practice of turning requirements into an architecture that holds up under load and failure. This free course teaches it in seven lessons, from capacity estimation and caching to replication, consistency, reliability patterns and a full case study. Each lesson has a diagram you step through and a short quiz, then 51 deep dives to go further.
Free, no sign-up, no certificate. Built from the setup that runs this website.
Start the courseWhat you will be able to do
- Estimate load and storage from a requirement, and size a design to it.
- Choose between caching, replication, partitioning and sharding for a real bottleneck.
- Explain consistency, consensus and reliability trade-offs in plain words.
- Work through a system design interview with one repeatable framework.
Who it is for
Developers preparing for system design interviews, and engineers who want the reasoning behind the architectures they already run.
Before you start
- You have built a web app with a database.
- Read the modules in order the first time; jump around afterwards.
System design, step by step
- System Design Estimation for Beginners: Users to ServersSystem design estimation step by step: turn daily users into peak requests per second, storage and servers, then link latency to load with Little's law.12 min · 3 posts to go deeper
- How to Scale a Web Application: Stateless Servers to CDNHow to scale a web application step by step: stateless copies behind a load balancer, sessions in a shared store, then a CDN and a cache to absorb reads.13 min · 6 posts to go deeper
- How to Scale a Database: Indexes, Replicas and ShardingHow to scale a database step by step: model data around queries, add the right index, use read replicas despite lag, then shard by key with IDs that scale.14 min · 7 posts to go deeper
- Consistency in Distributed Systems Explained: ACID, CAP, SagasConsistency in distributed systems, step by step: ACID and isolation on one node, CAP and PACELC, two-phase commit versus sagas, and leases with fencing.14 min · 7 posts to go deeper
- Reliability Patterns Explained: Retries to Circuit BreakersReliability patterns explained: SLOs, error budgets, redundancy, failover, retries with backoff and jitter, bulkheads, backpressure, circuit breakers.14 min · 6 posts to go deeper
- Microservices for Beginners: Boundaries, Sync vs Async, QueuesLearn microservices from the ground up: when a modular monolith is enough, how to draw service boundaries, and when a call should be sync, async or queued.13 min · 8 posts to go deeper
- System Design Case Study Example: Designing This WebsiteA worked system design case study: the seven-step framework applied to this website, from requirements and numbers to the request path and its weak spots.14 min · 14 posts to go deeper