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.