Revisando el libro Designin Data-Intensive Applications, me encontre con el termino The Netflix Chaos Monkey, al revisar más sobre el mismo llegue al blog de Netflix, que es recomendado para aquellos que quieran adentrarse en el mundo de las aplicaciones relacionadas al uso intensivo de datos.
De acuerdo a 5 lecciones sobre AWS de Netflix, la mejor manera de evitar fallas es fallar constantemente, en el cual se indica:
Uno de los primeros sistemas que nuestros ingenieros construyeron en AWS se llama Chaos Monkey. El trabajo de Chaos Monkey es matar instancias y servicios aleatoriamente dentro de nuestra arquitectura. Si no probamos constantemente nuestra capacidad para tener éxito a pesar del fracaso, es probable que no funcione cuando más importa: en el caso de una interrupción inesperada.
¿Que es Chaos Monkey?
En 2010, Netflix decidió trasladar sus sistemas a la nube. En este nuevo entorno, los hosts podrían terminarse y reemplazarse en cualquier momento, lo que significaba que sus servicios debían prepararse para esta restricción. Al reiniciar de forma pseudoaleatoria sus propios hosts, podrían detectar cualquier debilidad y validar que su corrección automática funcionó correctamente. Esto también ayudó a encontrar servicios «con estado», que dependían de los recursos del host (como una memoria caché local y una base de datos), a diferencia de los servicios sin estado, que almacenan tales cosas en un host remoto.
Netflix diseñó Chaos Monkey para probar la estabilidad del sistema mediante la aplicación de fallas mediante la terminación pseudoaleatoria de instancias y servicios dentro de la arquitectura de Netflix. Después de su migración a la nube, el servicio de Netflix dependía recientemente de Amazon Web Services y necesitaba una tecnología que pudiera mostrarles cómo respondía su sistema cuando se retiraban los componentes críticos de su infraestructura de servicios de producción. Causar intencionalmente esta falla única detectaría cualquier debilidad en sus sistemas y los guiaría hacia soluciones automatizadas que manejen con gracia fallas futuras de este tipo.
Chaos Monkey ayudó a impulsar Chaos Engineering como una nueva práctica de ingeniería. Chaos Engineering es un enfoque disciplinado para identificar fallas antes de que se conviertan en interrupciones. Al probar de manera proactiva cómo responde un sistema a las condiciones de falla, puede identificar y corregir las fallas antes de que se vuelvan públicas frente a las interrupciones. Chaos Engineering le permite validar lo que cree que sucederá con lo que realmente está sucediendo en sus sistemas. Al realizar los experimentos más pequeños posibles que pueda medir, podrá «romper cosas a propósito» para aprender a construir sistemas más resistentes.
En 2011, Netflix anunció la evolución de Chaos Monkey con una serie de herramientas adicionales conocidas como The Simian Army. Inspirado por el éxito de su herramienta Chaos Monkey original destinada a desactivar aleatoriamente las instancias de producción y los servicios, el equipo de ingeniería desarrolló «simios» adicionales construidos para causar otros tipos de fallas e inducir condiciones anormales del sistema. Por ejemplo, la herramienta Latency Monkey introduce retrasos artificiales en la comunicación RESTful cliente-servidor, lo que permite al equipo de Netflix simular la indisponibilidad del servicio sin tener que interrumpir dicho servicio.
Un conjunto de herramientas del caos
Chaos Monkey no está solo en el ejército. Desde que se desarrolló y aumentó su popularidad, se ha desarrollado un conjunto completo de herramientas Chaos para simular interrupciones y probar los tiempos de respuesta del sistema. Los ingenieros del Caos ahora tienen al Ejército de Simios para trabajar y Chaos Monkey se encuentra en filas con:
- Chaos Kong lanza toda una región de AWS.
- Chaos Gorilla deja caer una zona de disponibilidad de AWS completa.
- Latency Monkey simula interrupciones o retrasos en la red.
- Doctor Monkey realiza controles de salud.
- Janitor Monkey identifica los recursos no utilizados.
- Conformity Monkey identifica instancias no conformes basándose en un conjunto de reglas.
- Security Monkey prueba las vulnerabilidades conocidas. Fin de vida en 2020, con alternativas disponibles.
- 10-18 Monkey detecta problemas de configuración y tiempo de ejecución en instancias que atienden a clientes en múltiples regiones geográficas.