Build an S3-style distributed object store
Eleven nines of durability over disks that fail weekly. Build the object store from first principles — flat keyspace, immutable objects, erasure coding instead of replication, eventual consistency turned strong, multipart upload, lifecycle and tiering — and feel why every modern data lake sits on top of something shaped exactly like this.Enter to send · Shift+Enter for a new line
About Build an S3-style distributed object store
Eleven nines of durability over disks that fail weekly. Build the object store from first principles — flat keyspace, immutable objects, erasure coding instead of replication, eventual consistency turned strong, multipart upload, lifecycle and tiering — and feel why every modern data lake sits on top of something shaped exactly like this.
- Difficulty
- advanced
- Time
- about 95 minutes
- Stages
- 9
- Topic
- Object Storage, File Sync & Media Delivery
How this problem is worked
Nine stages, from what the thing is for to how it compares with the real implementations. Each asks one question, and the simulator runs the architecture you draw against the requirements you wrote.
- 01Purpose & invariantsWhat is this for, and what must always be true of it?
- 02Workload characterizationWho writes, who reads, and in what shapes?
- 03Data model & on-disk formatWhat does the data look like at rest?
- 04Core algorithmsHow do the write path and the read path actually work?
- 05Distribution & replicationHow does this scale out and survive losing a machine?
- 06Consistency & correctnessUnder concurrency and failure, what is guaranteed?
- 07Failure modes & recoveryWhat actually happens when each part fails?
- 08Operational characteristicsCan a human run this at three in the morning?
- 09Trade-offs & comparisonWhere does this sit against the alternatives?
Primary sources for this problem
- DeCandia et al. — Dynamo: Amazon's Highly Available Key-value Store (SOSP 2007)
- AWS — Amazon S3 strong consistency announcement (2020 blog + re:Invent talk)
- Werner Vogels — Eventually Consistent (CACM 2009)
- Calder et al. — Windows Azure Storage: A Highly Available Cloud Storage Service (SOSP 2011)
- Plank — A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems (1997)
- MinIO — Erasure-coded object store architecture and docs
- Ceph RADOS — paper + docs on the placement group / CRUSH algorithm
- Backblaze — How we get 99.99...% durability (engineering blog series)
More in Object Storage, File Sync & Media Delivery
Durable bytes at rest and bytes in flight: an S3-style object store, a Dropbox-style sync client, and adaptive video streaming.
Browse the full problem catalog, or see what the simulator does and does not model.