재생 버튼 한 번에 AWS control plane(Playback Apps·CODA·CCS)이 OCA URL 목록을 만들어 주고, 이후 비디오 바이트는 ISP 안의 OCA가 직접 서빙한다 — 야간 fill, 폴백, 캐시 미스까지 21단계로 따라간다.
1 / 21
1 / 21Netflix는 두 평면으로 나뉩니다. AWS의 control plane이 재생 인증·스티어링·fill 제어라는 '결정'을 맡고, 전 세계 ISP·IXP에 놓인 OCA(Open Connect Appliance)들이 비디오 바이트 전달을 맡습니다.결정과 전달을 분리하면 두 평면을 따로 확장할 수 있고, 비디오 트래픽이 AWS를 지나지 않습니다.
Open Connect는 '결정과 전달의 분리'다 — AWS는 누가 무엇을 어디서 볼지만 정하고, 비디오 바이트는 시청자 곁 ISP 안의 OCA가 밤에 미리 채워 둔 파일로 직접 서빙한다.
왜 헷갈리는가
'Netflix는 AWS 위에서 돈다'는 절반만 맞다. 인증·추천·스티어링 같은 control plane은 AWS지만, 비디오 스트리밍은 100% 자체 CDN인 Open Connect가 맡는다. 또 하나의 오해는 일반 CDN처럼 '요청이 오면 그때 캐시하겠지'라는 것 — Open Connect는 반대로, 인기도 예측에 따라 한산한 야간 fill window에 미리 채워 두는 선제적(proactive) 캐싱이다.
애니메이션이 보여주는 것
밤에서 시작한다 — 신작이 per-title encoding으로 타이틀별 비트레이트 사다리가 되어 S3에 쌓이고, OCA들이 fill window에 manifest와의 delta를 peer fill → tier fill → cache fill 서열로 내려받는다. 그 다음 낮의 재생 경로: 클라이언트가 Playback Apps에서 인증·라이선싱을 받고, CODA가 CCS의 health·BGP·보유 파일 데이터로 순위 매긴 OCA URL 목록을 돌려주면, 이후 비디오 바이트는 AWS를 전혀 거치지 않고 OCA에서 직접 흐른다.
장애 국면이 이 설계의 백미다 — 서빙 중인 OCA가 죽어도 클라이언트는 AWS에 다시 묻지 않고, 이미 손에 든 목록의 다음 URL로 전환한다. 폴백 경로를 재생 시작 시점에 미리 배포해 둔 것이다.
왜 요청 시 캐싱이 아니라 밤에 미리 채우는가
일반 CDN은 카탈로그가 무한(전체 웹)이라 요청이 와야 무엇을 캐시할지 안다. Netflix는 반대 조건이다 — 카탈로그가 유한하고, 무엇이 언제 어디서 인기 있을지 시청 데이터로 꽤 정확히 예측된다. 그래서 트래픽이 한산한 밤에 미리 채워, 피크 시간대에 원본까지 거슬러 올라가는 상류 대역폭 수요를 자릿수 단위로 줄인다.
fill 서열(peer → tier → cache)도 같은 논리다. 같은 manifest cluster의 이웃 OCA에서 먼저 받고, 없으면 더 먼 OCA, 최후에만 S3로 간다 — 비싼 회선일수록 나중에 쓴다.
peer fill: 같은 manifest cluster(같은 서브넷)의 이웃 OCA에서
tier fill: 그 밖의 더 먼 OCA에서
cache fill: 최후의 수단으로 S3(오리진)에서 직접
AWS가 다운되면 시청이 멈추나
재생 중인 스트림은 계속된다. 비디오는 OCA가 직접 서빙하고 있고, 클라이언트는 폴백용 OCA URL 목록까지 이미 갖고 있기 때문이다. 영향을 받는 건 '새 재생 시작' — 인증과 스티어링은 control plane의 일이라서다. 결정과 전달을 갈라 둔 분리가 장애 반경도 갈라 놓는다.
한 대의 OCA가 전체 카탈로그를 갖고 있지도 않다. storage appliance가 최대 약 120TB, global appliance는 최대 약 60TB라 인기 콘텐츠만 가까이 두고, 비인기 타이틀은 캐시 미스로 처리해 IXP의 더 큰 OCA 등 상위 계층에서 서빙한다. 어느 경로든 비디오는 100% Open Connect이며, 전 세계 Netflix 트래픽의 약 95%가 Open Connect와 ISP의 직접 연결로 흐른다.
기억할 것
control plane(AWS: Playback Apps·CODA·CCS)은 결정, data plane(OCA)은 전달 — 비디오 바이트는 AWS를 거치지 않는다.
콘텐츠는 요청 시가 아니라 야간 fill window에 미리 채운다 — 유한한 카탈로그 + 인기도 예측이 이를 가능케 한다.
fill 서열은 peer → tier → cache(S3) — 비싼 회선일수록 최후에 쓴다.
클라이언트는 순위 매겨진 OCA URL 목록을 받아 두므로, OCA 장애 시 AWS 왕복 없이 다음 URL로 폴백한다.
per-title encoding이 타이틀별 비트레이트 사다리를 만들어 20~30%를 절감하고, adaptive bitrate가 그 사다리를 오르내린다.