Backend & Infrastructure

System Design Foundations

The building blocks of scalable systems — load balancing, caching, queues, partitioning, and the reliability work around them.

  • Intermediate
  • 1h 37m
  • 4 modules
  • 12 lessons
  • 14.8k students

Taught by Tomas Berg · Python, pandas, System design, Distributed systems

Cover image for System Design Foundations

What you’ll learn

  • Assemble the building blocks

    Know what load balancers, caches, and queues each solve, and what they cost you.

  • Scale the data layer

    Partition and replicate data, and reason clearly about the consistency you gave up.

  • Design resilient APIs

    Handle retries, idempotency, and rate limiting so failures do not compound.

  • Estimate capacity

    Do the arithmetic that turns a hand-wavy design into a defensible one.

Course content

4 modules · 1h 37m

  1. 01Core Building BlocksThe three components that appear in nearly every architecture diagram, and what each one is actually for.38m
    1. 1.1Load balancingFree5m
    2. 1.2Caching layers and invalidation7m
    3. 1.3Queues and asynchronous work27m
  2. 02Data at ScaleWhat happens to your database when one machine is no longer enough.18m
    1. 2.1Sharding and partitioning6m
    2. 2.2Replication and read scaling5m
    3. 2.3Consistency models and CAP7m
  3. 03API Design at ScaleThe contract other systems depend on, and how it behaves when they misbehave.21m
    1. 3.1REST and GraphQL trade-offs5m
    2. 3.2Rate limiting8m
    3. 3.3Idempotency and safe retries8m
  4. 04Reliability and OperationsKnowing what your system is doing, and what it does when a dependency stops answering.21m
    1. 4.1Observability: logs, metrics, traces8m
    2. 4.2Timeouts, retries, and circuit breakers4m
    3. 4.3Capacity estimation9m
Start with the first lesson