ingeniería del caos


La ingeniería del caos es la disciplina de experimentar con un sistema de software en producción para generar confianza en la capacidad del sistema para soportar condiciones turbulentas e inesperadas. [1]

En el desarrollo de software, la capacidad de un sistema de software dado para tolerar fallas y al mismo tiempo garantizar una calidad de servicio adecuada (a menudo generalizada como resiliencia ) generalmente se especifica como un requisito. Sin embargo, los equipos de desarrollo a menudo no cumplen con este requisito debido a factores como plazos breves o falta de conocimiento del campo. La ingeniería del caos es una técnica para cumplir con el requisito de resiliencia.

Mientras supervisaba la migración de Netflix a la nube en 2011, [2] [3] Greg Orzell tuvo la idea de abordar la falta de pruebas de resiliencia adecuadas al configurar una herramienta que causaría fallas en su entorno de producción, el entorno utilizado por Netflix. clientes. La intención era pasar de un modelo de desarrollo que suponía que no había averías a un modelo en el que las averías se consideraban inevitables, lo que llevó a los desarrolladores a considerar la resiliencia integrada como una obligación en lugar de una opción:

"En Netflix, nuestra cultura de libertad y responsabilidad nos llevó a no obligar a los ingenieros a diseñar su código de una manera específica. En cambio, descubrimos que podíamos alinear a nuestros equipos en torno a la noción de resiliencia de la infraestructura al aislar los problemas creados por la neutralización del servidor y llevándolos al extremo. Hemos creado Chaos Monkey, un programa que elige aleatoriamente un servidor y lo desactiva durante sus horas habituales de actividad. Algunos lo encontrarán una locura, pero no podemos depender de la ocurrencia aleatoria de un evento para probar nuestro comportamiento frente a las consecuencias mismas de este evento. Saber que esto sucedería con frecuencia ha creado una fuerte alineación entre los ingenieros para crear redundancia y automatización de procesos para sobrevivir a tales incidentes, sin afectar a los millones de usuarios de Netflix.Chaos Monkey es una de nuestras herramientas más efectivas para mejorar la calidad de nuestros servicios".[4]

Al "matar" con regularidad instancias aleatorias de un servicio de software, fue posible probar una arquitectura redundante para verificar que una falla del servidor no impactara de manera notable a los clientes.

El concepto de ingeniería del caos es cercano al de Phoenix Servers, introducido por primera vez por Martin Fowler en 2012. [5]


El logotipo de Chaos Monkey utilizado por Netflix