Skip to main content
Your progress in this section0%
0 of 24 documents read
Progress is saved in this browser only.

Level 03 — System Design

Here the object of study stops being the code and becomes the running system: processes, data that persists, calls that cross the network, resources that run out.

The problem this section addresses

A practitioner who has mastered software design knows how to structure a module. Faced with "design the system", they frequently do not know where to start — because the decision space changed in nature. It is no longer about where to put a class, but about how many processes exist, what each one holds, what happens when one of them goes down and how much all of it costs per month.

This section establishes the path that leads from a prompt to a defensible architecture:

requirements

constraints

high-level architecture

components

interfaces

data

deployment

The path is always this one. What changes between one system and another is what the constraints allow at each step.

What you will find here

Decomposition. Components, services and service boundaries. How to decide what is a service and what is a module inside a service — and why that decision is more organizational than technical.

Interfaces. APIs, request/response systems, pagination and configuration. The contract is the hardest part to change later; it is where spending time pays off.

State. State management and the distinction between stateful and stateless systems. This is the decision that most determines how easy it will be to scale later.

Mechanisms. Load balancing, caching, CDNs, queues, background processing, rate limiting, search and file storage. The pieces systems are made of, each with the problem it solves and what it breaks.

Access. Authentication and authorization at the system level — where the decisions are made and by whom.

Sizing. Capacity planning, bottleneck analysis and the basic scalability strategies. How to estimate before building.

Reading order

Read decomposition, state and service boundaries first, in that order. They are the three structural decisions; everything else is a consequence.

The mechanisms — cache, queues, load balancing — can be read by lookup. But read capacity planning and bottleneck analysis before them, not after. Without an estimate, the choice of mechanism becomes preference.

By the end

You can take a system prompt and produce, in an hour, a high-level architecture with named components, sketched contracts, an initial data model and a capacity estimate — along with a list of what you still do not know and would need to ask.

You can point at where the bottleneck is before the system exists. And you can explain why you introduced each piece, without the answer being "because everyone uses it".

A warning about the next level

Much of what you design here assumes that calls work, that the network delivers and that components are either up or down.

None of that is true. Level 04 undoes those assumptions, and it is the deepest section of the course for that reason.