BLOG | NGINX

Por qué Netflix eligió NGINX como el corazón de su CDN

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Tony Mauro
Tony Mauro
Publicado el 25 de marzo de 2015

En los pocos años transcurridos desde su introducción, el servicio de transmisión de video en línea de Netflix ha crecido hasta contar con más de 50 millones de suscriptores en 40 países. Ya hemos compartido algunas de las mejores prácticas que adoptaron los ingenieros de desarrollo de software de Netflix a medida que pasaban de un proceso de desarrollo monolítico tradicional a la entrega continua y los microservicios, en Adopción de microservicios en Netflix: Lecciones de diseño arquitectónico y adopción de microservicios en Netflix: Lecciones para el diseño de equipos y procesos .

Gleb-Smirnoff-nginx.conf2014
El desarrollador de NGINX, Gleb Smirnoff, en nginx.conf2014

En esta publicación, analizaremos otro factor clave para el éxito de Netflix: su red de distribución de contenidos (CDN), Open Connect . Estamos orgullosos de que NGINX funcione en todos los dispositivos de distribución Open Connect y de que tenga un papel clave en la capacidad de Netflix de seguir el ritmo del crecimiento explosivo del servicio de video. Gleb Smirnoff de NGINX ha trabajado junto al equipo de Open Connect durante más de dos años y en octubre pasado, en nuestra conferencia de usuarios, nginx.conf2014, explicó por qué Netflix eligió NGINX (junto con FreeBSD) para impulsar esta parte crucial de su negocio.

¿Por qué Netflix creó su propia CDN?

Netflix inicialmente subcontrató la distribución de video en streaming a tres grandes proveedores de CDN (Akamai, Level3 y LimeLight). A medida que el servicio se hizo más popular, Netflix decidió que tenía sentido construir y administrar su propia CDN, por varias razones:

  • Desde una perspectiva práctica , los proveedores de CDN estaban luchando por expandir su infraestructura a un ritmo que coincidiera con el crecimiento de la demanda de los clientes de transmisión de video de Netflix.
  • Desde una perspectiva financiera , el gasto de subcontratación rápidamente se estaba volviendo prohibitivo a medida que aumentaba el volumen de video transmitido (un desafío que experimentaban muchas aplicações y propiedades web populares).
  • Desde una perspectiva comercial , estaba claro que el streaming de video estaba reemplazando al préstamo de DVD como la principal fuente de ingresos de Netflix, y no tenía sentido externalizar una parte crítica del negocio principal de la empresa.

Lo más importante es que Netflix construyó su propia CDN para tener un mayor control sobre la entrega de aplicação y la experiencia del usuario. Para brindar una distribución óptima de contenido multimedia en streaming a los clientes, Netflix necesitaba maximizar su control sobre los tres componentes básicos de la cadena de distribución:

  • El reproductor de vídeo del usuario. Netflix ya controlaba este componente, porque sus desarrolladores escriben todas las aplicaciones específicas de cada dispositivo que utilizan los clientes para ver el contenido de Netflix.
  • La red entre el usuario y los servidores de Netflix. No hay manera de controlar este componente directamente, pero Netflix minimiza la distancia de la red a sus clientes al brindar dispositivos de transmisión de video gratuitos a los ISP a cambio de espacio en rack en los centros de datos del ISP para alojar los dispositivos. (Los dispositivos también se colocan en puntos de intercambio de Internet [IXP] para atender a clientes cuyos ISP no están interesados en alojar equipos de terceros). La transmisión de video es particularmente sensible a los retrasos y pérdidas de paquetes, las llegadas mal ordenadas y los tiempos de ida y vuelta impredecibles (inestables) inherentes al TCP/IP, y minimizar la distancia de la red reduce la posible exposición a estas anomalías.
  • El servidor de vídeo (Open Connect en sí). Al ejecutar su propia CDN, Netflix tiene la libertad de ajustar el software de CDN para compensar las anomalías de Internet tanto como sea posible. Puede ejecutar algoritmos de control de conexión TCP personalizados y módulos HTTP. También puede detectar problemas en el servidor y la red muy rápidamente y redirigir a los clientes a servidores alternativos, para luego iniciar sesión en el hardware del servidor y solucionar problemas "desde adentro".

