Search⌘ K
AI Features

Requirements of YouTube's Design

Define the core functional and non-functional requirements for a large-scale video streaming service like YouTube. Learn to perform crucial back-of-the-envelope resource estimation for storage, bandwidth, and server requirements.

Requirements

Designing a system like YouTube requires handling massive scale and reliability.

Functional requirements

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

  1. Stream videos

  2. Upload videos

  3. Search videos by title

  4. Like and dislike videos

  5. Add comments

  6. View thumbnails

Non-functional requirements

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

  • Scalability: The system must handle increasing users, storage, and bandwidth without performance degradation.

  • Performance: Streaming must be smooth with minimal latency.

  • Reliability: Uploaded content must not be lost or damaged.

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

For content distribution, YouTube does not require strict strong consistency guarantees. For example, a newly uploaded video does not need to propagate to all subscribers instantly. In this case, eventual consistency provides an acceptable trade-off between latency and consistency. Based on these requirements, we can estimate resource needs and outline the system architecture.

Resource estimation

...