Chaos Engineering es una disciplina que se enfoca en evaluar cómo la interacción de eventos poco frecuentes afectan la operación.
Tradicionalmente las organizaciones suelen trabajar con el término “Disaster Recovery” donde se generan planes para mitigar las consecuencias de un evento catastrófico y volver a un estado de estabilidad.
Chaos Engineering, sin embargo, evalúa eventos para generar un sistema que pueda sobrevivir a emergencias.
Para esto, debes identificar las debilidades de tu solución antes que se manifiesten y simular fallas irremediables en todo tu sistema. Las debilidades sistémicas podrían ser failover cuando un servicio no está disponible; retrys o timeouts mal configurados; interrupciones ante aumentos de tráfico; fallas de servicios dependientes, etc.
Dichas debilidades se deben remediar de manera proactiva, antes de que afecten a los servicios productivos e impactar directamente a sus clientes.
Para conseguir esto, se necesita gestionar caos en sistemas para realizar pruebas similares a eventos catastróficos y estar seguros que en si tenemos momentos catastróficos nuestros sistemas serán capaces de sobrellevar la situación.
Este enfoque está basado en enfrentar y superar el caos, aumentando la confianza en ellos mientras resisten a condiciones extremas, pero realistas la llamamos ingeniería del Caos.
Chaos Engineering en la práctica
La ingeniería del caos te permite ejecutar experimentos en sistemas distribuidos para descubrir debilidades en tus sistemas.
Siguiendo cuatro etapas:
Definir un estado deseado el cual representa un estado normal o habitual
Generar una Hipótesis de cómo este estado será afectado ante X variables, las cuales representan adversidades en el mundo real
Introducir variables que reflejan eventos en el mundo real
Intentar refutar la hipótesis buscando diferencias entre el estado “actual” y el esperado
Cuanto más difícil es interrumpir el estado esperado, más confianza tenemos en el comportamiento del sistema. En el caso que se descubra una debilidad, ahora tenemos un objetivo de mejora.
Principios avanzados de Chaos Engineering
Los siguientes principios describen la aplicación de Ingeniería del Caos aplicada en experimentación.
Construir una hipótesis alrededor del comportamiento del estado
Céntrese en la salida de un sistema, en lugar de los atributos internos del mismo, el rendimiento del sistema, las tasas de error, los percentiles de latencia, podrían ser métricas de interés que representen un comportamiento de estado.
Varíe los eventos del mundo real
Las variables del Caos reflejan eventos del mundo real, donde debes priorizar los eventos por su potencial de impacto o por su frecuencia estimada. Considere que los eventos corresponden a fallas de hardware o de software ya sean respuestas y eventos que no representan una falla implícita por ejemplo un escenario donde hubo un aumento considerable en el tráfico.
Cualquier evento capaz de interrumpir el estado es una variable potencial en un experimento de Ingeniería del Caos.
Ejecute los experimentos en producción
Los sistemas se comportan de manera diferente dependiendo del entorno y patrones de tráfico.
Automatice los experimentos para que se ejecuten continuamente
Ejecutar los experimentos manualmente es muy trabajoso y en última instancia insostenible. Automatice sus experimentos y ejecútelos continuamente.
Minimice el radio de explosión
Experimentar en producción tiene el potencial de causar dolor innecesario para el cliente. Si bien debe contarse con un margen para algún impacto negativo a corto plazo, es responsabilidad y obligación del Ingeniero del Caos asegurar que las consecuencias de los experimentos sean minimizadas y contenidas.
¿Quieres aumentar la resiliencia en tus datos?
Si te gusto este blog y quieres aumentar la resiliencia de tus datos, no dudes en revisar nuestros servicios