Search⌘ K

Requirements of YouTube's Design

Understand the requirements and estimation for YouTube's design.

Requirements

Let’s start with the requirements for designing a system like YouTube.

Functional requirements

We require that our system is able to perform the following functions:

  1. Stream videos

  2. Upload videos

  3. Search videos according to titles

  4. Like and dislike videos

  5. Add comments to videos

  6. View thumbnails

Non-functional requirements

It’s important that our system also meets the following requirements:

  • High availability: The system should be highly available. High availability requires a good percentage of uptime. Generally, an uptime of 99% and above is considered good.

  • Scalability: As the number of users grows, these issues should not become bottlenecks: storage for uploading content, the bandwidth required for simultaneous viewing, and the number of concurrent user requests should not overwhelm our application/web server.

  • Good performance: A smooth streaming experience leads to better performance overall.

  • Reliability: Content uploaded to the system should not be lost or damaged.

Representation of the functional and non-functional requirements
Representation of the functional and non-functional requirements

We don’t require strong consistency for YouTube’s design. Consider an example where a creator uploads a video. Not all users subscribed to the creator’s channel should immediately get the notification for uploaded content.

To summarize, the functional requirements are the features and functionalities that the user will ...