Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

NGINX | 2015년 3월 25일

넷플릭스의 온라인 동영상 스트리밍 서비스는 출시 후 불과 몇 년 만에 40개국에서 5천만 명 이상의 구독자에게 서비스를 제공할 정도로 성장했습니다. 넷플릭스의 소프트웨어 개발 엔지니어들이 기존의 모놀리식 개발 프로세스에서 지속적 배포와 마이크로서비스로 전환하면서 도입한 모범 사례 중 일부는 이미 「넷플릭스의 마이크로서비스 도입: 아키텍처 설계에서 얻은 교훈」과 「넷플릭스의 마이크로서비스 도입: 팀 및 프로세스 설계에서 얻은 교훈」에서 소개한 바 있습니다.

nginx.conf2014에 참석한 NGINX 개발자 Gleb Smirnoff

이 글에서는 Netflix의 성공을 이끈 또 하나의 핵심 요소인 콘텐츠 전송 네트워크(CDN), Open Connect에 대해 살펴보겠습니다. NGINX는 모든 Open Connect 전송 어플라이언스에서 실행되며, Netflix가 폭발적으로 성장하는 동영상 서비스의 속도에 발맞추는 데 핵심적인 역할을 하고 있습니다. NGINX의 Gleb Smirnoff는 2년 넘게 Open Connect 팀과 협력해 왔으며, 지난해 10월 열린 사용자 콘퍼런스 nginx.conf2014에서 Netflix가 이 핵심 비즈니스 영역을 지원하기 위해 FreeBSD와 함께 NGINX를 선택한 이유를 설명했습니다.

Netflix가 자체 CDN을 구축한 이유

Netflix는 처음에 스트리밍 동영상 전송을 3대 CDN 업체(Akamai, Level3, LimeLight)에 아웃소싱했습니다. 서비스의 인기가 높아지면서 Netflix는 다음과 같은 몇 가지 이유로 자체 CDN을 구축하고 관리하는 것이 합리적이라고 판단했습니다:

  • From a 실무적인 관점에서 보면, CDN 공급업체들은 Netflix 동영상 스트리밍에 대한 고객 수요 증가 속도에 맞춰 인프라를 확장하는 데 어려움을 겪고 있었습니다.
  • From a 재정적 관점에서 보면, 스트리밍 동영상의 양이 증가함에 따라 아웃소싱 비용이 빠르게 감당하기 어려운 수준으로 치솟고 있었습니다(많은 인기 애플리케이션과 웹사이트가 겪는 문제이기도 합니다).
  • From a 비즈니스 관점에서 볼 때, 비디오 스트리밍이 DVD 대여를 대체해 Netflix의 주요 수익원으로 자리 잡고 있음이 분명했으며, 회사의 핵심 사업에서 중요한 부분을 외부에 위탁하는 것은 합리적이지 않았습니다.

무엇보다도 Netflix는 애플리케이션 전송과 사용자 경험을 더욱 효과적으로 제어하기 위해 자체 CDN을 구축했습니다. 고객에게 최적의 스트리밍 미디어 전송 서비스를 제공하려면 전송 체인의 세 가지 기본 구성 요소에 대한 제어력을 극대화해야 했습니다:

  • 사용자의 동영상 플레이어. Netflix는 고객이 Netflix 콘텐츠를 시청할 때 사용하는 모든 기기별 앱을 자체 개발자들이 제작하므로 이미 이 구성 요소를 제어하고 있었습니다.
  • 사용자와 Netflix 서버 사이의 네트워크. 이 구성 요소를 직접 제어할 방법은 없지만, Netflix는 ISP의 데이터 센터에서 어플라이언스를 설치할 랙 공간을 제공받는 대신 ISP에 무료 동영상 스트리밍 어플라이언스를 제공하여 고객과의 네트워크 거리를 최소화합니다. (타사 장비 설치에 관심이 없는 ISP의 고객에게 서비스를 제공하기 위해 인터넷 익스체인지 포인트[IXP]에도 어플라이언스를 배치합니다.) 동영상 스트리밍은 TCP/IP에 내재된 패킷 지연 및 손실, 순서가 뒤바뀐 패킷 도착, 예측할 수 없는(변동이 심한) 왕복 시간에 특히 민감하며, 네트워크 거리를 최소화하면 이러한 이상 현상에 노출될 가능성을 줄일 수 있습니다.
  • 비디오 서버(Open Connect 자체). Netflix는 자체 CDN을 운영함으로써 인터넷상의 이상 현상을 최대한 보완할 수 있도록 CDN 소프트웨어를 자유롭게 조정할 수 있습니다. 맞춤형 TCP 연결 제어 알고리즘과 HTTP 모듈을 실행할 수 있으며, 서버 및 네트워크 문제를 매우 빠르게 감지해 클라이언트를 대체 서버로 재라우팅한 다음 서버 하드웨어에 로그인하여 ‘내부에서’ 문제를 해결할 수도 있습니다.

