Problem library

Eight systems, each with the numbers that matter.

A write-up that explains the choices, a diagram that names its own trade-offs, and a model you can push until something goes red. Every diagram opens in the playground as it is.

8
problems
64
components drawn
13
workloads modelled

Track 1

Foundations

The three every interview assumes you know. Small systems with one big idea each: a read path that dwarfs its write path, a counter that has to be atomic, a ring that has to agree.

  1. Turn a long URL into a short code and redirect on lookup. The classic warm-up: tiny write path, enormous read path, and a key-generation problem hiding underneath.

    7 components~364K req/s peakOpen problem →
  2. Decide, in under a millisecond and across a whole fleet, whether this request is allowed through. The algorithm choice and the counter-sharing problem are the two real questions.

    6 components~200K req/s peakOpen problem →
  3. Build the storage layer the other problems assume exists. Consistent hashing for placement, quorums for consistency, and an explicit answer to what happens during a partition.

    4 components~180K req/s peakOpen problem →
The URL Shortener design, as the problem page draws it.
Hover a problem to see its diagram. Each opens in the playground as it is.URL Shortenera real design from the library

Track 2

Products people use

Systems with a person on the other end. Connections that are held rather than served, fan-out that turns one write into thousands, and third parties that were never yours to scale.

  1. Chatmedium

    Messages between people who are online now, and delivery for the ones who are not. The interesting part is that a connection is a resource you hold, not a request you serve.

    9 components~26K req/s peakOpen problem →
  2. News Feedmedium

    Show each user the recent posts of the people they follow. The whole design is one question: do the work when a post is written, or when a feed is read?

    10 components~92K req/s peakOpen problem →
  3. Take events from every service and turn them into push, email and SMS — through providers you do not control, without sending anything twice.

    10 components~15K req/s peakOpen problem →
The Chat design, as the problem page draws it.
Hover a problem to see its diagram. Each opens in the playground as it is.Chata real design from the library

Track 3

Scale machinery

Pipelines rather than request paths. A frontier that must be polite, a fetch that is mostly waiting, and a byte stream so large the API is a footnote.

  1. Fetch billions of pages without hammering any one site, fetching the same page twice, or losing your place. The hard part is the queue, not the fetch.

    8 components~5K req/s peakOpen problem →
  2. Upload once, transcode into a ladder of qualities, and serve millions of viewers from the edge. Bytes are the problem; the API is an afterthought.

    10 components~60K req/s peakOpen problem →
The Web Crawler design, as the problem page draws it.
Hover a problem to see its diagram. Each opens in the playground as it is.Web Crawlera real design from the library

Your own system is a problem too.

The same engine that judges these designs judges yours. Draw it, declare the traffic, and find out what breaks first.

Open the playground