넷플릭스 CDN 서비스 Core로 NGINX를 선택한 이유

넷플릭스 의 온라인 비디오 스트리밍 서비스는 출시 이후 몇 년 만에 40개국에서 5천만 명 이상의 구독자에게 서비스를 제공하는 규모로 성장해 왔습니다. 이미 넷플릭스 소프트웨어 개발 엔지니어가 기존의 모놀리식 개발 프로세스에서 지속적 배포 및 마이크로서비스로 전환하면서 채택한 모범 사례 중 일부를 “넷플릭스 의 마이크로서비스 도입”에서 공유한 바 있습니다: 아키텍처 설계 및 넷플릭스 의 마이크로서비스도입을 위한 교훈: 팀 및 프로세스 설계를 위한 교훈.

넷플릭스 발표

이 포스트에서는 넷플릭스 의 성공에 기여한 또 다른 핵심 요소인 콘텐츠 전송 네트워크(CDN)인 Open Connect에 대해 알아보겠습니다. 모든 Open Connect 전송 어플라이언스에서 NGINX가 실행되어 넷플릭스 가 비디오 서비스의 폭발적인 성장에 보조를 맞추는 데 핵심적인 역할을 하고 있다는 사실에 자부심을 느낍니다.

목차

1. 넷플릭스가 자체 CDN을 구축한 이유
2. 넷플릭스가 NGINX와 FreeBSD를 선택한 이유
3. NGINX Plus와 NGINX는 애플리케이션 전송도 최적화할 수 있습니다.

1. 넷플릭스 가 자체 CDN을 구축한 이유

넷플릭스 는 처음에 스트리밍 비디오 전송을 세 곳의 대형 CDN 공급업체(Akamai, Level3, LimeLight)에 아웃소싱 했습니다. 서비스가 인기를 끌면서 넷플릭스는 여러 가지 이유로 자체 CDN을 구축하고 관리하는 것이 합리적이라고 판단했습니다:

  • 현실적인 관점에서 CDN 공급업체들은 넷플릭스 의 비디오 스트리밍에 대한 고객 수요 증가 속도에 맞춰 인프라를 확장하는 데 어려움을 겪고 있었습니다.
  • 재정적인 측면에서는 스트리밍 비디오의 양이 증가함에 따라 아웃소싱 비용이 감당할 수 없을 정도로 빠르게 커지고 있었습니다(많은 인기 애플리케이션과 웹 프로퍼티가 겪고 있는 문제).
  • 비즈니스 측면에서는 비디오 스트리밍이 넷플릭스 의 주요 수익원으로서 DVD 대여를 대체하고 있었으며, 회사의 주요 비즈니스의 중요한 부분을 아웃소싱하는 것이 합리적이지 않다는 것이 분명했습니다.

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

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

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

2. 넷플릭스 가 NGINX와 FreeBSD를 선택한 이유

처음부터 넷플릭스의 목표는 “단일 박스에서 초당 Gigabit(Gbit)를 점점 더 많이 전송하는 것”이었다고 Gleb은 설명합니다. 특히 넷플릭스는 각 어플라이언스가 동시에 지원할 수 있는 구독자 수를 최대화해야 했습니다. Open Connect 엔지니어들은 이 목표를 달성하기 위해 소프트웨어를 미세 조정해야 할 것으로 예상했고, 무제한 확장성을 갖춘 오픈 소스 소프트웨어를 사용하기로 결정했습니다.

앞서 언급했듯이 넷플릭스는 가능한 경우 비디오 스트리밍 어플라이언스를 고객 ISP의 데이터 센터에 배치합니다. 어플라이언스에서 실행되는 소프트웨어는 third-party의 손에 달려 있기 때문에 넷플릭스는 GNU Public License(GPL)가 아닌 BSD-style의 라이선스를 사용하는 프로젝트를 선택했습니다.

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

  • 빠르고 안정적이라고 알려진 FreeBSD를 운영체제로 선택합니다. 개발자 커뮤니티가 강력하고 공급업체와 기꺼이 협력합니다.
  • 스트리밍 미디어 서버로 NGINX. 넷플릭스 는 Open Connect를 최대한 빨리 시작하고 싶었고, 시작하기 위해 조정할 필요도 없었기 때문에 검증된 속도와 안정성이 중요했습니다. CDN이 가동되고 나면 넷플릭스 는 트래픽 패턴을 조사하고 NGINX 설정을 미세 조정할 수 있었습니다.

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

    맞춤형 모듈을 실행할 수 있는 NGINX의 유연한 프레임워크도 넷플릭스 의 마음을 사로잡았고, Open Connect팀은 넷플릭스 의 비디오 스트리밍 요구 사항에 맞는 모듈을 만들었습니다.

FreeBSD와 NGINX를 결합하면 더 많은 이점을 얻을 수 있습니다:

  • NGINX의 이벤트 중심 설계는 뛰어난 성능의 핵심 중 하나이며, FreeBSD의 kqueue 이벤트 알림 시스템 호출은 multiplexed I/O를 위한 최고의 API 중 하나입니다.
  • 수정할 필요 없이 NGINX눈 sendfile 시스템 호출을 aio_read 시스템 호출과 함께 사용할 수 있습니다. 이 두 호출을 함께 사용하면 disk I/O에서 차단을 방지하여 뛰어난 성능을 발휘합니다.

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

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

NGINX STORE에서는 고객과 긴밀히 협력하여 특정 애플리케이션 전송 아키텍처에서 NGINX Plus를 최대한 활용하는 방법에 대한 지침을 제공합니다. 지원 및 전문 서비스팀은 아키텍처 지침, 설치, 구성, 업데이트 등에 대해 도움을 드릴 수 있습니다.

NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나, 지금 NGINX STORE에 연락하여 문의해보세요.

NGINX에 대한 최신 정보들을 빠르게 전달받고 싶으시다면, 아래의 뉴스레터를 구독하세요.

NGINX STORE를 통한 솔루션 도입 및 기술지원 무료 상담 신청

* indicates required