Foundations

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

0/13

What you'll learn

0 of 13 lessons complete

  1. Choosing and using a database11 minQuizExercise
  2. Replication and sharding11 minQuizExerciseLab
  3. Caching11 minQuizExerciseLab
  4. Consistency, availability and the CAP theorem12 minQuizExercise
  5. Queues, streams and asynchronous work11 minQuizExercise
  6. Networking, APIs and CDNs11 minQuizExercise
  7. Designing for failure: reliability12 minQuizExercise

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.