Cómo Netflix utiliza el caos para asegurarse de que puedas ver tu serie favorita

¿Cuántas veces hemos llegado a nuestros hogares con ansias para mirar un capitulo de alguna serie en Netflix?
Vienes de trabajar ó estudiar, con cansansio y allí está Netflix, para servirte el contenido que deseas y olvidarte de los problemas del día.

Estoy seguro de que muchos de nosotros nos identificamos con esa situación; de que Netflix es nuestro compañero, como el mate para nosotros, los argentinos.

Ahora, podemos pensar en esto porque la empresa provee un nivel de servicio excelente. Ponte a pensar las veces que has recibido un error 404, 503 ó que hayas tenido que recargar el sitio porque se cortó la conexión. Lo cierto es que si tienes un problema, normalmente estará asociado a tu proveedor de internet y no a Netflix en sí.

¿Cómo hace Netflix para estar, prácticamente, siempre online?
En lugar de tener grandes datacenters propios, decidieron moverse a la nube, a servidores más pequeños pero en mayor cantidad, y dispersos en más lugares geográficos.

No todos los servidores en la nube cumplen los mismos objetivos, pero todos pueden ser utilizados con el principio de redundancia; si se cae un nodo, todavía tengo otro que puede hacer las mismas funciones a una velocidad un poco menor. Pero al utilizar Amazon Web Services, Netflix permite que se pueda escalar la cantidad de recursos de procesamiento asignados al nodo (ó instancia) dinámicamente, por lo que sólo elevaría el costo, pero ni siquiera la performance.

Ahora, uno pensaría que si los servidores en producción se caen, es algo negativo, porque en el peor de los casos, el servicio que estás brindando con el servidor se vuelve no disponible, y sino; se elevan los costos por tener que asignar más recursos de cómputo a otra instancia que hace lo mismo que el servidor que se acaba de caer.

Pero entonces, ¿Por qué Netflix promuevee apagar algunos de sus servidores de producción de manera aleatoria? Por el bien del caos, claro.

Netflix promueve el caos
En septiembre de 2014 la empresa empezó a implementar un software desarrollado por ellos; “Chaos Monkey” (en realidad toda una armada de monos). Descrito por Yury Izrailevsky y Ariel Tseitlin como “A tool that randomly disables our production instances to make sure we can survive this common type of failure without any customer impact” ó en español: una herramienta que les permite asegurar de que puedan sobrevivir más allá de las instancias que deshabilita la herramienta.

Ahora, sabiendo que el mono puede tirar un servidor abajo en cualquier momento, todo el ciclo de producción de software lo tiene en cuenta. Netflix parte de que no puede esperar a que surgan fallas para comprobar de que su sistema es a prueba de fallos, sino que introduce los mismos fallos que desea evitar, de manera controlada. Como una vacuna.

En el caso de Netflix, utilizar una herramienta que permita implementar estas fallas en tiempo real permite que cuando llegues a tu casa y te sientes a ver Stranger Things o House of Cards, puedas hacerlo por más de que haya habido un corte masivo en muchos servidores (como ya ocurrió antes).

Fallar no es una opción, es un hecho
Como lo describe Cloudflare, va a ocurrir un fallo, puede ser un problema de red, de servidor, etc. Pero lo importante no es el fallo en sí, sino cómo tu sistema responde a ese fallo ahora. Si ocurre ahora mismo, y no, si ocurre en el futuro. La dirección a dónde pareciera que se dirigen aquellos sistemas, es a la nube. Robustos, que soportan fallas, y que necesitan un gran grado de disponibilidad, donde no se trata de evitar la falla, sino donde se la acepta y se actúa proactivamente en base a ella.