Un amigo con experiencia en Proyectos Internacionales me decía que la Ingeniería del Caos es demasiado avanzada para España todavía, teniendo en cuenta nuestro nivel de Madurez Organizacional o el de productividad y liderazgo.
Me ponía el ejemplo de la película Regreso al Futuro cuando Michael J Fox toca un solo de guitarra hard rock de 1985 a los asombrados asistentes al Baile del Curso de 1955 y viendo al público estupefacto sentencia: "Supongo que no estáis preparados para esto aún"
La Ingeniería del Caos es la disciplina de experimentar en un sistema distribuido para cimentar la confianza en la capacidad de un Sistema de resistir las turbulentas condiciones de Producción
Los avances en sistemas de software distribuidos a gran escala están cambiando las reglas del juego de la ingeniería del software. Como industria, tenemos que ser rápidos en adoptar las prácticas que incrementen la flexibilidad del desarrollo y la velocidad de entrega. Una pregunta inmediata surge a continuación de estos beneficios: ¿Cuánta confianza podemos depositar en los complejos sistemas que ponemos en producción?
Incluso cuando todos los servicios individuales de un sistema distribuido están funcionando adecuadamente, las interacciones entre esos servicios pueden causar resultados impredecibles, compuestos por situaciones del mundo real inusuales pero perturbadoras que afectan a los entornos de producción y que convierten a estos sistemas distribuidos en intrínsecamente caóticos.
Necesitamos identificar las debilidades antes de que se manifiesten como comportamientos aberrantes de todo el sistema. Las debilidades sistémicas podrían tener por ejemplo la forma de:
Plan B inapropiado cuando un servicio cae, reintentos masivos debido a tiempos de espera mal programados; apagones cuando una descarga recibe demasiadas peticiones, fallos en cascada cuando un único punto de fallo quiebra, etc. Debemos tomar en cuenta las debilidades más significativas de forma proactiva antes de que afecten a nuestros clientes en producción. Necesitamos una forma de gestionar el caos inherentes a estos sistemas, tomar ventaja de la creciente flexibilidad y velocidad y tener la confianza en nuestros despliegues de producción a pesar de la complejidad que representan.
Una aproximación empírica basada en los sistemas aborda el caos en los sistemas distribuidos a escala y desarrolla la confianza en la capacidad de esos sistemas para resistir condiciones realistas. Aprendemos sobre el comportamiento de un sistema distribuido observándolo durante un experimento controlado.
Llamamos a esto Ingeniería del Caos.
![]() |
Netflix es uno de los pioneros referentes en desarrollo de Ingeniería del Caos y forma parte de su ventaja competitiva |
Caos en la práctica
Para abordar específicamente la incertidumbre de los sistemas distribuidos a escala, la Ingeniería del Caos puede describirse como puesta en marcha de experimentos dirigidos a descubrir debilidades sistémicas. Estos experimentos siguen cuatro pasos:
- Comenzar definiendo "estado normal" como un resultado medible de un sistema que indica un comportamiento estándar.
- Proponer que este estado normal continuará tanto en el grupo de control como en el experimental
- Introducir variables que reflejen eventos del mundo real como servidores que se paran, discos duros que fallan, conexiones de red saturadas, etc.
- Intentar refutar la hipótesis buscando una diferencia en el estado normal entre el grupo de control y el grupo experimental.
Mientras más difícil sea afectar al estado normal, mayor confianza tendremos en el comportamiento del sistema. Si se descubre una debilidad, tenemos un objetivo de mejora antes de que el comportamiento se manifieste en el sistema a gran escala.
Principios avanzados
Los siguientes principios describen una aplicación ideal de la Ingeniería del Caos aplicada a los procesos de experimentación descritos arriba. El grado al que estos principios son seguidos se corresponden con la confianza que podemos tener en un sistema distribuido a escala.
Construye una hipótesis alrededor del comportamiento del estado normal
Pon el foco en el resultado medible de un sistema, en lugar de en los atributos internos del sistema. Las mediciones de ese resultado en un corto periodo de tiempo constituyen una muestra del estado normal del sistema. El rendimiento general del sistema, los porcentajes de error, los percentiles de latencia, etc, podrían todos se métricas de interés que representen el comportamiento de estado normal. Al centrarnos en patrones de comportamiento sistémicos durante los experimentos, el Caos verifica que el sistema funciona, en lugar de intentar validar cómo funciona.
Cambia los eventos del "mundo real"
Las variables del Caos reflejan eventos del "mundo real". Prioriza eventos por impacto potencial o por frecuencia estimada. Considera los eventos que correspondan a fallos de hardware como servidores que caen, fallos de software como respuestas erróneas, y eventos sin fallos como un pico en el tráfico o un evento escalado. Cualquier evento capaz de afectar al estado normal es una variable potencial en un experimento de Caos.
Realiza experimentos en Producción
Los sistemas se comportan de forma diferente según el entorno y las variables de tráfico. Debido a que el comportamiento de la utilización puede cambiar en cualquier momento, tomar muestras de tráfico real es la única manera de capturar de manera fiable la ruta de cada petición. Para garantizar tanto la autenticidad de la forma en que el sistema se desarrolla y su relevancia en el sistema instalado en la actualidad. el Caos prefiere encarecidamente experimentar directamente con el tráfico en producción.
Programa experimentos para que se ejecuten continuamente
Ejecutar experimentos de forma manual es muy intenso y al final insostenible. Programa experimentos y ejecútalos continuamente. La Ingeniería del Caos se automatiza dentro del sistema para construye realizar tanto las tareas como el análisis.Minimiza la onda expansiva
Experimentar en entornos de producción tiene el potencial de causar dolor innecesario al cliente. Aunque debe haber una concesión a algún impacto negativo de corto alcance, es responsabilidad y obligación del Ingeniero del Caos asegurarse de que los efectos secundarios de los experimentos sean minimizados y contenidos.Presentación de Norah Jones (si, como la cantante ;), encargada de Ingeniería del Caos en Netflix:
Puedes descargarte gratis el libro Chaos Engineering aquí.
Traducido de: Principios de la Ingeniería del Caos
Paco Navarro
Scrum Manager
Project Manager
ITIL v2011 Service Operation Manager