Size a System on the Back of an Envelope
The interviewer asks how much traffic you're expecting. Round to powers of ten, turn per-day into per-second, and end every number on the design decision it forces: one node, a cache, or a shard.
Per day ÷ 10⁵ = per second, × 2 to 3 for peak, round everything to a power of ten, and end every number on what it decides: one node, a cache, or a shard.
You're here when
The interviewer asks "how much traffic are we talking about?"
Someone proposes sharding before anyone has done the arithmetic
- You need to know if a new service fits on one box
The numbers to carry
| Convert | Rule | Anchor |
|---|---|---|
| Per day → per second | ÷ 10⁵ | 1M/day ≈ 10/s |
| Per month → per second | ÷ 2.5 × 10⁶ | 100M/month ≈ 40/s |
| Average → peak | × 2 to 3 | 40/s ≈ 100/s at peak |
| Requests in flight | rate × latency (Little's law) | 1K/s × 50 ms = 50 |
| Multiply | digits ×, exponents + | 10⁸ × 5 × 10² = 5 × 10¹⁰ |
1 TB = 10 to the power 12 bytes
Terabyte · Server SSD. ≈ 2B rows of 500 B, about a laptop SSD.
- Memory reference 100 nsat human scale: 1 second
- SSD random read 100 µsat human scale: 17 minutes
- Round trip, same datacenter 0.5 msat human scale: 1.4 hours
- Disk seek 5 msat human scale: 14 hours
- Round trip, across an ocean 150 msat human scale: 17 days
What one node takes. Say these out loud as assumptions:
| One… | Takes about |
|---|---|
| App instance | 1K req/s |
| #postgres primary | 5K simple writes/s |
| #redis node | 100K ops/s |
| Server | 100 GB RAM, 10 TB SSD |
The play
- 1
Assumptions in a corner of the board: users, actions per user, read:write, record size, retention.
- 2
Traffic at peak, reads and writes apart: writes pick the database, reads pick the cache.
- 3Storage: writes × record size × retention.
- 4
Memory: the hot ~20% of recent data, say a month of new rows.
- 5Servers: peak QPS ÷ 1K per instance.
- 6Close the loop: say what each number decides.
Say this
- "One Postgres primary: it's about 40 writes a second."
- "3 TB over five years, so it fits on one node. No sharding."
- "Peak reads are around 10K a second, so a cache in front."
Not this
- "1,157.4 requests per second."
- "We'll need to shard," with no number behind it.
- "Storage is 3 TB," and then moving on.
Worked: a URL shortener
100M new links a month, 100 reads per write, 500 bytes a record, kept 5 years. On the board:

Now scale it and watch which numbers cross one node's limit:
At 1x, 0 of 6 estimates outgrow one node.
- Writes 40/sone Postgres primary(limit 5K/s)
- Peak reads 10K/sone Redis node in front(limit 100K/s)
- Storage, 5 years 3 TBone database node(limit 10 TB)
- Hot set 10 GBfits in one node's RAM(limit 100 GB)
- Peak bandwidth 5 MB/sno CDN needed(limit 100 MB/s)
- 7-char codes used 0.17%random codes rarely collide(limit 10%)
Pro tips
- Round load up and capacity down, so errors land as spare room.
- Ask one clarifying question, then assume out loud and keep moving.
- When the interviewer changes a number, change one line and rerun.
- Five minutes, not fifteen: the estimate leads to the design, it isn't the interview.