System Design Foundations
Start with the basics — what a system is, how requests travel, and the metrics that drive every design choice — before moving to databases, caches, and distributed consensus.
Curriculum (6 steps)
What Is a Software System?
articlesA system is not a single program — it is components with boundaries, responsibilities, and failure modes. Learn how to see the box before you design inside it.
Every system design trade-off is ultimately a balance between doing work fast, doing work often, and paying the cost of making multiple components agree.
Follow a request from the browser through name resolution, transport, TLS, and HTTP to the application — the first mile of every system design.
Follow a request through routing, a cache lookup, a database miss path, and a cache-fill decision — the most common design choice in every service.
Use back-of-envelope numbers to estimate the latency of a cross-country API request and identify which hop dominates the total cost.
The classic system design opener — trace the journey from keystroke to page render and identify the design choices at each layer.