Requirements for Quora Design
Let us understand the requirements for designing Quora.
Requirements
Let’s understand the functional and non-functional requirements below.
Functional requirements
A user should be able to perform the following functionalities:
- Questions and answers: Users can ask questions and give answers. Questions and answers can include images/videos.
- Upvoting/downvoting and commenting: It is possible for users to up/downvote and/or comment on answers.
- Search: Users should be able to use a search facility for finding questions already asked on the platform by other users.
- Recommendation system: A user can view his feed on the topics of interest. The feed can include questions that need answering or answers that interest the reader. The system should facilitate users with a recommender system.
- Ranking answers: Service can enhance the user experience by ranking answers according to their suitability. That is, the most helpful answer will be ranked highest and hence listed at the top.
Non-functional requirements
- Scalability: The system should scale well as the number of features and users grow with time. That is, the performance and usability should not be impacted by an increasing number of users.
- Consistency: The design should ensure that different users’ views of the same content should be consistent. In particular, critical content like questions and answers should be the same for any collection of viewers. However, it is not necessary that all users of Quora will see a newly posted question, answer, or comment right away.
- Availability: The system should have high availability. This applies to cases where servers receive a large number of concurrent requests.
- Performance: The system should provide a smooth experience to the user without a noticeable delay.
Estimations
This section is about estimating resource requirements for Quora service. We make assumptions to get a practical and tractable estimate. We will estimate the number of servers, the storage, and the bandwidth required to facilitate a large number of users.
Assumptions: It is important to base our estimation on some underlying assumptions. We, therefore, assume the following:
- There are a total of 1 billion users, out of which 300 million are daily active users.
- Assume 15 percent of questions have an image. And 5 percent of questions have a video embedded in them. A question cannot have both at the same time.
- An image is estimated to be 250 KBs, and a video is considered 5 MBs.
Server requirements
Let’s estimate our Requests Per Second (RPS). If there are an average of 300 million daily active users and each user can generate 20 requests per day, then the total number of requests in a day will be:
...
Create a free account to access the full course.
By signing up, you agree to Educative's Terms of Service and Privacy Policy