| Users / Scale | 100 Users | 10,000 Users | 1 Million Users | 100 Million Users |
|---|---|---|---|---|
| Data Stored | Few GBs | Few TBs | Petabytes | Exabytes |
| Requests per Second (RPS) | ~100-500 RPS | ~5,000 RPS | ~100,000 RPS | Millions RPS |
| Latency | Low (ms) | Low to Moderate | Moderate (due to scale) | Needs optimization (CDN, edge) |
| Storage Management | Simple buckets | Multiple buckets, lifecycle policies | Multi-region replication, tiered storage | Global distribution, archival tiers |
| Cost | Low | Moderate | High | Very High |
Blob storage (S3, Azure Blob) in HLD - Scalability & System Analysis
At small to medium scale, the first bottleneck is the request rate limit on the blob storage service. Each storage account or bucket has limits on requests per second. When requests exceed these limits, throttling occurs causing increased latency and errors.
At larger scale, network bandwidth and storage management (handling huge data volumes and replication) become bottlenecks.
- Horizontal scaling: Use multiple buckets or storage accounts to distribute load.
- Caching: Use CDN (Content Delivery Network) to cache frequently accessed blobs closer to users, reducing direct storage requests.
- Sharding: Partition data by user or region to spread load and storage.
- Lifecycle policies: Move older data to cheaper, slower storage tiers (archive) to save cost and improve performance.
- Multi-region replication: Replicate data across regions for availability and reduced latency.
- Request batching: Combine multiple small requests into fewer larger requests to reduce overhead.
Assuming 1 million users, each uploading 1 MB per day:
- Data stored per day: 1 million MB = ~1 TB/day
- Monthly storage: ~30 TB
- Requests: If each user makes 10 requests/day, total 10 million requests/day (~115 requests/sec)
- Bandwidth: 1 TB/day upload + downloads (depends on usage)
- Costs scale with storage size, request count, and bandwidth used.
When discussing blob storage scalability, start by estimating data size and request rates. Identify the first bottleneck (usually request limits or bandwidth). Then propose solutions like horizontal scaling, CDN caching, and lifecycle management. Always mention cost and availability trade-offs.
Your blob storage service handles 1000 requests per second. Traffic grows 10x to 10,000 RPS. What do you do first?
Answer: Distribute load by creating multiple storage buckets/accounts and use a CDN to cache content, reducing direct requests. This avoids throttling and scales request handling.