Skip to content
Naveen Raj

System Design Fundamentals · Foundations

Back-of-the-Envelope Estimation

Back-of-the-envelope math exists to catch a design that's wrong by 1000x before you build it. It doesn't need to be precise — it needs to be roughly right and fast.

The estimation toolkit is small. Memorize these, not the formulas:

1 million   ≈ 10^6
1 billion   ≈ 10^9
1 day       ≈ 86,400 seconds  (round to 100,000 for quick math)
1 KB        = 10^3 bytes        1 MB = 10^6 bytes        1 GB = 10^9 bytes

Worked example: the URL shortener again

Assume 100 million new short links created per day, and a 100:1 read:write ratio.

Writes/sec  = 100,000,000 / 100,000 s/day ≈ 1,000 writes/sec
Reads/sec   = 1,000 × 100                 ≈ 100,000 reads/sec

Storage per link ≈ 500 bytes (URL + metadata + short code)
Storage/day       = 100,000,000 × 500 bytes ≈ 50 GB/day
Storage/year      = 50 GB × 365            ≈ 18 TB/year

Three numbers just told you a lot:

  • 100K reads/sec cannot hit a single relational database directly — this design needs a cache in front of the DB (Chapter 2), full stop, before you've discussed anything else.
  • 18 TB/year is not "big data" — it comfortably fits on a handful of modern disks. Sharding the database on day one, purely for storage size, would be premature.
  • 1,000 writes/sec is modest — a single well-indexed database can typically handle this, so the write path doesn't need to be over-engineered.

The estimate doesn't tell you the final architecture — it tells you which parts of the design space you can immediately rule out. That's the entire point: cheap math prevents expensive mistakes.