Course details
System Design
Learn how large software systems are put together and kept running. Follow Hop, a small link shortener, as it grows from one server into a replicated, load-balanced service, and learn the rule of thumb behind every step.
Course curriculum
Introduction to System Design4 lessons
Meet Hop, a tiny link shortener that grows up across this course. Learn what system design decides, a repeatable way to approach any design question, and the two pairs of words — performance and scalability, latency and throughput — that every design conversation uses.
Availability vs Consistency4 lessons
Once Hop keeps its data in more than one place, the copies can drift apart. Learn the CAP theorem's forced choice during a network split, then the three promises a system can make about reads after a write: weak, eventual and strong consistency.
Availability Patterns3 lessons
Remove single points of failure with fail-over and replication, then measure the result the way contracts do: in nines, with simple arithmetic for parts that sit in a chain or side by side.
Background Jobs3 lessons
Some work does not belong inside a user's request. Learn to start background jobs from events or from a schedule, and the ways a job's result finds its way back to whoever asked for it.
DNS and Content Delivery Networks3 lessons
Before a request reaches Hop, a name must become an address, and far-away users pay for every kilometre. Learn how DNS resolves and caches names, and how pull and push CDNs keep copies of content near the people who ask for it.
Load Balancers5 lessons
Put a front door in front of Hop's servers. Learn how a load balancer differs from a reverse proxy, how it picks a server for each request, what it can see at layer 4 and at layer 7, and why horizontal scaling only works once servers keep no state of their own.
