Design an object storage service
Hard50 minFree, no account
Eleven nines of durability, and the arithmetic showing replication alone cannot pay for it.
The question
Design an S3-like service: PUT, GET and DELETE an object by key within a bucket.
Objects range from a kilobyte to five terabytes.
Functional
- PUT, GET, DELETE, and list the keys in a bucket by prefix.
- Multipart upload for large objects.
- Versioning.
Non-functional
- Durability of 99.999999999%, eleven nines.
- Exabytes of data, trillions of objects.
- Read-after-write consistency for a new object.
50:00Commit to an answer before you open the solution. Reading it first teaches you to recognise good answers, which is not the skill being tested.
Stuck?
0 of 3 hints takenThe worked solution
written by a person · not a gradeScore yourself
0 of 5 marked- Separated metadata from data with different scaling stories20
- Chose erasure coding with the overhead arithmetic and spread failure domains30
- Range-partitioned metadata for prefix listing, and named the hot-prefix cost20
- Read-after-write from commit ordering; multipart made resumable20
- Raised scrubbing, tombstones or small-object packing10
We run no AI here and nothing on this page grades you. The score is yours, and the useful number is the one you get on the same problem a month from now, cold.
kept in this browser only