Design a Netflix-like video platform
Company: HubSpot
Role: Software Engineer
Category: System Design
Difficulty: easy
Interview Round: Onsite
## Scenario
Design a Netflix-like platform that supports:
- **Search** for videos (by title, tags, people, etc.)
- **Stream** videos to web/mobile/TV clients
- **Upload** videos (assume both user-generated uploads and studio uploads)
## Requirements
### Functional
1. Users can browse/search a catalog and view metadata (title, description, thumbnails).
2. Users can stream a selected video with adaptive bitrate (ABR) and resume playback.
3. Content providers can upload a video, which becomes available for streaming after processing.
### Non-functional
- Low startup latency, smooth playback, global availability.
- High reliability, fault tolerance, and observability.
- Content protection support (at least tokenized URLs; optionally DRM).
## Assumptions (you may refine)
- 50M DAU, peak 5M concurrent streams.
- Global audience; multi-region deployment.
- Typical video sizes: 1–10 GB source; multiple encoded renditions.
## Deliverables
Explain:
1. APIs (client-facing and uploader-facing)
2. Data model and storage choices
3. High-level architecture (upload/processing pipeline, streaming delivery path, search)
4. Caching/CDN strategy
5. Reliability, consistency, and scaling trade-offs
6. Monitoring, rate limiting, abuse prevention
Quick Answer: This question evaluates system architecture and distributed systems competencies for designing a large-scale video platform, covering API design, media ingest and processing pipelines, storage and data modeling, content delivery and CDN strategy, adaptive bitrate streaming, content protection/tokenization, scalability and observability.