Qué es Chaos Monkey? La ingeniería del caos, explicada

0
14

Surgido de las salas de Netflix cuando pasó de distribuir DVDs a construir sistemas de nube distribuidos para la 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: principalmente, que al romper intencionalmente los sistemas se puede aprender a hacerlos más resistentes.

Según la publicación original del blog de Netflix sobre este tema -realizada en julio del 2011 por Yury Izrailevsky, entonces director de infraestructura de nube y sistemas, y por Ariel Tseitlin, director de soluciones de nube de la compañía-, Chaos Monkey fue diseñado para deshabilitar, aleatoriamente, las instancias de producción en su infraestructura de Amazon Web Services, exponiendo así las 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 a un mono salvaje con un arma en su centro de datos (o región de la nube) para derribar instancias al azar y morder cables -todo mientras seguimos sirviendo a nuestros clientes sin interrupción”, expresa la publicación del blog.

En la práctica, esto implicaría una aplicación simple: «elegir una instancia al azar de cada grupo y, en algún momento durante el horario comercial, apagarla sin previo aviso. Haría esto todos los días laborables”, como detallaron los ex ingenieros de Netflix, Nora Jones y Casey Rosenthal, en su libro que abarca el tema en profundidad, Chaos Engineering, publicado por O’Reilly Media.

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

Chaos Monkey en Netflix
Chaos Monkey surgió de los esfuerzos de ingeniería en Netflix alrededor del 2010, cuando Greg Orzell -que ahora trabaja en GitHub, propiedad de Microsoft- tuvo la tarea de desarrollar la capacidad de recuperación en la nueva arquitecturade la compañía, basada en la nube.

«No pienso en Chaos Monkey como una gran hazaña de ingeniería”, afirmó Orzell a InfoWorld. «El valor que aporta es un cambio de mentalidad que fue crítico en el momento en que pasamos del envío de DVDs a la transmisión por Internet”.

En los primeros días, los ingenieros de Netflix introdujeron una amplia gama de cortes de energía y problemas en los sistemas utilizando un «Simian Army” de herramientas de código abierto, cada una de ellas para ciertos tipos de fallas, comenzando con Chaos Monkey eliminando clústeres de AWS.

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

Chaos Kong llevó a Chaos Monkey al siguiente nivel simulando un corte de energía en toda una zona de disponibilidad de AWS. «Es muy raro que una región de AWS no esté disponible, pero sucede”, señaló una publicación en el blog de Netflix de los alrededores del 2015.

«Al realizar experimentos de forma regular, que simulan una interrupción regional, pudimos identificary solucionar cualquier debilidad sistémica de manera temprana”, continúa la publicación. «Cuando US-EAST-1 realmente no estuvo 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 que Chaos Kong se soltara en la infraestructura fue «un asunto tenso con una ‘sala de guerra’ reunida para monitorear todos los aspectos del servicio de transmisión, y duró horas”.

Dos años después, en julio del 2017, Netflix presentó ChAP, la Chaos Automation Platform, que «cuestiona el pipeline de implementación para un servicio especificado por el usuario. Luego lanza clústeres experimentales y de control de ese servicio y dirige una pequeña cantidad de tráfico a cada uno”, afirma la publicación del blog.

Los principios de la ingeniería del caos
Las prácticas básicas de Chaos Monkey han evolucionado rápidamente, con implementaciones cada vez más grandes, a través de Chaos Kong. Luego se formalizó como ingeniería del caos. Netflix no creó su propio equipo formal de ingeniería del caos hasta el 2015. Bruce Wong, ahora director de ingeniería de Stitch Fix, dirigió ese equipo.

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 sobre la capacidad de este para resistir condiciones turbulentas en la producción”.

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

Definir el «estado estable” de un sistema con el fin de establecer una línea de base para el comportamiento normal.

Plantear la hipótesis de que este estado estacionario continuará, tanto en el grupo de control como en el grupo experimental.

Introducir variables que reflejen eventos del mundo real como servidores que se bloquean, discos duros que funcionan mal o conexiones de red que se cortan.

Intentar 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 encuentra una debilidad, entonces tiene algo que solucionar.

«En los cinco años transcurridos desde que se publicó ‘The Principles’, hemos visto evolucionar la ingeniería del caos para enfrentar nuevos desafíos en nuevas industrias”, observan Jones y Rosenthal. «Los principios y los fundamentos de la práctica seguramente continuarán evolucionando a medida que la adopción se expanda en la industria del software y hacia nuevas verticales”.

La 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 servicio, por lo que tendrá que configurar un trabajo cron, como se describe en la página de GitHub, el cual luego llama una vez al día -laborable- a Chaos Monkey, para crear un cronograma de terminaciones.

Para usar esta versión de Chaos Monkey, debe usar la plataforma de producción continua de código abierto de Netflix, Spinnaker, 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 del servicio establecen las 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 terminan las instancias (máquinas virtuales o contenedores) al azar en la frecuencia y el horario que se especifique.

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

«Las herramientas en sí no son caras, pero la inversión que tiene que hacer para reaccionar a las herramientas sí lo es”, afirma Orzell. Comprometerse con la ingeniería del caos también requiere cambiar los recursos de la creación de nuevas funciones para reforzar la resistencia. «Cada negocio se encuentra en un punto diferente en ese espectro y cada uno tiene que decidir cuánto subir o bajar en ese espacio”, agrega.

Jones y Rosenthal afirman que, en los primeros días, los ingenieros de Netflix «recibieron mucho rechazo de las instituciones financieras en particular”.

A pesar de que los riesgos eran más altos para los bancos, puesto que aún sufrían cortes de energía, muchos de ellos cambiaron su mentalidad implementando cuidadosamente una «estrategia proactiva, como la ingeniería del caos, para comprender los riesgos con el fin de evitar resultados grandes e incontrolados”. Como se detalla en el libro, Capital One fue un adoptador temprano.

Los recursos de la ingeniería del caos
Nuevamente, el libro más reciente y definitivo sobre el tema es Chaos Engineering de los ex ingenieros de Netflix, Nora Jones y Casey Rosenthal, publicado en abril del 2020, basado mayormente en el trabajo que esos autores, y otros, compilaron en el libro Chaos Engineering del 2017. Para tener una descripción más práctica, consulte Learning chaos engineering de Russ Miles.

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

Gremlin -proveedor de herramientas comerciales para ejecutar experimentos de ingeniería del caos- ofrece su propio conjunto integral de recursos, que están disponibles en línea, de forma gratuita, y en formato PDF. La compañía también respalda varios esfuerzos de la comunidad, incluyendo Chaos Conf y un canal de 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.

Scott Carey, InfoWorld.com