¿Qué es Chaos Monkey? Explicación de la ingeniería del caos

Fue pionero en Netflix durante su cambio de distribuir DVD a construir sistemas distribuidos en la nube para transmisión de video, Chaos Monkey introdujo un principio de ingeniería que ha sido adoptado por organizaciones de desarrollo de software de todas las formas y tamaños: a saber, que al romper intencionalmente los sistemas, puede aprender a hacerlos más resistentes.

Según la publicación original del blog de Netflix sobre el tema, publicada en julio de 2011 por Yury Izrailevsky, entonces director de infraestructura de sistemas y nube, y Ariel Tseitlin, director de soluciones en la nube de la compañía de transmisión, Chaos Monkey fue diseñado para deshabilitar aleatoriamente las instancias de producción en su infraestructura de Amazon Web Services, exponiendo así debilidades que los ingenieros de Netflix podrían eliminar mediante la construcción de mejores mecanismos de recuperación automática.

El nombre pegadizo proviene de "la idea de liberar un mono salvaje con un arma en su centro de datos (o región de la nube) para derribar instancias al azar y masticar cables, mientras seguimos sirviendo a nuestros clientes sin interrupciones", la publicación del blog estados.

En la práctica, esto implicaría que una aplicación simple “elija una instancia al azar de cada clúster y, en algún momento durante el horario comercial, la apague sin previo aviso. Haría esto todos los días de trabajo ”, como detallan los ex ingenieros de Netflix Nora Jones y Casey Rosenthal en su libro completo sobre el tema, Chaos Engineering , publicado por O'Reilly Media.

La idea es que, al saber dónde están sus puntos más débiles, los ingenieros pueden configurar activadores automáticos para combatir un problema, ahorrándoles una llamada en medio de la noche si algo sale mal. Desde entonces, Chaos Monkey se ha convertido en una amplia gama de principios del caos, bajo el estandarte de la ingeniería del caos.

Mono del caos en Netflix

Chaos Monkey surgió de los esfuerzos de ingeniería en Netflix alrededor de 2010, cuando a Greg Orzell, que ahora trabaja en GitHub, propiedad de Microsoft, se le asignó la tarea de desarrollar la resiliencia en la nueva arquitectura basada en la nube de la compañía.

“La forma en que pienso sobre Chaos Monkey no es una gran hazaña de ingeniería”, dijo Orzell. "El valor que aporta es un cambio de mentalidad que era fundamental en ese momento, ya que pasamos del envío de DVD a la transmisión a través de Internet".

En los primeros días, los ingenieros de Netflix introdujeron una amplia gama de interrupciones y problemas en los sistemas que usaban un “ejército simio” de herramientas de código abierto, cada una de las cuales explica ciertos tipos de fallas, comenzando con Chaos Monkey eliminando los clústeres de AWS.

El ejército original (ahora en su mayoría retirado a favor de nuevas herramientas) incluía equipos como Latency Monkey, que induciría retrasos artificiales en la capa de comunicación RESTful cliente-servidor, y Doctor Monkey, que aprovecharía los controles de salud que se ejecutan en cada instancia. , así como monitorea otros signos externos de salud (por ejemplo, carga de CPU) para detectar instancias en mal estado y eliminarlas del servicio si es necesario.

Chaos Kong llevó a Chaos Monkey al siguiente nivel al simular una interrupción en toda una zona de disponibilidad de AWS. “Es muy raro que una región de AWS deje de estar disponible, pero sucede”, describe una publicación de blog de Netflix de 2015. 

“Al ejecutar experimentos de forma regular que simulan una interrupción regional, pudimos identificar cualquier debilidad sistémica de manera temprana y solucionarla”, continúa la publicación. "Cuando US-EAST-1 realmente dejó de estar disponible, nuestro sistema ya era lo suficientemente fuerte como para manejar una conmutación por error de tráfico".

Como Jones y Rosenthal describen en su libro, dejar a Chaos Kong suelto en la infraestructura fue "un asunto de nudillos blancos con una 'sala de guerra' ensamblada para monitorear todos los aspectos del servicio de transmisión, y duró horas".

Dos años más tarde, en julio de 2017, Netflix presentó ChAP, la plataforma de automatización del caos, que “interroga al proceso de implementación de un servicio especificado por el usuario. Luego lanza grupos de experimentación y control de ese servicio, y enruta una pequeña cantidad de tráfico a cada uno ”, afirma la publicación del blog.

Principios de la ingeniería del caos

Las prácticas básicas de Chaos Monkey han evolucionado rápidamente, con despliegues cada vez más grandes a través de Chaos Kong, hasta lo que luego se formalizó como ingeniería del caos. Netflix no creó su propio equipo formal de ingeniería del caos hasta 2015. Ese equipo estaba encabezado por Bruce Wong, ahora director de ingeniería en Stitch Fix.

