Upload, transcode into many qualities, push to a CDN and adapt to the network. Why almost all the traffic never reaches your servers.
What is on this board
Parts
- Player Web app
- Studio Admin / operator
- Edge servers CDN
- Catalog and playback Service
- Catalog Document DB · Cassandra
- Upload Service
- Originals Object storage · S3
- Encode jobs Message queue · SQS
- Transcoding Media processor · FFmpeg
- Encoded chunks Object storage · S3
- Recommendations ML model
- What people watch Event stream · Kafka
- Licenses Service
How they connect
- Studio → Upload: uploads a film
- Upload → Originals: save
- Upload → Encode jobs: encode
- Encode jobs → Transcoding: consume
- Transcoding → Encoded chunks: chunks
- Encoded chunks → Edge servers: pre-load at night
- Player → Catalog and playback: what to watch?
- Catalog and playback → Catalog: catalog
- Catalog and playback → Recommendations: for this person
- Player → Licenses: license
- Player → Edge servers: next chunk
- Player → What people watch: watched 12 minutes
- What people watch → Recommendations: train
Notes and decisions
- Edge servers: Almost every byte comes from here
- Transcoding: Many qualities, in 4-second chunks
- Licenses: DRM keys per session
- Adaptive bitrate: the player picks the quality of each chunk by its own measured speed. The server decides nothing.
More like this
News feed, like TwitterFan-out on write or on read? Timelines in a cache, the celebrity problem, and how a post reaches millions of followers.
News feed, like TwitterFan-out on write or on read? Timelines in a cache, the celebrity problem, and how a post reaches millions of followers.
URL shortener, like BitlyThe first system design interview question: key generation, heavy reads, a cache in front, and click analytics off the request path.