Por qué Netflix eligió NGINX como núcleo de su CDN

NGINX | 25 de marzo de 2015

En los pocos años transcurridos desde su lanzamiento, el servicio de streaming de vídeo online de Netflix ha crecido hasta superar los 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 durante la transición de un proceso de desarrollo monolítico tradicional a la entrega continua y los microservicios, en Adopción de microservicios en Netflix: lecciones para el diseño de la arquitectura y Adopción de microservicios en Netflix: lecciones para el diseño de equipos y procesos.

El desarrollador de NGINX Gleb Smirnoff en nginx.conf2014

En este artículo, hablaremos de otro elemento fundamental para el éxito de Netflix: su red de distribución de contenidos (CDN), Open Connect. Nos enorgullece que NGINX se ejecute en todos los dispositivos de distribución de Open Connect y desempeñe un papel clave para que Netflix pueda seguir el ritmo del crecimiento explosivo de su servicio de vídeo. Gleb Smirnoff, de NGINX, lleva más de dos años colaborando con el equipo de Open Connect y, el pasado mes de octubre, durante nuestra conferencia de usuarios nginx.conf2014, explicó por qué Netflix eligió NGINX (junto con FreeBSD) para sustentar esta parte crucial de su negocio.

Por qué Netflix creó su propia CDN

Al principio, Netflix externalizó la distribución de vídeo en streaming a tres grandes proveedores de CDN (Akamai, Level3 y LimeLight). A medida que el servicio fue ganando popularidad, Netflix decidió que tenía sentido crear y gestionar su propia CDN por varios motivos:

  • Desde un punto de vista práctico, los proveedores de CDN tenían dificultades para ampliar su infraestructura al ritmo del crecimiento de la demanda de los clientes del servicio de streaming de vídeo de Netflix.
  • Desde una perspectiva financiera, el coste de la externalización se estaba volviendo rápidamente prohibitivo a medida que aumentaba el volumen de vídeo transmitido (un problema al que se enfrentan muchas aplicaciones y sitios web populares).
  • Desde una perspectiva empresarial estaba claro que el streaming de vídeo estaba sustituyendo al alquiler de DVD como principal fuente de ingresos de Netflix, y no tenía sentido externalizar una parte fundamental de la actividad principal de la empresa.

Y, lo que es más importante, Netflix creó su propia CDN para tener un mayor control sobre la entrega de aplicaciones y la experiencia de usuario. Para ofrecer a sus clientes una distribución óptima de contenidos multimedia en streaming, 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, puesto que sus desarrolladores crean todas las aplicaciones específicas para cada dispositivo que los clientes utilizan para ver el contenido de Netflix.
  • La red entre el usuario y los servidores de Netflix. No hay forma de controlar directamente este componente, pero Netflix minimiza la distancia de red hasta sus clientes proporcionando dispositivos gratuitos de transmisión de vídeo a los proveedores de servicios de Internet (ISP) a cambio de espacio en los racks de sus centros de datos para alojarlos. (También se instalan dispositivos en puntos de intercambio de Internet [IXP] para prestar servicio a los clientes cuyos ISP no están interesados en alojar equipos de terceros). La transmisión de vídeo es especialmente sensible al retraso y la pérdida de paquetes, a su llegada desordenada y a los tiempos de ida y vuelta impredecibles (con fluctuaciones) inherentes a TCP/IP; reducir al mínimo la distancia de red limita la posible exposición a estas anomalías.
  • El servidor de vídeo (el propio Open Connect). Al operar su propia CDN, Netflix tiene libertad para ajustar el software de la CDN con el fin de compensar en la medida de lo posible las anomalías de Internet. Puede ejecutar algoritmos personalizados de control de conexiones TCP y módulos HTTP. También puede detectar con gran rapidez problemas en los servidores y la red, redirigir a los clientes a servidores alternativos y, a continuación, acceder al hardware del servidor y solucionar los problemas «desde dentro».

Netflix pudo optimizar Open Connect para la transmisión de vídeo de una forma que no sería posible con una CDN genérica proporcionada por un proveedor. Open Connect permite a Netflix ofrecer una experiencia de usuario superior a un coste menor y tener una mayor visibilidad del rendimiento de la aplicación en todo el mundo.

