Friday, February 9, 2018

Así de “sencillo” funciona Netflix

Parte II

¿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, trans-codificació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 varias computadoras, 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 computadoras 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. Sabe qué vídeos le han llamado la atención a los usuarios pero finalmente decidieron no ver. 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 te incita a ver más vídeos usando sus capacidades de análisis de datos. Cuando te pones a buscar algo para ver 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.

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, digamos que cuando se mostraba la imagen de grupo del centro, la serie 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á?
Si te gustan las comedias, te enseñará una imagen en la que sale Robin Williams. Si prefieres las películas románticas, te enseñará una imagen de Matt Damon y Minnie Driver a punto de darse un beso.

Enseñándote a Robin Williams, te está diciendo que probablemente habrá humor en la película y, como 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 no te cobra por la cantidad de vídeos que ves y lo que busca es que no te arrepientas.

La empresa 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 utiliza el análisis de datos, algo que utiliza en todos los aspectos de la aplicación.

Recomendaciones

Por lo general, 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 ha sido escogido específicamente para ti gracias al aprendizaje automático.

Trans-codificació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, tienen que pasarlo a un formato idóneo para tu dispositivo. Este proceso se conoce como trans-codificación o codificación.

La trans-codificación es el proceso por el cual se pasa un archivo de vídeo de un formato a otro para que se pueda ver 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 las supercomputadoras!

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 se hace es pasar mucho tiempo validando el vídeo. Busca artefactos digitales, cambios de color o fotogramas perdidos durante intentos de trans-codificació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 se 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, 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 utilizará 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.

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' 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.

Cortesía de un culichi que antes era chilango: