Requirements of YouTube's Design

Lesson 110 of 25610 min readPremium lesson preview
In this lesson3 sections

Requirements of YouTube's Design

Scope the video service before estimating capacity. Distinguish source uploads, encoded renditions, playback transfers, and lightweight application requests; they have different resource costs.

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: Set separate targets for upload acceptance and playback. For perspective, 99% time-based availability permits 7.2 hours of downtime in a 30-day month; whether that is acceptable depends on the product.

  • Scalability: Expand storage, processing, and delivery capacity as their measured workloads grow, while staying within agreed performance targets.

  • Performance: Measure startup delay, rebuffering, and delivered quality. Low API latency alone does not imply smooth playback.

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

The rest of this lesson is for Premium members

Premium opens every lesson in this course, along with all questions and solutions on PracHub.