Phase 2 of 9 · 9 lessons

Core concepts: scale, reliability and speed

The ten ideas every high-level design uses: scalability, availability, fault tolerance, load balancing, caching, consistency and CAP, rate limiting, asynchronous processing, and observability.

Almost every design answer is a combination of these ideas: copy things for availability, spread load for scale, cache for speed, queue slow work, and watch everything. Learn each one well enough to say when to use it and what it costs.

0 of 9 done

Lessons, in order

  1. 2.1

    Scalability: vertical vs horizontal

    Must know

    Scalability is a system's ability to handle more load by adding resources.

  2. 2.2

    Availability: nines, SLAs and redundancy

    Must know

    Availability is the share of time a system works and responds correctly, usually written in 'nines', like 99.9%.

  3. 2.3

    Fault tolerance: timeouts, retries, circuit breakers

    Must know

    Fault tolerance means the system keeps working, perhaps in a reduced way, when parts of it fail.

  4. 2.4

    Load balancing

    Must know

    A load balancer spreads incoming requests across several servers and stops sending traffic to unhealthy ones.

  5. 2.5

    Caching

    Must know

    A cache keeps a copy of frequently used data in fast storage, usually memory, so it can be served without repeating slow work.

  6. 2.6

    Consistency, CAP and PACELC

    Must know

    Consistency (in distributed systems) means every read sees the latest write. The CAP theorem says that during a network partition, a system must choose between consistency and availability.

  7. 2.7

    Rate limiting and backpressure

    Must know

    Rate limiting caps how many requests a client can make in a time window. Backpressure is a system telling the senders upstream to slow down when it's overloaded.

  8. 2.8

    Asynchronous processing and message queues (Kafka, SQS)

    Must know

    Asynchronous processing means doing slow work later, outside the user's request. A message queue holds the work, or events, between the service that produces them and the services that consume them.

  9. 2.9

    Observability: logs, metrics and traces

    Must know

    Observability is how well you can understand what a system is doing from the outside, using logs, metrics and traces.