시스템 설계 인터뷰: Netflix 설계하기
'Netflix를 설계하라'는 읽기 중심의 문제이며, 하나의 사실이 지배합니다. 전 세계 규모로 동영상을 서비스하는 것은 연산보다는 콘텐츠 전송과 저장의 문제라는 점입니다. 면접관은 탐색, 검색, 추천 같은 제어 플레인과 실제로 바이트를 전송하는 데이터 플레인을 분리하고, 페타바이트 규모의 데이터를 사용자 가까이 전달하는 방법에 대해 추론하는 모습을 보고 싶어 합니다.
순서대로 진행하세요: 요구사항을 명확히 하고, 규모를 추정하고, 업로드/트랜스코딩 파이프라인을 설계하고, 그다음 CDN을 통한 재생 경로를 설계한 뒤, 적응형 비트레이트와 트레이드오프로 마무리하세요. 아래 워크스루는 이 구조를 따르므로 아키텍처를 외우는 것이 아니라 추론 과정을 연습할 수 있습니다.
1. 요구사항 명확히 하기
기능 요구사항과 비기능 요구사항을 분리하고 범위를 엄격히 정하세요. 핵심은 사용자가 카탈로그를 탐색하고 기기와 네트워크 환경이 달라도 매끄럽게 동영상을 스트리밍할 수 있어야 한다는 것입니다.
- 기능 요구사항: 카탈로그 탐색/검색, 재생 시작, 적응형 품질, 이어보기, 여러 기기 지원.
- 비기능 요구사항: 매우 높은 가용성, 낮은 시작 지연, 매끄러운 재생(끊김 없음), 전 세계적 범위.
- 범위 밖(명시적으로 말하기): 추천 ML의 내부 구현, 결제, DRM 세부 사항 — 언급하고 뒤로 미루세요.
2. 규모 추정하기
숫자가 CDN 중심 설계를 뒷받침합니다. 수억 명의 구독자와 피크 시 수백만 개의 동시 스트림이 있다고 가정하세요. 하나의 스트림은 수 Mbps를 소비하므로, 총 전송량은 초당 수십 테라비트에 달합니다 — 소수의 중앙 데이터센터에서 서비스하는 것은 불가능하며, 이는 즉시 엣지 캐싱을 정당화합니다.
3. 수집과 트랜스코딩 파이프라인
업로드된 마스터 파일은 재생 경로가 아니라 오프라인에서 처리됩니다. 각 콘텐츠는 여러 해상도와 비트레이트로 다수의 렌디션으로 트랜스코딩되고, 적응형 스트리밍을 위해 몇 초 단위의 작은 세그먼트로 분할됩니다.
- 트랜스코딩 팜: 마스터 파일을 여러 비트레이트의 H.264/H.265/AV1 렌디션으로 변환한다. 이는 병렬화하기 쉬운 배치 작업이다.
- 세그먼트화와 패키징: 각 렌디션을 짧은 세그먼트로 나누고, 이를 설명하는 매니페스트(HLS/DASH)를 생성한다.
- 출력을 원본 데이터로서 오브젝트 스토리지(S3류)에 저장한 뒤, 인기 있는 콘텐츠를 엣지로 푸시한다.
4. CDN과 재생 경로
재생은 오리진이 아니라 엣지에서 제공됩니다. 동영상 세그먼트는 사용자와 물리적으로 가까운 CDN 노드에 캐시됩니다(Netflix는 ISP 내부에 자체 Open Connect 장비를 운영합니다). 클라이언트는 매니페스트를 가져온 다음 가장 가까운 정상 엣지 노드에서 세그먼트를 가져옵니다.
제어 플레인(카탈로그, 검색, 사용자 프로필, '이어보기')은 각자 자체 데이터베이스와 캐시를 갖춘 독립된 무상태 API 서비스 집합입니다. 메타데이터와 매니페스트 URL을 반환할 뿐, 무거운 바이트 전송과는 완전히 분리되어 있습니다.
- 엣지 캐시(CDN/Open Connect): 바이트의 대부분을 전송한다. 수요가 생기기 전에 지역별로 인기 콘텐츠를 사전 배치한다.
- 오리진 스토리지: 캐시 미스를 뒷받침하는 오브젝트 스토어.
- 제어 플레인 API: 카탈로그, 재생 인증, 북마크 — 작은 페이로드, 수평 확장, 캐시가 앞단에 위치.
5. 적응형 비트레이트 스트리밍
가변적인 네트워크 환경에서의 매끄러운 재생은 서버가 아니라 클라이언트에서 나옵니다. 플레이어는 처리량과 버퍼 수준을 모니터링하고, 매니페스트의 렌디션 목록을 사용해 세그먼트 사이에서 품질을 올리거나 내립니다 — 빠른 연결에서는 더 높은 비트레이트, 느린 연결에서는 끊김을 피하기 위해 더 낮은 비트레이트로 전환합니다.
6. 언급해야 할 트레이드오프
면접관이 듣고 싶어 하는 긴장 관계를 짚으며 마무리하세요: 모든 렌디션을 사전 계산하는 저장 비용 대 즉석 트랜스코딩의 지연(Netflix는 사전 계산을 선택합니다 — 저장이 시작 지연보다 저렴합니다), 모든 것을 캐시하는 것 대 엣지에서 인기 있는 것만 캐시하는 것(롱테일 카탈로그는 모든 엣지에 전부 둘 수 없습니다), 그리고 '이어보기' 같은 제어 플레인 데이터에 대한 강한 일관성 대 최종 일관성(최종 일관성이면 충분합니다). 이를 명시적으로 짚는 것이 답변을 시니어급으로 만듭니다.
실시간 도움으로 Netflix 시스템 설계 연습하기
Natively의 시스템 설계 인터뷰 어시스턴트는 실시간 라운드 중에도 당신이 구조를 잃지 않도록 다음에 다뤄야 할 차원을 제안하고 트레이드오프를 실시간으로 보여줍니다. 모든 것이 당신의 기기에서만 이루어집니다.
