Learn
System design topics
Summaries of the building blocks of large systems, including their pros and cons. Everything is a trade-off, and each page links to deeper resources.
Start here
Fundamentals
Performance vs scalability
Slow for one user, or slow only under load? Two different problems.
1 min read05Latency vs throughput
Time to do one thing versus how many things you can do per second.
1 min read06Availability vs consistency
The CAP theorem and why a network partition forces a choice.
1 min read07Consistency patterns
Weak, eventual and strong consistency, and where each one fits.
1 min read08Availability patterns
Fail-over, replication and what the nines really mean.
2 min readNetwork & edge
Domain name system
How names become addresses, and what can go wrong on the way.
1 min read10Content delivery network
Serve content from a location near the user: push vs pull CDNs.
2 min read11Load balancer
Spread requests across servers; layer 4 vs layer 7; horizontal scaling.
3 min read12Reverse proxy
A front door for your servers, and how it differs from a load balancer.
1 min readApplication
Application layer
Separate the web tier from the app tier: microservices and service discovery.
1 min read14Asynchronism
Message queues, task queues and back pressure.
2 min read15Communication
HTTP, TCP, UDP, RPC and REST, and when to reach for each.
7 min read16Security
The essentials: encryption, sanitising input, least privilege.
1 min read