viernes, 2 de febrero de 2018

Así de “sencillo” funciona Netflix

Parte I

Netflix parece algo tan sencillo: le das clic 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 distribuye sus vídeos utilizando AWS (el servicio de computación en la nube de Amazon). Le das clic 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 sus impresionantes estadísticas en 2017:



·         Tiene más de 110 millones de suscriptores.
·         Está disponible en más de 200 países.
·         Obtiene casi 3.000 millones de dólares en beneficios por trimestre.
·         Añade más de 5 millones de nuevos suscriptores por trimestre.
·         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.
·         Reprodujo 250 millones de horas de vídeo en un solo día en 2017.
·         Representa más del 37% del pico de tráfico de Internet en los Estados Unidos.
·         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 la empresa se basa en un modelo de suscripciones: los miembros le pagan una cuota mensual que pueden cancelar en cualquier momento. Cuando le das al play para disfrutar de su contenido, 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 esta empresa 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, 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, 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 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 por dentro.

¿Cómo se asegura Netflix de que sus suscriptores están contentos? Gracias a la nube, por supuesto. En realidad, 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.


Reed Hastings, fundador y CEO de Netflix 1

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 los vídeos: puede ser una aplicación en el smarphone, una página web desde la computadora 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 hagas clic 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. Ésta almacena los vídeos 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 una red de distribución de contenidos.
Curiosamente, en realidad en Netflix no hay un botón de play, sino que dice reproducir vídeo. Cada industria tiene su propia jerga.
Al controlar las tres áreas (cliente, servidor backend y red de entrega de contenidos), la empresa 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 hacer todo esto.

En 2008, Netflix empezó a trasladarse a AWS

La empresa nació 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 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 de su sitio web en sus computadoras o mediante el software propietario en varias plataformas compatibles, incluyendo smartphones y tabletas, reproductores de contenidos digitales, videoconsolas y Smart TVs.
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 costo, 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 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 la empresa 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 se pasara a AWS

Durante tres días de agosto de 2008, no pudo enviar DVDs por culpa de una base de datos dañada. Fue algo inaceptable y se propuso hacer algo al respecto. La experiencia de crear centros de datos le había enseñado 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, mientras que la entrega de vídeos sí que lo era.
En ese momento, decidió pasarse a AWS: un servicio que acababa de establecerse, por lo que se trató de una medida audaz.
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 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 calidad en la visualización de vídeos. De esta forma se ahorra esfuerzo y tiempo porque AWS hace todo eso para Netflix y le permite centrarse en proporcionar valor comercial.
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 streaming 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 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:
    My Netflix isn't working, call the police!!!
    — Amy (@amynewton193) 3 de febrero de 2015
o de este otro:
    I didn't realize my dependency on netflix until it went down and I'm now shaking in the bathtub in a hulk costume quoting 'friends' lines.
    — The Strumbellas (@thestrumbellas) 4 de febrero de 2015
Ahora es tan eficaz porque han tomado medidas extraordinarias para hacer que su servicio sea estable. Utiliza AWS en tres regiones: dos en Estados Unidos y una en Irlanda. Dentro de cada región, opera en tres zonas de disponibilidad diferentes.
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, 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 de sus aplicaciones 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 muchos, 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.

Puede agregar servidores cuando los necesite y devolverlos cuando no los use, en lugar de tener muchos equipos extra en stand by solo para poder reaccionar en caso de un pico de carga. Solo tiene que pagar por lo que necesita y cuando sea necesario.


Cortesía de Culichilango :