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
- Approach: requirements, rough numbers, API, data, then a high-level and a low-level design.
- Tradeoffs: performance against scalability, latency against throughput, consistency against availability.
- Scalability: growing the work a system can take.
- Load balancer: spreading requests across instances.
- Reverse proxy: a single front door that forwards inward.
- Cache: keeping a copy closer than the source of truth.
- CDN: that copy, pushed out to the edge.
- Databases: where the durable state lives, and how you choose.
- Asynchronism: doing the work later, off the request.
Related
- Transactions: what a later read is allowed to observe.