Netflix pudo optimizar Open Connect para la transmisión de video de una manera que no es posible con una CDN genérica proporcionada por un proveedor. Open Connect permite a Netflix ofrecer una experiencia de usuario superior a un costo menor y con mayor visibilidad del rendimiento de la aplicação en todo el mundo.

¿Por qué Netflix eligió NGINX y FreeBSD?

Desde el principio, el objetivo de Netflix fue, como dice Gleb, “obtener cada vez más gigabits por segundo desde un solo dispositivo”. En concreto, Netflix necesitaba maximizar el número de suscriptores que cada dispositivo podía atender simultáneamente. Los ingenieros de Open Connect anticiparon la necesidad de perfeccionar el software para lograr este objetivo, por lo que decidieron utilizar open source software por su extensibilidad ilimitada.

Como se mencionó anteriormente, Netflix coloca sus dispositivos de transmisión de video en los centros de datos de los ISP de sus clientes cuando es posible. Dado que el software que se ejecuta en los dispositivos estaría en manos de terceros, Netflix eligió proyectos que utilizan una licencia estilo BSD en lugar de la Licencia Pública GNU (GPL).

Los proyectos específicos de código abierto que eligió Netflix fueron:

  • FreeBSD como sistema operativo, porque se sabe que es rápido y estable. La comunidad de desarrolladores es fuerte y está dispuesta a trabajar con los proveedores.
  • NGINX como servidor de transmisión multimedia. Su velocidad y estabilidad demostradas fueron importantes porque Netflix quería lanzar Open Connect lo más rápido posible, sin necesidad de modificarlo para empezar. Una vez que la CDN estuvo en funcionamiento, Netflix pudo examinar los patrones de tráfico y ajustar la configuración de NGINX.

    Otro beneficio de NGINX es que, aunque el open source software se distribuye bajo una licencia estilo BSD, todos sus desarrolladores principales son empleados a tiempo completo de NGINX, Inc., que brinda soporte de clase empresarial para su producto comercial, NGINX Plus . En este sentido, combina las mejores características del OSS y del software comercial.

    El marco flexible de NGINX para ejecutar módulos personalizados también atrajo a Netflix, y el equipo de Open Connect creó módulos específicos para sus necesidades de transmisión de video.

La combinación de FreeBSD y NGINX produce más beneficios:

  • El diseño basado en eventos de NGINX es una de las claves de su excelente rendimiento, y la llamada al sistema de notificación de eventos kqueue de FreeBSD es una de las mejores API para E/S multiplexada.
  • Sin necesidad de realizar ninguna modificación, NGINX puede utilizar la llamada al sistema sendfile junto con la llamada al sistema aio_read . En conjunto, las llamadas evitan el bloqueo en la E/S del disco, lo que genera un rendimiento excepcional.

NGINX Plus y NGINX también pueden optimizar la entrega de sus aplicação

Desde su inicio, NGINX fue diseñado para ser adaptable y soportar todos los aspectos de la entrega de aplicação . Para que sea más fácil para nuestros clientes comerciales implementar aplicações similares a Netflix, NGINX Plus combina servicio web, equilibrio de carga, almacenamiento en caché de contenido y transmisión multimedia en un paquete fácil de usar. Conozca nuestros casos de estudio para aprender cómo otras empresas líderes utilizan NGINX Plus para ofrecer sus aplicações con rendimiento, seguridad y escala.

Disfrutamos trabajando en estrecha colaboración con los clientes, brindándoles orientación sobre cómo aprovechar al máximo NGINX Plus en sus arquitecturas de entrega de aplicação específicas. Nuestros equipos de soporte y servicios profesionales pueden ayudarlo con orientación arquitectónica, instalación, configuración, actualizaciones y más. Contáctanos para obtener más información.

Grabación de vídeo


"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.