Design Dropbox

Problem Statement:


Step-1: Why Cloud Storage ?


Step-2: Requirements and Goals of the System

We should always clarify requirements at the beginning of the interview and should ask questions to find the exact scope of the system that the interviewer has in mind.


Step-3: Some Design Considerations


Step-4: Capacity Estimation and Constraints


Step-5: High Level Design


Step-6: Detailed Component Design

a) Client
How do we handle file transfer efficiently ?
Should we keep a copy of metadata with Client ?
How can clients efficiently listen to changes happening on other clients ?

How should clients handle slow servers ?
Should mobile clients sync remote changes immediately ?


b) Metadata Database


c) Synchronization Service


d) Message Queuing Service (MQS)


e) Cloud/Block Storage


Step-7: File Processing Workflow


Step-8: Data Deduplication


Step-9: Metadata Partitioning


Step-10: Caching

Which cache replacement policy would best fit our needs ?


Step-11: Load Balancer (LB)


Step-12: Security, Permissions and File Sharing




← Previous: Design Instagram

Next: Design Facebook Messenger →