These rules of thumb help you make quick estimates during system design interviews and real-world planning. They're not exact formulas, but proven heuristics that experienced engineers use to ballpark capacity, performance, and resource requirements.
Capacity Planning
Start with users and work backwards to infrastructure. The 80/20 rule applies everywhere: 80% of traffic comes from 20% of users, 80% of requests are reads, and 80% of load happens during peak hours.
- 1 million users ≈ ~40,000 daily active users
- Read/Write ratio is typically 100:1 to 1000:1
- 1 server can handle ~1000 QPS (queries per second)
- Cache can improve read performance by 10–100x
- Database indexing improves query time from O(n) to O(log n)
- Keep hot data in memory, warm in SSD, cold in HDD
Network & Bandwidth
Network is often the bottleneck in distributed systems. These numbers help you estimate bandwidth needs, choose protocols, and understand the performance benefits of CDNs and connection optimization.
- 1 Gbps = 125 MB/s theoretical (~100 MB/s practical)
- CDN reduces latency by 10–100 ms per request
- HTTP/2 can handle ~100 concurrent streams
- WebSocket saves ~100 ms per message by keeping a persistent connection
- gRPC is ~7–10x faster than REST for internal services
Storage & Databases
Different databases have different performance characteristics. These throughput numbers help you choose the right tool and estimate how many instances you'll need for your expected load.
- MySQL: ~1000 QPS per instance
- Redis: ~100,000 QPS per instance
- MongoDB: ~10,000 QPS per instance
- Elasticsearch: ~5000 QPS for search
Performance Targets
User perception of speed is everything. These response time targets are based on human psychology: 100ms feels instant, 1 second maintains flow, and 10 seconds is the limit before users give up.
- Excellent UX: < 100 ms response time
- Good UX: 100–300 ms response time
- Acceptable: 300–1000 ms response time
- Page load target: < 3 seconds
- API response: < 200 ms for sync calls