Netflix는 공급업체가 제공하는 범용 CDN으로는 불가능한 방식으로 동영상 스트리밍에 맞게 Open Connect를 최적화할 수 있었습니다. Open Connect를 통해 Netflix는 더 낮은 비용으로 우수한 사용자 경험을 제공하는 동시에 전 세계 애플리케이션 성능을 더욱 면밀하게 파악할 수 있습니다.

Netflix가 NGINX와 FreeBSD를 선택한 이유

처음부터 Netflix의 목표는 Gleb의 표현을 빌리자면 “단일 장비에서 초당 처리할 수 있는 기가비트 수를 계속 늘리는 것”이었습니다. 구체적으로 Netflix는 각 어플라이언스가 동시에 서비스할 수 있는 구독자 수를 극대화해야 했습니다. Open Connect 엔지니어들은 이 목표를 달성하려면 소프트웨어를 세밀하게 조정해야 할 것으로 예상했기 때문에, 확장에 제약이 없는 오픈 소스 소프트웨어를 선택했습니다.

앞서 언급했듯이 Netflix는 가능한 경우 고객이 이용하는 인터넷 서비스 제공업체(ISP)의 데이터 센터에 동영상 스트리밍 어플라이언스를 배치합니다. 어플라이언스에서 실행되는 소프트웨어가 제3자의 관리하에 놓이게 되므로, Netflix는 GNU 일반 공중 사용 허가서(GPL) 대신 BSD 스타일 라이선스를 사용하는 프로젝트를 선택했습니다.

Netflix가 선택한 구체적인 오픈 소스 프로젝트는 다음과 같습니다:

  • FreeBSD를 운영 체제로 선택했습니다. 빠르고 안정적인 것으로 잘 알려져 있기 때문입니다. 개발자 커뮤니티도 탄탄하며 공급업체와 적극적으로 협력합니다.
  • NGINX를 스트리밍 미디어 서버로 선택했습니다. Netflix는 별도의 조정 없이도 Open Connect를 최대한 빠르게 출시하고자 했기 때문에, 이미 입증된 NGINX의 속도와 안정성이 중요했습니다. CDN이 가동된 후에는 트래픽 패턴을 분석하고 NGINX 설정을 세밀하게 조정할 수 있었습니다. NGINX의 또 다른 장점은 오픈 소스 소프트웨어가 BSD 스타일 라이선스로 배포되지만, 핵심 개발자 모두가 NGINX, Inc.의 정규직 직원이라는 점입니다. NGINX, Inc.는 자사의 상용 제품인 NGINX Plus에 엔터프라이즈급 지원을 제공합니다. 이런 점에서 NGINX는 오픈 소스 소프트웨어와 상용 소프트웨어의 장점을 모두 갖추고 있습니다. 사용자 지정 모듈을 실행할 수 있는 NGINX의 유연한 프레임워크 역시 Netflix에 매력적이었으며, Open Connect 팀은 자사의 동영상 스트리밍 요구 사항에 특화된 모듈을 개발했습니다.

FreeBSD와 NGINX를 함께 사용하면 다음과 같은 추가 이점을 얻을 수 있습니다:

  • NGINX의 이벤트 기반 설계는 탁월한 성능을 구현하는 핵심 요소 중 하나이며, FreeBSD의 kqueue 이벤트 알림 시스템 호출은 다중화 I/O를 위한 최고의 API 중 하나입니다.
  • 별도의 수정 없이 NGINX는 sendfile 시스템 호출을 aio_read 시스템 호출과 함께 사용할 수 있습니다. 이 두 호출을 함께 사용하면 디스크 I/O로 인한 블로킹을 방지하여 탁월한 성능을 구현할 수 있습니다.

NGINX Plus와 NGINX로 애플리케이션 전송도 최적화할 수 있습니다

NGINX는 처음부터 유연하게 적용할 수 있고 애플리케이션 전송의 모든 측면을 지원하도록 설계되었습니다. 상용 고객이 Netflix와 같은 애플리케이션을 더 쉽게 배포할 수 있도록 NGINX Plus는 웹 서비스, 로드 밸런싱, 콘텐츠 캐싱 및 미디어 스트리밍을 사용하기 쉬운 하나의 패키지로 통합합니다. 다른 선도 기업들이 NGINX Plus를 활용하여 뛰어난 성능과 보안, 확장성을 갖춘 애플리케이션을 제공하는 방법을 알아보려면 사례 연구를 확인해 보세요.

저희는 고객과 긴밀히 협력하며 고객의 특정 애플리케이션 전송 아키텍처에서 NGINX Plus를 최대한 활용할 수 있도록 안내해 드리고 있습니다. 저희 지원 및 전문 서비스 팀은 아키텍처 안내, 설치, 구성, 업데이트 등을 지원해 드립니다. 자세한 내용은 문의해 주세요.

동영상 녹화

공유
태그: F5 NGINX, Tech

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.