Learn System design.
Learn architecture trade-offs before tackling design scenarios.
System design essentials
Start with the essentials or pick the concept you need.
01Architecture & API designExplore concepts
02Scaling & distributed systemsExplore concepts
What you will study in System design
Focused lessons organized by concept. Start with the explanation, trace the examples, and check your recall before moving on.
Architecture & API design
System design is the process of choosing components, data flows and trade-offs that meet a product's requirements. It starts with what users need and the scale and failure conditions the system must handle. A design is easier to evaluate when assumptions are explicit instead of hidden behind a list of technologies.
Scaling & distributed systems
Vertical scaling adds resources to one machine, while horizontal scaling adds machines and distributes requests or data. Horizontal scaling improves capacity only if work can be shared without losing correct state coordination. Stateless request handlers are easier to spread, but databases, sessions and background work may still need special handling.
Messaging & reliability
A queue holds work waiting to be processed, a worker executes that work, and an event describes a fact that already happened. Commands request an action, while events can notify multiple interested consumers. Delivery and acknowledgement rules determine what happens when workers crash or messages are repeated.