File Storage System Design
Table of content:
File Hosting Service like Dropbox enables users to store their data on cloud. These servers are maintained by cloud storage providers and made available to users over a network.
Functional Requirements
- User should able to upload/download files
- System should sync files across all devices
Non-Functional Requirements
- System should highly reliable/scalable
- System should be highly available with eventual consistency
Capacity Estimation
Throughput
- Read and Write heavy System
- DAU : 1M users and 10 files upload/day
- 100 uploads/sec
Storage
- 100MB X10M -> 1000 TB/day - 1 Peta Byte/day
High Level System Design

- Internal Metadata: Will keep track of all the files, chunks, their versions and their location in the file system
- Chunker split the files smaller pieces called chunks. it will also be responsible for reconstructing a file from its chunks.
- Watcher monitor the local workspace folders and notify the indexer of any file changes
- Indexer communicate with the remote synchronization service and internal metadata DB.