System Design Fundamentals
Foundations
System design is often taught as a grab-bag of buzzwords — "just add a cache," "shard the database," "put a queue in front of it." This chapter starts one level below that: what you're actually optimizing for, how to turn a vague prompt into real requirements, and how to put rough numbers on a system before you draw a single box.
Everything in the rest of this guide is a response to a small set of forces — read volume, write volume, consistency needs, and failure tolerance. This chapter names those forces explicitly so the later trade-offs stop feeling arbitrary.