ChaosLab

ChaosLab

Build a system. Break it. Learn why.

Pick a classic system design question, build your answer on a visual canvas, and get graded by a rubric evaluated against a live simulation — LeetCode for system design.

Templates

Hand-tuned reference architectures — open one straight in the lab with its reasoning already explained.

Hello World

The baseline request path — one server, one database, nowhere to hide.

The simplest possible backend: users hit a single server, which talks to a single database. A calm 100 users keeps everything comfortably healthy.

Classic 3-Tier

Horizontal scaling behind a load balancer — the bread-and-butter production layout.

Users hit a load balancer that spreads work across three app servers, a cache soaks up repeat reads, and a single database backs it all. The bread-and-butter architecture — comfortable at 10k users.

Read-Heavy at Scale

CDN + cache absorb reads before database shards ever see them.

A CDN and a hot cache soak up almost every read before it reaches eight app servers and a modestly-sharded database. Comfortably healthy at its default 1M users — crank the USER LOAD slider up from there and watch the write path (database shards) start to strain first.

Netflix-Style Streaming

Tiny metadata calls and massive video bytes take two completely different paths.

Two lanes from Users: tiny, cache-heavy API calls through Zuul and an autoscaled Playback tier, and massive video-byte traffic straight from the Open Connect CDN to S3 — the CDN bypasses the app tier entirely. Healthy at its default load; melts down once the fleet is cranked past what a single ELB/LB tier was ever sized for.

Instagram-Style Social Feed

A social feed is a read-amplification problem — cache misses hit the database, not the network.

Media reads bypass the app tier via a CDN straight to Haystack photo storage, while the main path (LB → rate limiter → Django fleet → Memcached → sharded Postgres) handles everything else, with Celery/RabbitMQ fanning writes out to a Cassandra feed store asynchronously. Healthy at default load; the fixed-capacity Load Balancer is the first thing to give out as load climbs.

Planet Scale

Every lever at once — and it still barely holds at 100M users.

CDN, a rate limiter, twin load balancers, 200 app servers, a shared cache, a write-behind queue, and a 64-shard database. Barely healthy at 100M users on this build — crank to 500M and watch the CDN (fixed 5M rps ceiling) take the whole system down with it.

How it works

  1. 1

    Drag components

    Pull servers, caches, queues and more onto the canvas.

  2. 2

    Wire them up

    Connect nodes to shape how traffic actually flows.

  3. 3

    Crank the load

    Slide users from 10 to 500 million and watch it hold — or melt.