Scalabilty for Dropbox System Design
- Horizontal Scaling
- We can add more servers behind the load balancer to increase the capacity of each service. This is known as Horizontal Scaling and each service can be independently scaled horizontally in our design.
- Database Sharding
- Metadata DB is sharded based on
object_id
. Our hash function will map eachobject_id
to a random server where we can store the file/folder metadata. To query for a particularobject_id
, service can determine the database server using same hash function and query for data. This approach will distribute our database load to multiple servers making it scalable.
- Metadata DB is sharded based on
- Cache Sharding
- Similar to Metadata DB Sharding, we are distributing the cache to multiple servers. In-fact Redis has out of box support for partitioning the data across multiple Redis instances. Usage of Consistent Hashing for distributing data across instances ensures that load is equally distributed if one instance goes away.
Design Dropbox – A System Design Interview Question
System Design Dropbox, You might have used this file hosting service multiple times to upload and share files or images. System Design Dropbox is a quite common question in the system design round. In this article, we will discuss how to design a website like Dropbox.
Important Topics for the Dropbox System Design
- Requirements Gathering for Dropbox System Design
- Capacity Estimation for Dropbox System Design
- High-Level Design(HLD) of Dropbox System Design
- Low-Level Design(LLD) of Dropbox System Design
- Database Design for Dropbox System Design
- API Design for Dropbox System Design
- Scalabilty for Dropbox System Design