Priyanshu Mahey.

Table of Contents.

A series on the fundamentals of system design.

Finished Chapters
9 / 9
Sections
5
1. Fundamentals

The building blocks of system design — how we think about scale, reliability, and the trade-offs that shape every architecture decision.

FundamentalsCh. 1
What is System Design?
System design is the art of making decisions about how to build software that works — for millions of users, under real-world constraints, at scale.
Why System Design?
Every piece of software is a system. Even the simplest web application makes choices about where to store data, how to handle concurrent users, and what happens when things go wrong. As the number of users grows, these choices become critical.
System design is the discipline of thinking about these choices before you start writing code. It's about understanding the trade-offs, constraints, and requirements that shape an architecture — and making deliberate decisions rather than accidental ones.
Thinking at Scale
Scale changes everything. An approach that works perfectly for 100 users might completely fall apart at 100,000. A database query that takes 10 milliseconds with 1,000 rows might take 10 seconds with 10 million. A server that handles 50 requests per second might need to handle 50,000.
Thinking at scale means anticipating these inflection points and designing systems that can grow gracefully. It doesn't mean over-engineering everything from day one — that's a different kind of mistake. It means understanding what will break first and having a plan for when it does.
Trade-offs Everywhere
If there's one thing to internalize about system design, it's this: every decision is a trade-off. There is no perfect architecture, no universal best practice, no one-size-fits-all solution. Every choice you make optimizes for some things at the expense of others.
Want strong consistency? You'll pay for it with latency. Want low latency? You might have to accept eventual consistency. Want high availability? You'll need redundancy, which costs money. Want to save money? You might have to accept some downtime.
The Anatomy of a System
Most web-scale systems share a common set of building blocks. Learning these building blocks and understanding when to use each one is the foundation of system design.
Load Balancers
How to Approach Design
There's a methodology to system design that, once you internalize it, makes even the most daunting design problems tractable. It starts with understanding what you're building and ends with iterating on your design as constraints change.
1. Clarify requirements.
Designing for Failure
One of the most important mindsets in system design is assuming that everything will fail. Hard drives crash, networks drop packets, data centers lose power, and code has bugs. If your system assumes everything works perfectly, it is fragile. If it assumes things will break, it can be resilient.

What is System Design?

2.8K Words
2. API & Communication Design

How systems talk to each other — from request/response fundamentals to real-time communication patterns.

4. Operations

Running systems in production.

5. Microservices

Architecting for organizational scale.

6. Technologies

Deep dives into specific technologies commonly used in system design.