Design YouTube
Problem
Design video streaming platform like YouTube.
Requirements
- Upload videos
- Stream videos (adaptive bitrate)
- Search videos
- Recommendations
- Scale: 500 hours uploaded/minute
Key Challenges
- Storage: Massive (86 PB/year for uploads)
- Transcoding: Convert to multiple formats (360p, 720p, 1080p, 4K)
- CDN: Serve from edge (reduce latency + bandwidth)
High-Level Design
Upload Flow
- Client uploads video → S3
- Queue transcoding job (Kafka)
- Worker transcodes video (FFmpeg)
- Upload processed videos to S3
- Update database (video metadata)
Streaming
- Adaptive bitrate: HLS or DASH (switch quality based on bandwidth)
- CDN: Cache popular videos at edge
- Pre-warming: Pre-cache predicted popular videos
Storage
- Cold storage: Old videos (Glacier)
- Hot storage: Recent videos (S3)
Next: Design Uber.