Haciendo el (Chaos) Monkey: de la teoría a la práctica

Seguramente hayas oído hablar de Chaos Monkey, la herramienta desarrollada por los ingenieros de Netflix para testar la resiliencia y la capacidad de recuperación de su Amazon Web Services (AWS).

Este fue el tema central de nuestro último meetup “Haciendo el (Chaos) Monkey” en el que Alejandro Guirao, DevOps en Intelygenz, nos dio una clase magistral y apta para todos los públicos en el CIBBVA.

Pasando de la teoría a la práctica, nuestro crack nos ofreció una introducción acerca de la herramienta de Netflix para terminar desarrollando un pequeño experimento DIY, ¿quién da más?

Chaos Monkey y Chaos Engineering, ¿cómo surgen estos conceptos?

La presentación comenzó con un repaso a los precedentes directos de Chaos Monkey para los que tendríamos que situarnos a principios de los años 2000 en Amazon. Por entonces, la compañía fichaba por Jesse Robbins como encargado de su Availability Program (de la disponibilidad del negocio online) o, lo que es lo mismo, Master of Disaster.

Robbins se enfocó gran parte de su trabajo en el desarrollo de Resilience Engineering, una aplicación de método científico a la capacidad para resistir a eventos inesperados en un negocio online.

Con él surgieron también los conocidos GameDays en los que se organizaba una simulación preavisada y bastante realista de diferentes incidencias con el objetivo de preparar a los empleados ante este tipo de catástrofes (la cultura de “estar preparados”). Esto, lógicamente, no solo afectaba a la tecnología y software, sino también a los procesos de comunicación y negocio.

Sobre todo se centró en dos métricas: MTBF (Mid Time Between Failures) y MTTR (Mid Time to Recover), al que le dio mucha más importancia.

Google, también por esa época, empezó a desarrollar el programa Dirt (Disaster Recovery Testing Event) a cargo de Kripa Krishnan. Este programa iba un paso más allá simulando fallos muy complejos del tipo terremotos o invasiones zombies con informes continuos con los que se iba evaluando y testando los procesos.

Todos estos antecedentes, entre los que Alejandro incluyó el concepto de Antifragile (antifragilidad) de Nassim Nicholas Taleb, fueron el caldo de cultivo del Chaos Monkey de Netflix, que luego derivaría en el Chaos Engineering.

Por 2010 sus ingenieros empezaron a patentarlo como una herramienta para validar la resiliencia de las aplicaciones en red. O dicho de otra manera como “un sistema en el que se van destruyendo elementos en un sistema distribuido para verificar que en global se es tolerante a este tipo de fallos.”

Pero no sería hasta 2012 cuando Netflix liberase el código a la comunidad a través del Netflix Open Source Software (OSS) dando lugar a la formalización de la Ingeniería del Caos.

Los fallos van a suceder y te sucederán cuando menos te lo esperes

¿Qué es Netflix Chaos Monkey?

Chaos Monkey es un servicio que inicialmente atacaba a los grupos de autoescalado (Auto Scaling Groups, ASGs) de Amazon Web Services (AWS) acabando con instancias, de tal manera que sea posible comprobar si el servicio se ha visto sido afectado.

El software simula fallos de instancias en los servicios en funcionamiento con ASGs deteniendo una o más máquinas virtuales, pudiendo programar estos fallos en las horas que más nos interesa.

La Simian Army hablaba de una serie de funcionalidades extra además de Monkey Chaos como:

  • Conformity Monkey. Comprueba que la infraestructura desplegada cumple con determinadas reglas.
  • Janitor Monkey. Asegura que no haya recursos en desuso y los elimina.
  • Latency Monkey. Introduce latencia en los distintos servidores para probar y alterar el sistema.
  • Doctor Monkey. Identifica máquinas con problemas y la aparta del sistema para su inspección.
  • Security Monkey. Identifica vulneraciones o violaciones de seguridad.
  • 10-18 Monkey. Comprueba la internacionalización de las webs.
  • Chaos Gorilla. Tira abajo una zona de disponibilidad entera para comprobar que el servicio sigue disponible en otras.
  • Chaos Kong. Tira abajo regiones enteras.

¿Cómo se usa el Netflix Chaos Monkey?

Después de esta explicación teórica entramos en materia con una práctica que Alejandro preparó para la ocasión. No vamos a enrollarnos más, lo mejor es que veas el vídeo donde él mismo te explica paso a paso el desarrollo de todo el experimento.

 

Dentro de muy poco volveremos a la carga con un nuevo calendario de meetups cargado de novedades y charlas de lo más interesantes. Estate al tanto en nuestra página de meetup “In code We Trust by Intelygenz”. Hasta pronto!

#InCodeWeTrust