Design a Video Streaming Platform
Turn uploads into playable renditions and serve viewers through unreliable networks.
Backend and product engineers designing software behavior.
Your approach: Use diagrams, tables or prose for customer contracts, state transitions and data ownership; include APIs only to the depth the question requests.
The problem
Design an on-demand video platform from resumable upload through transcoding and playback. Explain when a video becomes playable, how viewers select bitrate and how popular content is delivered. Handle failed processing, deletion and a sudden audience spike without assuming live streaming is in scope.
- Upload 100,000 videos/day averaging 500 MB and ten minutes of playback each.
- Serve 1 million concurrent viewers at peak, with average delivered bitrate of 3 Mb/s.
- Offer three playback renditions. Processing can fail and a new video can become popular immediately.
Work within these constraints
Declare p95 startup time for a cached video on an adequate network; state excluded network conditions.
Required target: ≤ 3 seconds
Expose only complete manifests and ready segments; represent processing failures honestly.
Define removal from discovery, authorization and cached delivery with explicit propagation limits.
What to deliver
Upload and processing states
Show durable upload, job identity, renditions, retries and publication.
Playback path
Describe manifests, segmented delivery, bitrate selection and access checks.
Capacity estimate
Calculate ingress storage, approximate processing demand and peak egress bandwidth.
Spike and outage walkthrough
Trace a failed rendition and a cold popular video; compare origin protection strategies.