Estimation drills
Before designing a system, size it: how many requests a second, how much data, how many machines. The aim is the right power of ten in a minute, with round numbers you can multiply in your head. The estimation lesson explains the method.
7 questions, one of each kind. Within 2× counts as spot on; within 10× is the right order of magnitude.
Estimate: Requests a second
Practice, not recordedA chat app has 500 million daily users, who each send 2 messages a day. About how many requests a second does it serve, on average?
- Daily users
- 500 million
- Messages per user a day
- 2
Estimate: Peak traffic
Practice, not recordedA photo-sharing app has 1 million daily users, who each view 20 photos a day. Its busiest hour runs at 5 times the daily average. About how many requests a second must it handle at the peak?
- Daily users
- 1 million
- Photos per user a day
- 20
- Peak ÷ average
- 5×
Estimate: Storage a year
Practice, not recorded50 million users each send 10 messages a day, 1 KB each. Everything is kept, and stored 3 times for safety. About how much storage does a year of them need?
- Active users a day
- 50 million
- Messages per user a day
- 10
- Size of each
- 1 KB
- Copies kept
- 3
Estimate: Latency budget
Practice, not recordedA request must be answered within 200 ms. About how many main-memory references could it make one after another in that time, if it did nothing else?
- Time budget
- 200 ms
- One of them (main memory (ram) reference)
- 100 ns
Estimate: Cache memory
Practice, not recordedA database holds 1 billion product records, 1 KB each. As often happens, about 80% of reads go to the most popular 20%. How much memory does a cache need to hold that hot 20%?
- Items stored
- 1 billion
- Size of each
- 1 KB
- Hot share
- 20%
Estimate: Bandwidth
Practice, not recordedA service sends 50,000 API responses a second, 2 KB each. About how much outgoing bandwidth does it need?
- Responses a second
- 50,000
- Size of each
- 2 KB
Estimate: How many servers
Practice, not recordedAt its peak a service gets 20,000 requests a second. One server can handle 1,000 a second flat out, but you want each to run at no more than 60% of that so latency stays low. About how many servers do you need?
- Peak requests a second
- 20,000
- One server, flat out
- 1,000
- Target load per server
- 60%