Skip to content

A hands-on course

Everything above the database is easy.This is the hard part.

Indexes, replication lag, a schema change that breaks a deploy at 3am — the parts of software that stop being intuitive the moment your data outgrows one machine. You will not read about them here. You will build them, break them, and watch the numbers move.

Start the coursesee the syllabus
Modules
4
Labs you write
5
Total
6 hr 56 min
Accounts
none

Some things are faster to feel than to read

Here is one, from the first module. Everyone knows “don’t use averages for latency.” Drag the stall rate up and watch why — then raise the calls-per-page and watch a rare problem become the common case.

Dials

120 ms

What the service does when nothing is in its way.

45%

How much requests differ: cache misses, contention, cold paths.

2%

Requests that hit a pause, a lock, or a retry and take many times longer.

6

A page is only as fast as its slowest dependency.

fastresponse time · log scaleslow

mean
176 ms
p50
123 ms
p95
275 ms
p99
1.88 s
p99.9
5.42 s
worst
9.30 s

79% of requests finish faster than the mean. The mean is not a typical request — it is dragged around by the slow ones.

With 6 backend calls per page, 5.9% of page loads wait on at least one call in its service’s slowest 1%. Tail latency at the bottom becomes typical latency at the top.

How it works

01

Read a short lesson

Sequenced, not encyclopaedic. Each one opens by telling you what you will be able to do afterwards, and closes with a question that catches you if you skimmed.

02

Turn the dials

Tail latency, write amplification, schema compatibility. When a trade-off has a shape, you get a working model of it instead of a paragraph describing the shape.

03

Write the real thing

A hash index. An SSTable merge. A binary encoder that survives a rolling upgrade. In an editor on the page, against tests that run in your browser.

04

Argue with yourself

Practice questions where the answer is a judgement call, each with a worked response that shows the reasoning rather than just the verdict.

What this is, and what it isn’t

This course covers similar ground to Martin Kleppmann’sDesigning Data-Intensive Applications, and every module names the chapters to read alongside it. It is not a summary of that book, and it reproduces none of its text — the prose, diagrams, exercises and code here are original. Buy the book. It is the best thing written on this subject, and this course is better with it than without it.

Everything runs in your browser. No accounts, no tracking, no server holding your progress — which also means your progress lives in this browser only.