Phase 1 — Clarify & Scope
Interviewer: Design an S3-like object storage system. What do you want to clarify first?
Candidate: A few questions to scope this:
- What's the scale — how many objects, and what size distribution? A few large video files or billions of small files?
- Access patterns: mostly write-once-read-many, or frequent overwrites?
- Durability and availability targets?
- Do we need multi-region replication or single-region?
- Features to support: versioning, lifecycle policies, presigned URLs, multipart upload?
Interviewer: 100 billion objects total. Size distribution: 70% under 1 MB (user uploads, documents), 20% between 1–100 MB, 10% over 100 MB (videos, backups). Mostly write-once-read-many. Target: 11 nines of durability (99.999999999%), 99.99% availability. Single region with 3 AZs. Support multipart upload and presigned URLs. Versioning is a stretch goal.
Candidate: Let me size this:
For 11 nines durability with 3-AZ erasure coding at 6+3 (Reed-Solomon):
Compared to 3× replication: 3 × 2.2 EB = 6.6 EB — erasure coding saves 50%.
Interviewer: Good. Request volume?
Candidate:
In the full tutorial
- Phase 2 — High-Level Architecture
- Phase 3 — Deep Dive & Evolution
- Phase 4 — Robustness & Operations