Design a video streaming service where content can be uploaded and viewers can search and play videos
- Functional Requirements
- Users should be able to create and account and subscribe for a plan.
- Users should be able to manage multiple profiles.
- Users should be able to search for a video title.
- Users should be able to watch a video.
- Netflix employees should be able to upload a video from backend to make it available on Netflix platform.
- Nonfunctional Requirements
- System should be highly reliable. Any video uploaded should not be lost.
- System should be highly available.
- Users should be able to stream videos in Realtime without any lag.
Most popular videos
Grouping of videos (e.g. TV Series, treat each video as independent)
Average number of videos users watch daily = 3
Number of videos watched per second= (#active users _ #average videos watched daily)/86400 = 3472(100M _ 3/86400)
Size of the content stored on a daily basis = #average size of video uploaded every min _ #pairwise combination of resolutions and codecs _ 24_ 60 = 36 TB/day (=2500MB _ 10 _ 24 _ 60)
- Estimated Usage
Let’s do some back-of-the-envelope calculations to estimate the bandwidth and storage required.
- Total number of daily active users = 100 million
- Average number of videos watched by each user per day = 5
- Average size of one video = 500 MB
- Average number of video uploaded per day from backend = 1,000
Seen this question in a real interview before?