Back-of-the-Envelope (BOTE) is a way to estimate system capacity or performance requirements.
What’s acceptable latency for users?
(PS. milliseconds (ms), microseconds (µs))
| Operation | Typical Latency |
|---|---|
| Memory access | ~100 ns |
| SSD read | 0.1–1 ms |
| DB query | 1–10 ms |
| API call | ~1–10 ms |
| API call (different region) | 100–300 ms |
| Human-perceivable delay | ~100 ms |
How many requests per second?
e.g. 100 requests (queries) / sec
| Situation | Scale Vertically | Scale Horizontally |
|---|---|---|
| Load is small and predictable | ✅ | ❌ |
| High Availability (HA) | ❌ Single Point of Failure | ✅ |
| High Reliability | ❌ | ✅ |
How much size of data we can handle.
| Goal | Use | Unit |
|---|---|---|
| System load | Per second | MB/s (Mbps), GB/s (Gbps) |
| Cost estimation | Per day/month | GB/day, TB/month |
| Bandwidth says… | We should… |
|---|---|
| High read bandwidth | Use CDN to reduce origin load |
| High write bandwidth | Use Kafka/batching to absorb spikes |
| High per-request bandwidth | Consider compression or chunking |
| Lots of media | Use S3 + CDN, not RDS |
How much size of data need to be stored?