Design Dropbox
Overview–
Dropbox is a cloud-based file storage service that allows users to store and share files. It provides a secure and reliable way to store and access files from anywhere on device.
Functional Requirements– Upload a file. Download a file. Automatically sync files across devices. Out of scope– Roll own blob storage. Non-Functional Requirements– Availability >> consistency. Low latency upload and downloads. (as low as possible) Support large files as 50gb Reusable uploads High data integrity. (sync accuracy) Core Entities– File (raw bytes) File Metadata Users API– POST /files -> Presinged Url body: File & FileMetadata PUT {presigned url} Body file/chunk PATCH /files -> 200 GET /files/:fileId -> File & FileMetadata GET /changes?since={timestamp} -> fileIds[] High Level Design–