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.
AI-powered duplicate question detection: The system suggests existing questions that ask the same thing as users write a new question, so answers stay in one place.
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.
Precision of duplicate suggestions: Suggestions must favor accuracy over coverage, because a wrong suggestion sends users to a question that does not answer theirs.
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 ... ...