What Is System Design?
2 min read
What Is System Design?
System design is the process of defining the architecture, components, data flow and trade-offs of a software system so it meets its requirements — at scale.
In an interview or on the job, "design X" means: turn a vague product idea into a concrete architecture that is scalable, reliable, available and maintainable.
Functional vs non-functional requirements
| Type | Question it answers | Examples |
|---|---|---|
| Functional | What should it do? | "Users can post tweets", "Shorten a URL" |
| Non-functional | How well must it do it? | 100M daily users, < 200 ms latency, 99.99% uptime |
The non-functional requirements are what make system design hard — anyone can build a URL shortener; building one that serves a billion redirects a day is the real problem.
The core tensions
Almost every decision trades one good property against another:
- Consistency vs availability
- Latency vs throughput
- Cost vs performance
- Simplicity vs flexibility
There is no "correct" architecture — only reasonable choices for a given set of constraints. Your job is to make the trade-offs explicit.
What this playbook covers
- Foundations — the vocabulary and the interview method.
- Building blocks — load balancers, caches, databases, queues, CDNs.
- Case studies — design a URL shortener, news feed, chat and streaming service end to end.
- AI engineering — RAG, vector databases and agent systems.