YouTube System Design Overview

- The user creates a video upload request and provides the video files along with the details about the video.
- The raw video files are uploaded to an Object Storage (such as S3).
- Also, the metadata is saved in a database as well as a cache for faster retrieval when needed.
- The raw video files are sent for transcoding to a special transcoding server. Transcoding is the process of encoding the videos into compatible bitrates and formats for streaming.
- The transcoded video is uploaded to another object storage.
- The notification for transcoding completion is sent to a special service via a message queue.
- The Transcoding Status Handler updates the metadata DB and cache with the latest details of the video.
- The user raises a video streaming request that goes to a Content Delivery Network (CDN).
- The CDN fetches the video from the object storage for streaming. It also caches the video locally for subsequent streaming requests.