educative.io

Can someone correct the below estimation I used, as I don't find the formula find used for computation to be intutive

Assumptions:
DAU = 300 M
50% users use Twitter daily
Requests per day on average = 20
Twitter server can handle approximately 6k requests per second (RPS)

Estimating the Number of Servers:
Total Requests per day = 300 M * 50% * 20 = 3B
Total Requests per sec (t) = 3B / 86400 = 35000 (approx)
Peak hours Requests per sec = 2 * t = 70000
Number of servers required in a single data center = Number of requests per sec / RPS = 70000 / 6000 = 12
Accounting for redundancy (3x Redundancy) = 12 * 3 = 36
Accounting for multiple geographic distribution, number of servers required = 36 * 4 = 144

My estimation of servers seems very strange as big services use millions of servers in a data center, what am I doing wrong in the above capacity estimation?


Course: https://www.educative.io/collection/10370001/4941429335392256
Lesson: https://www.educative.io/collection/page/10370001/4941429335392256/4766860129599488

Hi Ritesh.

The calculations provided in the lesson consider the number of servers required for the peak load. The term Daily Active Users refers to the number of users active on the application daily. The initial calculation in the lesson seems intiutively incorrect as the number of servers required are only 15. Hence, in the next step we improve the estimation by considering the peak load of the system. This means that the all the DAU will be sending a request at the same time so we calculate the number of servers to meet that peak load.

As for your calculation, it would actually be:

DAU = 300 M

RPS of a server = 6000

Number of servers needed = DAU/RPS = 300 M / 6000 = 50000

So the number of servers required for Twitter are 50,000. Please remember that these numbers are only estimations and can vary.

Thank you.

Hi Umer!
For the formula shared by you, then unit don’t seem to match
DAU → per day
RPS → per sec
Don’t we need to convert DAU to number of users per second OR RPS to request per day?

Hi Ritesh.

We have covered this in our lesson Examples of Resource Estimation.

To have a better approximation, let’s use the following two assumptions:

  1. We assume that each daily active user (DAU) of the service sends just one request per day.

  2. We assume that there is a specific second in the day when all the requests of all the users arrive at the service simultaneously. We use it to get the capacity estimation for a peak load. To do better, we will need request and response distributions, which might be available at the prototyping level. We might assume that distributions follow a particular type of distribution, for example, the Poisson distribution. By using DAU as a proxy for peak load for a specific second, we have avoided difficulties finding the arrival rates of requests and responses.

Therefore, the DAU will then become the number of requests per second.

We encourage you to read through the content again. If you are unsure or have any questions, feel free to reach out to us.

Thank you.