Netflix
Streaming-first architecture with an online→nearline→offline tiering
Netflix serves video from a global CDN (its own Open Connect appliances inside ISPs) with the control plane on AWS. Viewing metadata, recommendations, and the API gateway run in the cloud; playback bytes come from edge caches close to users.
Product constraints
- Peak-time bandwidth dominates; playback must not buffer.
- Global audience; edge must be inside or near the ISP.
- Personalization and recommendations are core to retention.
- Control plane must be highly available; playback is edge-served.
High-level diagram
Request path
- App open. Client hits the API gateway (Zuul-like) on AWS; auth, profile, and personalized rows are assembled from microservices.
- Browse/decide. Recommendation and metadata services return rows; EVCache (memcached) fronts Cassandra/EVCache for low-latency reads.
- Playback request. Client requests playback; the control plane returns manifest + best CDN/edge URL.
- Stream. Bytes stream from Open Connect edge appliances (inside ISPs), not AWS; adaptive bitrate over the edge.
Data model
Catalog metadata in Cassandra (multi-region, highly available); user viewing history and ratings in Cassandra + EVCache; recommendations computed offline/nearline in batch and served from cache. Media files pre-positioned to edge appliances.
Storage / cache / queue choices
Storage
Cassandra for availability/multi-region metadata; S3 for media origin; edge appliances for playback.
Scaling levers
- Open Connect puts bytes at the ISP edge, offloading AWS and the internet backbone.
- Cassandra multi-region for HA; EVCache for sub-ms reads.
- Stateless microservices autoscale on AWS; playback doesn't touch them.
- Nearline/batch recommendation pipelines on Spark.
Copy vs skip (for a smaller team)
Copy
- Separate control plane (cloud) from data plane (edge CDN).
- Multi-region highly-available metadata store (Cassandra-style).
- Cache hot reads in front of the DB.
- Event-driven viewing analytics (Kafka).
Skip
- Building your own CDN appliances (use a managed CDN).
- Full microservice decomposition on day one (start modular).
- Global multi-region write Cassandra (start single-region if you can).