System Design Notes
Don’t forget to get your copy of Designing Data Intensive Applications the single most important book to read for system design interview prep!

Netflix/ YouTube Design

A video streaming service, such as Netflix or YouTube, is a platform where content creators can upload videos and viewers can search and play videos. Additionally, it's also able to record video statistics, such as the number of views, number of likes/dislikes, number of minutes watched, etc.

While users pay a monthly subscription fee to enjoy the services of Netflix, YouTube is an advertisement-based service that users enjoy free of cost. Nevertheless, both are video streaming services with similar design basics. Let's see how a basic video streaming service is designed.

System Requirements

YouTube and Netflix are among the biggest video streaming services on the planet. Their architecture has several components to enhance customer experience. AI-based recommendation systems, billing, popular videos and watch later are all part of such a service, but we will focus on the core features.

Core Features

Our design for a video streaming service will support the following features:

  1. Content creators can upload videos.
  2. Viewers can watch videos on different devices (mobile, TV, etc.).
  3. Users can search videos by their titles.
  4. Users can like/dislike or comment on videos.
  5. The system can store likes, dislikes and number of views to display these stats to the users.

Goals Of The System

  1. There should be no buffering so the viewers can have a real-time experience when watching videos.
  2. The system should have low latency and high availability. Consistency is of secondary importance in this case, since it's acceptable if a newly uploaded video is not available to a user for a while.
  3. Video storage should be reliable. Uploaded videos should not be lost.
  4. The system should be able to scale with the increasing number of users.

Click here to continue reading this lesson on Medium.