The concepts, building blocks, and interview craft behind internet-scale systems. Start with the foundations every distributed system rests on — abstractions, RPC, consistency, and failure — then assemble them into real architectures.
40 chapters · 533 lessons · free-preview lessons open without an account
The bedrock concepts every distributed system is built on. What abstractions buy you and what they cost, how machines call each other, what 'consistent' actually guarantees, and the ways nodes fail. Everything in this course assumes this module.
The reusable components every large-scale system is assembled from — naming, load balancing, databases, caches, queues, and storage. Each one is a design problem in its own right, and each shows up inside a dozen larger designs.
The systems you will be asked to design in an interview — video platforms, ride hailing, maps, messaging, social feeds, and payments. Each one composes the building blocks from the previous module into a working architecture, and each is worked through the way an interview actually runs: clarify, size, sketch, and defend the trade-offs.
Designing systems around large language models — inference serving and GPU economics, retrieval-augmented generation, evaluation and guardrails, and the latency and cost constraints that make LLM architectures different from everything before them.
The retrospective counterpart to the design modules. Real outages at Facebook and AWS, read against the principles the rest of the course teaches — what the designs predicted, what they missed, and why the same four patterns appear in every large-scale failure.