Creators upload large video files that are transcoded into many resolutions and served worldwide through a CDN with adaptive bitrate streaming. Metadata, engagement and search run on separately scaled services, and almost every byte watched comes from an edge cache rather than the origin.
Functional requirements
- Upload videos with a title, description and tags; uploads must survive flaky connections
- Stream videos smoothly on any device and network speed
- Like/dislike, comment on, and share videos
- Search videos by title, tags and description
- Subscribe to channels and get notified about new uploads
- Show thumbnails and a personalised home feed (can come after the MVP)
Non-functional requirements
- High availability: watching must keep working even when uploads or comments are degraded
- Low start-up latency and minimal buffering worldwide
- Durable storage: an uploaded video is never lost
- Eventual consistency is fine for view counts, likes and new uploads appearing
- Read-heavy: views outnumber uploads by orders of magnitude
Extensions
- Recommendations: batch and streaming pipelines over watch history feed a model that ranks the home feed.
- Subscription notifications: publish an event per upload and fan out to subscribers through a queue.
- Better search: autocomplete, filters, and indexing auto-generated transcripts.
- Threaded comments with spam filtering and live updates over WebSockets.
- Live streaming: ingest over RTMP/SRT, transcode in real time and push to edges with low-latency HLS; add live chat.