Back-of-the-Envelope (BOTE) is a way to estimate system capacity or performance requirements.

4 Core Dimensions to Estimate

Latency

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

**Throughput (**RPS/QPS)

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

Bandwidth

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

Storage

How much size of data need to be stored?

Cheat-Sheet for Calculation

People / Money