Back
LearnSystem Design PlaybookWhat Is System Design?

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

  1. Foundations — the vocabulary and the interview method.
  2. Building blocks — load balancers, caches, databases, queues, CDNs.
  3. Case studies — design a URL shortener, news feed, chat and streaming service end to end.
  4. AI engineering — RAG, vector databases and agent systems.
Tip