How would you design Netflix (CDN encoding watch history) in a system design interview?
Expected pieces: upload -> transcode pipeline (HLS/DASH, per-title ladder) -> origin storage -> CDN edge with signed URLs/tokens. Client picks bitrate via manifest; DRM/license service if needed. Watch history is a separate write path: progress events -> stream (Kafka/Kinesis) -> hot KV for resume (userId videoId -> position, updatedAt) cold warehouse for analytics.
Bottlenecks: cache miss storms on new releases, origin egress, transcoder queue/backlog, tiny segment overhead, thundering herd on token/manifest APIs. Data model: Content, Rendition, Segment, PlaybackSession, Progress. APIs: GET /manifest, GET /segment, POST /progress, GET /resume.
Tradeoffs: pre-encode vs just-in-time; segment size (2s vs 6s); multi-CDN vs single; strong vs eventual consistency for progress (resume can be off by a few seconds). Failures: CDN purge bugs, partial encode ladders, clock skew on progress, regional