A breaking story goes viral — 30,000 requests per minute, 95% of them reading the same content. The origin server is on its knees. Serve the world at the edge before it ever reaches your data center.
Requirements
Functional
·Serve the same viral content to a globally distributed audience
Non-functional
·~500 requests/sec
·95% reads of the same content
·p99 latency ≤ 150ms
·99% availability
Constraints
·Budget: $12/hr or less
·The origin alone cannot take this load — content has to be served closer to readers
Out of scope
·Personalized/dynamic content (this traffic is all the same static story)
TrafficRequests per second — the rate of incoming traffic this level throws at your system.
~500 r/s · read-heavy
95% reads · 5% writesWhat fraction of requests are reads (fetches) vs writes (updates) — this decides which components sit on the hot path.
Win conditions
p99 latency99% of requests finish at or under this time — a stricter tail-latency bar than p95 that catches worst-case slowness.≤ 150ms
availabilityThe share of legitimate requests that succeeded, out of everything sent your way. 99% still means 1 in 100 users saw an error.≥ 99%
throughputHow many requests per second your system actually completed — not requested, completed.≥ 400 r/s
error rateThe share of requests that failed outright: timeouts, drops, or capacity overload.≤ 2%
costWhat your architecture costs to run per hour, based on the instances and components you've wired up.≤ $12/hr
Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
Drag components from the right → connect their handles → Run.
Drag onto canvas
Components
Client
ClientWhere traffic originates.
Compute
API GatewayFront door — the app tier requests pass through.
500 r/s · 20ms · $2/hr
BackendA second compute tier for heavier processing.
350 r/s · 25ms · $2/hr
Storage
SQL DatabaseRelational store. Durable, but the lowest throughput.
200 r/s · 50ms · $3/hr
NoSQL DB3× the throughput of SQL — at a premium. Pay for it only when the load demands it.
600 r/s · 30ms · $4/hr
Redis CacheIn-memory read-cache — absorbs repeated reads. Useless for writes.
5000 r/s · 3ms · $2/hr
Read Replica
200 r/s · 55ms · $3/hr
Lvl 12
DB Standby
200 r/s · 50ms · $3/hr
Lvl 13
Networking
CDNEdge read-cache — serves content near the user.
50000 r/s · 5ms · $1/hr
Load Balancer
10000 r/s · 2ms · $2/hr
Lvl 9
Reverse Proxy
8000 r/s · 3ms · $1/hr
Lvl 9
Messaging
QueueACKs writes instantly, drains them to storage — absorbs bursts, not sustained overload.