Problem
Design a distributed object/block storage system for enterprise data centers.
Requirements
Functional:
- Store and retrieve large objects/blocks
- Replication for durability
- Scale-out capacity
- Self-healing on disk/node failure
Non-functional:
- Petabyte scale
- 11 9s durability target
- High throughput
Discussion points
- Data placement (consistent hashing) and replication
- Metadata service and consistency
- Erasure coding vs replication trade-off
- Failure detection and re-replication
- Read/write path and caching