System Design Interview Question: Design Netflix in 45 Minutes
Build a Netflix clone on paper. Follow our 14-step system design guide to master API definition, data modeling, and fault tolerance for streaming services.
1. Problem Definition and Scope
We are designing a global Video on Demand (VOD) streaming service. The goal is to allow millions of users to browse a large catalog of movies and TV shows and stream them instantly on various devices (TV, mobile, web) with high quality and minimal buffering.
Main User Groups:
Viewers: Users who discover content and watch videos.
Content Operations (Admins): Internal teams who upload raw video masters and manage metadata.
Scope:
In Scope:
Content Ingestion: Uploading, processing, and distributing video files.
Playback (Data Plane): Streaming video to the client with low latency.
Discovery (Control Plane): Browsing and searching the catalog.
User History: Tracking watch progress to resume playback.
Out of Scope: Billing, payments, user sign-up flows, and complex recommendation algorithms (we will assume a recommendation service provides a list of video IDs).
2. Clarify functional requirements
Must Have:
Video Ingestion: Admins can upload high-quality raw video files.
Transcoding: The system automatically converts raw video into multiple formats (codecs) and resolutions (4K, 1080p, mobile) to support different devices and network speeds.
Playback: Users can start playing a video with low latency (< 2 seconds).
Adaptive Bitrate Streaming: Video quality automatically adjusts in real-time based on the user’s bandwidth (e.g., switching from 4K to 720p).
Resume Capability: Users can pause on one device and resume from the same second on another.
Search: Users can find titles by text search.
Nice to Have:
Offline Viewing: Downloading content for later.
Multiple Profiles: Distinct history for different users under one account.
3. Clarify non-functional requirements
Scale:
Users: ~200 Million Daily Active Users (DAU).
Traffic Pattern: Extremely Read-Heavy. The ratio of viewing (reads) to uploading (writes) is massive (e.g., 100,000:1).
Global Reach: Must serve users worldwide with low latency.
Performance:
Latency: Fast browsing response (< 200ms). Fast time-to-first-frame for video (< 2s).
Availability: High availability (99.99%) for playback. If the “My List” feature breaks, users should still be able to play videos from the home screen.
Consistency:
Metadata: Eventual consistency is acceptable. If a new movie description takes a minute to propagate, it’s fine.
Watch History: Needs to be fast and fairly consistent so users can switch devices quickly, but eventual consistency (seconds lag) is acceptable.
Keep reading with a 7-day free trial
Subscribe to System Design Nuggets to keep reading this post and get 7 days of free access to the full post archives.





