8. Design a Video Streaming Platform
Turn uploads into playable renditions and serve viewers through unreliable networks.
The brief
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.
Constraints
- Playback startup target≤ 3 seconds
- Declare p95 startup time for a cached video on an adequate network; state excluded network conditions.
- Playable publication
- Expose only complete manifests and ready segments; represent processing failures honestly.
- Deletion and cache policy
- Define removal from discovery, authorization and cached delivery with explicit propagation limits.
What to cover
- 01
Upload and processing states
Show durable upload, job identity, renditions, retries and publication.
- 02
Playback path
Describe manifests, segmented delivery, bitrate selection and access checks.
- 03
Capacity estimate
Calculate ingress storage, approximate processing demand and peak egress bandwidth.
- 04
Spike and outage walkthrough
Trace a failed rendition and a cold popular video; compare origin protection strategies.
Worked designs
Explore the architecture and decisions, then build on an example with Coach.
Review rubric
AI feedback uses these criteria. Scores are practice feedback.
Media lifecycle
Uploads, processing retries and publication have consistent state.
Playback behavior
Adaptive delivery and access rules support the stated experience.
Bandwidth and storage
Unit-aware estimates expose the major costs and limits.
Spike and failure response
Recovery protects the origin and states cache tradeoffs.
Discussion
Share an approach, ask a question, or tag @Coach.
Loading discussion…