Problems / Design a product, hard

Build Amazon S3

Design Amazon S3 from an empty canvas: PUT, GET and LIST objects at 1,500 requests a second, with the bytes on erasure-coded storage nodes and the metadata in a key-value store.

Unlock it once for 25 credits; everything inside it is free (runs, changes, Submit, results, hints). Sign in with Google to start; new accounts get free credits.

What it must do

Scale

Request types to route: get (70%, read), put (25%, write), list (5%, read). Budget: $4,600 a month.

Estimate first

The test cases

You start from an empty canvas. When you run the tests, each one simulates your design with its own traffic and failures:

TestWhat it doesPasses when
Normal dayThe normal day: the traffic in the brief, nothing broken.Success ≥ 99.9%; p99 latency ≤ 100 ms (get); p99 latency ≤ 150 ms (put)
Peak: 2× trafficAt 5 s a product launch doubles traffic for 8 s.Success ≥ 99%; p99 latency ≤ 150 ms (get)
A server diesAt 4 s one server of the first app service on the request path dies for 10 s.Success ≥ 99%
A storage node diesAt 5 s a storage node on the request path crashes (the first one a request meets); it restarts 10 s later.Success ≥ 99% (get); Success ≥ 99% (put)
Budget: $4,600/monthThe normal day's design must cost at most $4,600 a month.Cost ≤ $4,600/month

Must include

More design a product problems