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.
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 ...