Por qué Netflix eligió NGINX y FreeBSD

Desde el principio, el objetivo de Netflix era, como dice Gleb, «obtener cada vez más gigabits por segundo de una sola máquina». En concreto, Netflix necesitaba maximizar el número de suscriptores a los que cada dispositivo podía prestar servicio simultáneamente. Los ingenieros de Open Connect previeron que tendrían que ajustar el software para alcanzar este objetivo, por lo que optaron por software de código abierto debido a sus posibilidades ilimitadas de ampliación.

Como se ha mencionado anteriormente, siempre que es posible, Netflix instala sus dispositivos de transmisión de vídeo en los centros de datos de los proveedores de servicios de Internet de sus clientes. Dado que el software que se ejecuta en los dispositivos quedaría en manos de terceros, Netflix optó por proyectos que utilizan una licencia de tipo BSD en lugar de la Licencia Pública General de GNU (GPL).

Los proyectos de código abierto concretos que eligió Netflix fueron:

  • FreeBSD como sistema operativo, porque es conocido por ser rápido y estable. La comunidad de desarrolladores es sólida y está dispuesta a colaborar con los proveedores.
  • NGINX como servidor de streaming multimedia. Su velocidad y estabilidad demostradas eran importantes porque Netflix quería lanzar Open Connect lo antes posible, sin tener que realizar ajustes para ponerlo en marcha. Una vez que la CDN estuvo operativa, Netflix pudo analizar los patrones de tráfico y optimizar la configuración de NGINX. Otra ventaja de NGINX es que, aunque el software de código abierto se distribuye bajo una licencia de tipo BSD, todos sus desarrolladores principales son empleados a tiempo completo de NGINX, Inc., que ofrece soporte de nivel empresarial para su producto comercial, NGINX Plus. En este sentido, combina las mejores características del software de código abierto y del software comercial. El flexible entorno de NGINX para ejecutar módulos personalizados también resultó atractivo para Netflix, y el equipo de Open Connect ha creado módulos específicos para sus necesidades de streaming de vídeo.

La combinación de FreeBSD y NGINX ofrece ventajas adicionales:

  • El diseño basado en eventos de NGINX es una de las claves de su extraordinario 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, estas llamadas evitan el bloqueo en las operaciones de E/S de disco, lo que se traduce en un rendimiento excepcional.

NGINX Plus y NGINX también pueden optimizar la entrega de sus aplicaciones

Desde sus inicios, NGINX se diseñó para ser adaptable y cubrir todos los aspectos de la entrega de aplicaciones. Para facilitar a nuestros clientes comerciales la implementación de aplicaciones similares a Netflix, NGINX Plus combina servidor web, balanceo de carga, almacenamiento en caché de contenido y streaming multimedia en un único paquete fácil de usar. Consulte nuestros casos de éxito para descubrir cómo otras empresas líderes utilizan NGINX Plus para ofrecer sus aplicaciones con rendimiento, seguridad y escalabilidad.

Nos gusta colaborar estrechamente con nuestros clientes y asesorarlos sobre cómo sacar el máximo partido a NGINX Plus en sus arquitecturas específicas de entrega de aplicaciones. Nuestros equipos de Soporte y Servicios profesionales pueden ayudarle con el diseño de la arquitectura, la instalación, la configuración, las actualizaciones y mucho más. Póngase en contacto con nosotros para obtener más información.

Grabación de vídeo

Compartir
Etiquetas: F5 NGINX, Tech

Artículos relacionados del blog

Únete a F5 NGINX en AppWorld 2024
NGINX | 04/01/2024

Únete a F5 NGINX en AppWorld 2024

Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
NGINX | 26/09/2023

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source

La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.

Exposición de APIs en Kubernetes
NGINX | 10/03/2022

Exposición de APIs en Kubernetes

La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
NGINX | 23/08/2021

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto

Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.

Presentamos NGINX Plus R22
NGINX | 09/06/2020

Presentamos NGINX Plus R22

NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.

Presentamos NGINX Plus R17
NGINX | 11/12/2018

Presentamos NGINX Plus R17

NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.