블로그 | NGINX

Netflix가 CDN의 심장으로 NGINX를 선택한 이유

NGINX-F5-수평-검정-유형-RGB의 일부
토니 마우로 썸네일
토니 마우로
2015년 3월 25일 게시

넷플릭스의 온라인 비디오 스트리밍 서비스는 출시 이후 몇 년 만에 40개국에서 5,000만 명이 넘는 구독자에게 서비스를 제공하며 성장했습니다. Netflix의 소프트웨어 개발 엔지니어가 기존의 모놀리식 개발 프로세스에서 지속적인 배포 및 마이크로서비스로 전환하면서 도입한 모범 사례 중 일부를 Netflix의 마이크로서비스 도입에서 이미 공유했습니다. 건축 설계를 위한 교훈 그리고 Netflix에서 마이크로서비스 도입: 팀 및 프로세스 설계를 위한 교훈 .

글렙-스미르노프-nginx.conf2014
nginx.conf2014에서의 NGINX 개발자 Gleb Smirnoff

이 글에서는 Netflix의 성공을 뒷받침하는 또 다른 핵심 요소인 콘텐츠 전송 네트워크(CDN)인 Open Connect에 대해 알아보겠습니다. NGINX가 모든 Open Connect 전송 어플라이언스에서 실행되어 Netflix가 비디오 서비스의 폭발적 성장에 발맞추는 데 중요한 역할을 한다는 점을 자랑스럽게 생각합니다. NGINX의 글렙 스미르노프는 2년 넘게 Open Connect 팀과 함께 일해 왔으며, 작년 10월 사용자 컨퍼런스인 nginx.conf2014에서 Netflix가 이 중요한 사업 부분을 구동하기 위해 NGINX(FreeBSD와 함께)를 선택한 이유를 설명했습니다.

Netflix가 자체 CDN을 구축한 이유

Netflix는 처음에 스트리밍 비디오 전송을 3대 대형 CDN 공급업체(Akamai, Level3, LimeLight)에 아웃소싱했습니다. 서비스가 점점 더 인기를 얻자 Netflix는 여러 가지 이유로 자체 CDN을 구축하고 관리하는 것이 합리적이라고 결정했습니다.

  • 실제적인 관점에서 보면, CDN 공급업체는 Netflix의 비디오 스트리밍에 대한 고객 수요의 증가에 맞춰 인프라를 확장하는 데 어려움을 겪고 있었습니다.
  • 재정적인 관점에서 볼 때, 스트리밍 비디오의 양이 늘어나면서 아웃소싱 비용이 급격히 상승했습니다(많은 인기 있는 애플리케이션과 웹 속성이 겪는 과제).
  • 사업 적 관점에서 볼 때, DVD 대여가 비디오 스트리밍으로 대체되면서 Netflix의 주요 수익원이 되고 있다는 것은 분명했고, 회사의 주요 사업의 중요한 부분을 아웃소싱하는 것은 이치에 맞지 않았습니다.

가장 중요한 점은, Netflix가 애플리케이션 전송과 사용자 경험을 더 효과적으로 제어하기 위해 자체 CDN을 구축했다는 것입니다. Netflix는 고객에게 최적의 스트리밍 미디어 전송을 제공하기 위해 전송 체인의 세 가지 기본 구성 요소에 대한 제어를 극대화해야 했습니다.

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

Netflix는 공급업체가 제공하는 일반적인 CDN으로는 불가능한 방식으로 비디오 스트리밍을 위해 Open Connect를 최적화할 수 있었습니다. Open Connect를 통해 Netflix는 더 저렴한 비용으로 뛰어난 사용자 경험을 제공하고 전 세계적으로 애플리케이션 성능에 대한 가시성을 높일 수 있습니다.

Netflix가 NGINX와 FreeBSD를 선택한 이유

처음부터 Netflix의 목표는 Gleb의 표현대로 "단일 박스에서 초당 점점 더 많은 기가비트를 얻는 것"이었습니다. 구체적으로, Netflix는 각 기기가 동시에 서비스할 수 있는 가입자 수를 극대화해야 했습니다. Open Connect 엔지니어들은 이 목표를 달성하기 위해서는 소프트웨어를 미세하게 조정해야 할 것으로 예상했기 때문에, 무제한 확장성을 갖춘 오픈 소스 소프트웨어를 사용하기로 결정했습니다.

이전에 언급했듯이 Netflix는 가능한 경우 비디오 스트리밍 기기를 고객 ISP의 데이터 센터에 배치합니다. 기기에서 실행되는 소프트웨어가 제3자에 의해 관리되기 때문에 Netflix는 GNU Public License(GPL)보다는 BSD 스타일 라이선스를 사용하는 프로젝트를 선택했습니다.

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

  • 운영 체제로는 FreeBSD를 사용 하는데, 빠르고 안정적인 것으로 알려져 있습니다. 개발자 커뮤니티는 강력하며 공급업체와 협력할 의향이 있습니다.
  • 스트리밍 미디어 서버로 NGINX를 사용합니다 . Netflix는 가능한 한 빨리 Open Connect를 출시하고 싶었기 때문에 입증된 속도와 안정성이 중요했으며, 출시 후에도 별다른 조정이 필요 없었습니다. CDN이 가동되자 Netflix는 트래픽 패턴을 조사하고 NGINX 설정을 미세하게 조정할 수 있었습니다.

    NGINX의 또 다른 장점은 오픈소스 소프트웨어가 BSD 스타일 라이선스로 배포되지만 핵심 개발자는 모두 NGINX, Inc.의 정규 직원이라는 점입니다. NGINX, Inc.에서는 상용 제품인 NGINX Plus 에 대한 엔터프라이즈급 지원을 제공합니다. 이 점에서 OSS와 상용 소프트웨어의 가장 좋은 기능을 결합했습니다.

    사용자 정의 모듈을 실행하기 위한 NGINX의 유연한 프레임워크는 Netflix에도 매력적이었으며 Open Connect 팀은 해당 회사의 비디오 스트리밍 요구 사항에 맞는 모듈을 만들었습니다.

FreeBSD와 NGINX를 결합하면 다음과 같은 이점이 더 있습니다.

  • NGINX의 이벤트 기반 설계는 뛰어난 성능의 핵심 요소 중 하나이며, FreeBSD의 kqueue 이벤트 알림 시스템 호출은 멀티플렉스 I/O를 위한 최고의 API 중 하나입니다.
  • NGINX는 아무런 수정 없이 sendfile 시스템 호출을 aio_read 시스템 호출과 함께 사용할 수 있습니다. 이러한 호출을 통해 디스크 I/O 차단을 방지하여 뛰어난 성능을 얻을 수 있습니다.

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

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

우리는 고객과 긴밀히 협력하여 특정 애플리케이션 제공 아키텍처에서 NGINX Plus를 최대한 활용하는 방법에 대한 지침을 제공하는 것을 좋아합니다. 당사의 지원전문 서비스 팀은 아키텍처 지침, 설치, 구성, 업데이트 등에 관한 도움을 드릴 수 있습니다. 문의하기 더 알아보려면.

비디오 녹화


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."