The Runtime Theory
medium · 12h · 10 steps

System Design Intermediate

Build on the foundations — load balancing, databases, replication, queues, and rate limiting — with execution traces that show where the work actually happens.

Curriculum (10 steps)

1

A system is not a single program — it is components with boundaries, responsibilities, and failure modes. Learn how to see the box before you design inside it.

Start→
2

Every system design trade-off is ultimately a balance between doing work fast, doing work often, and paying the cost of making multiple components agree.

Start→
3

Round-robin, least connections, IP hash, consistent hashing, and health checks — the mechanics behind every routing decision.

Start→
4

Follow a request from DNS through the load balancer, health-checked backend selection, cache lookup, and database miss or hit.

Start→
5

From write-ahead logs to B-trees, from leader-follower to read replicas — how databases persist, index, and copy your data.

Start→
6

Follow a write from the application through the WAL, leader commit, follower replication, and client acknowledgment.

Start→
7

At-most-once, at-least-once, and exactly-once delivery semantics, dead-letter queues, and the cost of ordering in a queue.

Start→
8

Visualize how a token bucket limits request rate, handles bursts, and enforces a steady throughput ceiling.

Start→
9

Implement a token bucket or fixed-window counter that allows bursts but enforces a steady request rate across many service instances.

Start→
10

Active health checks, passive checks, flapping detection, and why checking TCP open is not enough.

Start→