There is a moment in System Design interviews that often gives people that familiar feeling of nervousness.
You are comfortably discussing requirements, APIs, databases and components when the interviewer asks:
How many requests per second does this system need to support?
At that point, several questions appear at once.
How many users should I assume? How many actions does each person perform? Do I need an exact answer? What happens if I make a simple calculation mistake?
This stage is known as Back-of-the-Envelope Estimation.
Despite involving numbers, it is not really a maths test.
It is a way of making your reasoning visible.
You do not need the exact answer
When estimating the scale of a system, we are not trying to predict exactly how many servers the application will use three years from now.
The objective is to understand the order of magnitude of the problem.
There is an enormous difference between designing a system for:
- 300 requests per second;
- 30,000 requests per second;
- 300,000 requests per second.
In the same way, storing 50 GB is a completely different problem from storing 50 PB.
The estimate only needs to be good enough to help answer some important questions:
- Is this genuinely a large-scale system?
- Will most of the traffic come from reads or writes?
- Will storage become a significant challenge?
- Will we need a cache?
- Could bandwidth become a bottleneck?
- Will the data need to be distributed across multiple regions?
Before drawing the first component, the numbers already begin to show where the architecture might become difficult.
The interviewer wants to follow your reasoning
A good estimate can begin with a simple sentence:
I am going to state a few assumptions so that we can estimate the order of magnitude.
That sentence completely changes the conversation.
You are not claiming to know the company’s real numbers. You are simply creating a reasonable scenario to guide the design.
For example:
- 300 million monthly active users;
- 50% use the application every day;
- each user performs two actions per day;
- peak traffic is twice the average traffic.
The interviewer may prefer different assumptions, and that is perfectly fine. They can adjust the numbers while the method remains exactly the same.
Your assumptions do not need to be perfect. They need to be clear.
A simple method for estimating scale
Whenever someone asks you to estimate the scale of a system, you can follow this sequence.
1. Calculate the daily active users
We normally begin with the number of monthly active users, known as Monthly Active Users, or MAU.
DAU = MAU × percentage of users active each day
Suppose we have 300 million MAU and assume that 50% of them use the system every day:
300 million × 50% = 150 million DAU
We now have the number of Daily Active Users, or DAU.
2. Calculate the actions performed each day
Suppose each user performs two actions per day:
150 million × 2 = 300 million actions per day
3. Convert daily actions into QPS
There are 86,400 seconds in a day.
Therefore:
Average QPS = requests per day ÷ 86,400
In our example:
300 million ÷ 86,400 ≈ 3,500 QPS
For an initial estimate, we can also round 86,400 to approximately 100,000, or 10⁵.
This makes the mental arithmetic much easier:
300 million ÷ 100,000 ≈ 3,000 QPS
The result is not exact, but it is within the correct order of magnitude.
In a System Design interview, that is usually far more important than reaching the final digit.
4. Account for peak traffic
Traffic is not distributed evenly throughout the day.
An application may receive more traffic in the evening, after a notification is sent or during an important event.
For this reason, we can apply a Peak Factor, usually between two and three times the average traffic.
Peak QPS = Average QPS × Peak Factor
Using a peak factor of two:
3,500 × 2 = 7,000 peak QPS
We now have an initial understanding of the load the system needs to support.
When the estimate reveals the real problem
Let us add storage to the same example.
Imagine that:
- 10% of posts contain an image or another type of media;
- each media object is approximately 1 MB;
- the data will be retained for five years.
The daily storage requirement would be:
150 million users
× 2 posts per day
× 10%
× 1 MB
= 30 TB per day
Over five years:
30 TB × 365 × 5 ≈ 55 PB
Notice what happened.
The system handles approximately 3,500 writes per second, which may appear relatively manageable.
However, it also needs to store approximately 55 petabytes of content.
The estimate has shown that the greatest challenge probably does not lie in the number of requests. The more difficult problem may be storage, replication, distribution and delivery of those files.
We discovered this before choosing a database, cache, queue, programming language or cloud service.
That is the real value of Back-of-the-Envelope Estimation.
The numbers that are actually worth memorising
You do not need to memorise dozens of formulas.
A small set of numbers can solve most estimation problems.
86,400 seconds in a day
This is the number used to convert daily actions into QPS.
As a shortcut:
86,400 ≈ 100,000 ≈ 10⁵
Another useful reference is:
1 million actions per day ≈ 10 QPS
100 million actions per day ≈ 1,000 QPS
1 billion actions per day ≈ 10,000 QPS
The storage ladder
Each step represents approximately one thousand times more data:
KB → MB → GB → TB → PB
Keeping this sequence in mind makes it much easier to convert millions of records into gigabytes, terabytes or petabytes.
The peak factor
Average QPS rarely represents the busiest moment of the system.
As an initial approximation:
Peak QPS ≈ Average QPS × 2 or 3
Explaining the assumption is more important than choosing exactly two or three.
The replication factor
This is one of the easiest terms to forget.
Suppose the system stores three copies of every piece of data:
Physical storage = logical storage × 3
Fifty terabytes of logical data can quickly become 150 terabytes after replication.
Availability requires redundancy. Redundancy means copies. Copies require storage.
Bandwidth
Another simple calculation that is frequently overlooked:
Bandwidth = QPS × payload size
One thousand responses per second with a size of 1 MB each represent:
1,000 × 1 MB = 1 GB per second
In this scenario, the limit may not be the CPU or the database. It may be the network and the cost of transferring the data.
Common estimation mistakes
A few simple habits can prevent most problems during the interview.
Always write down the units
The number 5 means nothing on its own.
Is it 5 KB, 5 MB, 5 GB, 5,000 requests or 5 servers?
A missing unit can turn a correct calculation into a completely incorrect conclusion.
Round without feeling guilty
Turn a calculation such as:
99,987 ÷ 9.1
into:
100,000 ÷ 10
You are producing an estimate, not preparing a company’s annual accounts.
State your assumptions aloud
A sentence like this demonstrates organisation and maturity:
I will assume that 40% of users are active each day and that peak traffic is approximately three times the average.
Even if the numbers change, the method remains valid.
Perform a sanity check
Once you have finished, ask yourself:
- Does the result seem reasonable?
- Am I talking about hundreds or hundreds of thousands of QPS?
- Should the storage be measured in gigabytes or petabytes?
- Did I forget the replication factor?
- Am I mixing bits and bytes?
- Is the system read-heavy or write-heavy?
- Does the payload size make sense?
This small pause can reveal mistakes before they affect the rest of the design.
A tool for practising the reasoning
To make this process more visual, I created a small collection of resources for practising System Design estimations.
The interactive estimator begins with the well-known Twitter example and shows every step of the calculation.
You can change:
- the number of users;
- the percentage of users active each day;
- the number of actions performed by each user;
- the ratio between reads and writes;
- the payload size;
- the retention period;
- the peak factor;
- the replication factor;
- the estimated capacity of each server.
Rather than displaying only the final result, the tool shows how each value was calculated.
This is important because the objective is not to memorise a prepared answer. The objective is to understand how assumptions become numbers and how those numbers influence the architecture.
I also created a printable A4 poster containing the main formulas, latency references, availability levels, units and mental arithmetic shortcuts.
The idea is simple: print it, place it near your desk and refer to it regularly until the numbers start to feel familiar.
All the material, including the source code, formulas and a collection of revision exercises, is available in my study repository:
github.com/mhayk/system-design
Confidence does not come from memorising every answer
The most uncomfortable part of a System Design interview is often not knowing exactly what answer the interviewer expects.
But that is precisely the point.
In real projects, we rarely begin with every piece of information available. We work with incomplete requirements, assumptions, approximate metrics and constraints that change over time.
A good estimate demonstrates that you can work with that uncertainty.
You do not need to predict the future.
You do not need the exact answer.
You do not need to perform every calculation mentally and in silence.
You need to state your assumptions, keep the units visible, round sensibly and explain what the numbers mean for the architecture.
The next time someone asks:
How many requests per second does this system need to support?
Take a breath.
Write down the assumptions.
Divide by 86,400.
Find the order of magnitude.
Then use the result to discover where the system actually becomes difficult.
The nerves may still appear, but now you have a method that tells you exactly where to begin.
