...

>

Requirements of Quora's Design

Requirements of Quora's Design

Explore the core functional and non-functional requirements for designing a scalable Q&A platform like Quora. Calculate detailed resource estimations for servers, storage, and bandwidth based on daily active users.

Requirements

Let’s understand the functional and non-functional requirements below:

Functional requirements

  • Questions and answers: Users can post questions and answers containing text, images, and videos.

  • Interactions: Users can upvote, downvote, and comment on answers.

  • Search: Users can search for existing questions on the platform.

  • Feed and recommendation: The system generates a personalized feed based on user interests to facilitate discovery.

  • Ranking: Answers are ranked by usefulness, with the highest-quality content listed first.

Non-functional requirements

  • Scalability: The system must handle increasing user and feature growth without performance degradation.

  • Consistency: Content must be consistent across views. However, new posts and comments may propagate with a slight delay (eventual consistency).

  • Availability: The system must remain available under high concurrent request loads.

  • Performance: The system must provide low latency for a smooth user experience.

Functional and non-functional requirements of Quora
Functional and non-functional requirements of Quora

Resource estimation

We will estimate the number of servers, storage, and bandwidth required to support the system.

We base our estimates on the following assumptions:

  • Total users: 1 billion (300 million daily active users)

  • Content: 15% of questions contain an image; 5% contain a video

  • Media size: Images are 250 KB; videos are 5 MB

Number of servers estimation

To estimate the servers required for peak load, we use our assumption of 300 million requests per second (using DAU as a proxy). We calculate the server count using ...