Los principios de la ingeniería del caos han sido recopilados formalmente por algunos de los autores originales de Chaos Monkey, definiendo la práctica como: "La disciplina de experimentar en un sistema para generar confianza en la capacidad del sistema para soportar condiciones turbulentas en la producción".

En la práctica, esto toma la forma de un proceso de cuatro pasos:

  1. Definición del "estado estable" de un sistema para establecer una línea de base para el comportamiento normal.
  2. Suponga que este estado estable continuará tanto en el grupo de control como en el grupo experimental.
  3. Introduzca variables que reflejen eventos del mundo real, como servidores que fallan, discos duros que funcionan mal o conexiones de red que se cortan.
  4. Intente refutar la hipótesis buscando una diferencia entre el grupo de control y el grupo experimental.

Si el estado estable es difícil de interrumpir, tiene un sistema robusto; si hay una debilidad, entonces tienes algo que arreglar.

“En los cinco años desde que se publicó 'Los Principios', hemos visto evolucionar la ingeniería del caos para enfrentar nuevos desafíos en nuevas industrias”, observan Jones y Rosenthal. "Los principios y la base de la práctica seguramente continuarán evolucionando a medida que la adopción se expanda a través de la industria del software y hacia nuevas verticales".

Ingeniería del caos con Chaos Monkey

Para ejecutar la versión de código abierto de Chaos Monkey, sus sistemas deberán cumplir un cierto conjunto de requisitos previos, como se describe en GitHub.

Chaos Monkey no se ejecuta como un servicio, por lo que tendrá que configurar un trabajo cron como se describe en la página de GitHub, que luego llama a Chaos Monkey una vez al día de la semana para crear un programa de terminaciones.

Para usar esta versión de Chaos Monkey, debe usar Spinnaker, la plataforma de entrega continua, de código abierto y propia de Netflix, que puede limitar la capacidad de ciertas organizaciones para adoptar el método. Chaos Monkey también requiere una base de datos compatible con MySQL, versión 5.6 o posterior.

Los propietarios de servicios establecen sus configuraciones de Chaos Monkey a través de Spinnaker. Chaos Monkey trabaja a través de Spinnaker para obtener información sobre cómo se implementan los servicios y finaliza las instancias (máquinas virtuales o contenedores) al azar con la frecuencia y el horario que usted especifique.

Por supuesto, implementar Chaos Monkey es solo el comienzo de la difícil y compleja tarea de resolver problemas de resiliencia del sistema. Chaos Monkey simplemente descubre las debilidades del sistema; Luego, depende de los equipos de ingeniería de sistemas o devops identificar sus causas y encontrar soluciones.

“Las herramientas en sí no son caras, pero la inversión que debe hacer para reaccionar a las herramientas sí lo es”, como dice Orzell. Comprometerse con la ingeniería del caos también requiere trasladar recursos desde la creación de nuevas características a reforzar la resiliencia. “Cada empresa se encuentra en un punto diferente de ese espectro y cada una tiene que decidir cuánto marcar hacia arriba o hacia abajo en ese espacio”, agrega.

Jones y Rosenthal dicen que en los primeros días, los ingenieros de Netflix "recibieron un gran rechazo de las instituciones financieras en particular".

A pesar de que los riesgos eran mayores para los bancos, todavía sufrían cortes, por lo que al implementar cuidadosamente una "estrategia proactiva como la ingeniería del caos para comprender los riesgos a fin de evitar resultados grandes y descontrolados", muchas de esas organizaciones cambiaron su forma de pensar, con Capital One como una de las primeras adoptante, como se detalla en el libro.

Recursos de ingeniería del caos

Nuevamente, el último y definitivo libro sobre el tema es Chaos Engineering de los ex ingenieros de Netflix Nora Jones y Casey Rosenthal, publicado en abril de 2020, que se basa en gran parte del trabajo de esos autores y otros, compilado en el libro de 2017 Chaos Engineering. . Para obtener una descripción más práctica, consulte Learning Chaos Engineering de Russ Miles .

Netflix ofrece una gran cantidad de recursos sobre el tema en GitHub, que incluyen un tutorial, mucha documentación, un contador de errores, un comprobador de interrupciones y herramientas de descifrado.

Gremlin, un proveedor de herramientas comerciales para ejecutar experimentos de ingeniería del caos, ofrece su propio conjunto completo de recursos, que están disponibles de forma gratuita en línea y en formato PDF. La compañía también respalda varios esfuerzos comunitarios, incluidos Chaos Conf y un canal Slack.

O'Reilly también tiene una gran cantidad de recursos, incluida esta práctica lista de reproducción de libros y videos sobre el tema.