Stage 1 of 7 · 10 lessons · ~7 weeks
Core concepts and building blocks
The vocabulary every design conversation uses and the components that sit in front of every system. Each concept here is a trade-off you will reach for in every later stage.
Start: Vertical vs horizontal scaling and stateless servicesLessons· one lesson for each topic, in this order
- 1Vertical vs horizontal scaling and stateless servicesLesson
- 2Latency, throughput and percentilesLesson
- 3Availability, redundancy and SLOsLesson
- 4Back-of-the-envelope capacity estimatesLesson
- 5Load balancers and balancing algorithmsLesson
- 6Reverse proxies and API gatewaysLesson
- 7CDNs and edge cachingLesson
- 8Caching patterns, eviction and invalidationLesson
- 9CAP and PACELCLesson
- 10Bloom filtersOptionalLesson
Start with· follow one of these
- CoursePaidGrokking System Design Fundamentals
Design Gurus · Beginner · Subscription
Load balancing, API gateway, proxies, caching, CAP and Bloom filters: week 1 of the plan in order
- GitHub repoFreeThe System Design Primer
Donne Martin · Intermediate
Free: its scalability, latency, availability, CDN, load balancer and cache sections
Keep handy
Also worth your time
Why CAP only describes partitions, and what PACELC adds for normal operation
Before moving on: Estimate requests per second, storage and bandwidth for a photo-sharing app with 10 million daily users, then draw the request path through DNS, CDN, load balancer, cache and database and write what users see when each one fails.

Learn each concept as a trade-off with a cost on both sides, because 'it depends' is only a good answer when you can say on what. Keep a one-page cheat sheet that maps problems to tools (read-heavy means cache, large files mean object storage, a single point of failure means redundancy) and add to it every week.