System Design Foundations
The core ideas behind every large system, in short lessons: scaling, storage, caching, consistency, queues, reliability and a full worked design.
13 lessons2 h 20 minBeginner
What you'll learn
0 of 13 lessons complete
Who this is for and what you will be able to do
Who this is for
Developers with a year or two of experience who can build a web app but have never had to make it serve millions of users, and anyone preparing for system design interviews.
After this course you will be able to
- Break an open-ended design problem into requirements, estimates and components
- Explain how load balancers, caches, databases and queues fit together, and when to use each
- Reason about trade-offs such as consistency versus availability instead of memorising answers
- Estimate traffic and storage with simple arithmetic
- Design and defend a complete system end to end (a URL shortener)
Topics it coversCachingCAP TheoremCDNConsistency ModelsDatabase ShardingDatabasesDNSEvent Driven ArchitectureAll topics
How a lesson works
Interactive diagram
See how each component connects, then run a request through it.
Plain-words toggle
Switch between the technical explanation and a plain-language one.
Practice design
Change a design of your own in the builder and see how it holds up.
Quiz and exercise
Test your understanding before moving on.
Go deeper
These lessons are written from scratch. The books below are excellent next reads.
- Designing Data-Intensive Applicationsby Martin Kleppmannthe best single book on storage, replication and consistency
- Site Reliability Engineeringby Google SRE teamfree to read online; reliability and operations
- System Design Interview, An Insider's Guideby Alex Xuworked designs for the classic interview problems
- The Amazon Builders' Libraryby Amazon engineersfree articles on timeouts, retries, load shedding and more