Skip to content

System design

Big picture: start with requirements and a sketch, then the tradeoffs, then the components that show up in almost every design.

Reading order

  1. Approach: requirements, rough numbers, API, data, then a high-level and a low-level design.
  2. Tradeoffs: performance against scalability, latency against throughput, consistency against availability.
  3. Scalability: growing the work a system can take.
  4. Load balancer: spreading requests across instances.
  5. Reverse proxy: a single front door that forwards inward.
  6. Cache: keeping a copy closer than the source of truth.
  7. CDN: that copy, pushed out to the edge.
  8. Databases: where the durable state lives, and how you choose.
  9. Asynchronism: doing the work later, off the request.