See what breaks when a million people use your design.

Drag servers, databases and queues onto a board, wire them up and set how many people use it each day. Every part shows how busy it gets, and anything that turns red comes with a fix to try.

One server, one database. On its busiest day, 1 million daily users send about 1,700 requests a second. The server handles about 700, so people get errors.
A board with Users connected to one App Server and one Database. Both are marked too busy and the users show errors.

A load balancer shares people across four servers, a cache answers most reads, and a shard router splits the data over two databases.

Four servers, a cache and two shards. The same day and the same people. Every part stays under 75% busy, so answers stay fast.
A board with Users, a Load Balancer, four App Servers, a Cache, a Shard Router and two database shards. Every part has room to spare and the users get fast answers.

How it works

  1. Pick a board. Start from a lesson, a classic system or a blank board, and drag in what you need.
  2. Set the traffic. Choose how many people use it each day, from 10 to 10 million, and try the worst day: a rush with three times the usual traffic.
  3. Fix what turns red. Click anything busy and open Fix to see what to try, with a link to the board that explains it.

Two ways in

Who it's for

People learning system design, and engineers warming up before an interview. It's free, needs no account and runs in your browser. The numbers are rough on purpose: they show which part runs out of room first, not how many servers to buy.

Best on a laptop or desktop: the board needs a mouse or trackpad.