Requirements of YouTube's Design
Designing a system like YouTube involves addressing both functional and non-functional requirements, including high availability, scalability, performance, and reliability. Key functionalities include video streaming, uploading, searching, and user interaction features like comments and ratings. The system must handle massive data storage and bandwidth needs, with estimates based on user activity and video uploads. Essential components include databases, blob storage, content delivery networks, and load balancers, all working together to ensure efficient processing and delivery of video content while maintaining a smooth user experience.
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:
Stream videos
Upload videos
Search videos
Like and dislike videos
Add comments
View thumbnails
Ask about videos in natural language and receive answers linked to relevant videos and timestamps
Non-functional requirements
High availability: The system should be highly available. High availability requires a high uptime percentage. Large services such as YouTube typically target 99.9% uptime or higher. At 99%, a service can still be down for more than three and a half days a year.
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.
Grounded answers: Answers from the AI assistant must be supported by the content of eligible videos and must never draw on removed, private, or region-restricted videos.
The conversational assistant has its own latency target, separate from standard search, because it retrieves evidence and generates an answer before responding. We cover its design in detail in the Ask ...