Definición: Disciplina que introduce fallos controlados en sistemas de produccion para descubrir debilidades antes de que causen incidentes reales, mejorando la resiliencia del sistema.
— Fuente: NERVICO, Consultoría de Desarrollo de Producto
Que es la ingenieria del caos
La ingenieria del caos es una disciplina que mejora la resiliencia de los sistemas mediante la introduccion deliberada de fallos controlados en entornos de produccion o pre-produccion. Popularizada por Netflix con su herramienta Chaos Monkey, parte de la premisa de que los sistemas distribuidos complejos fallan de formas impredecibles, y la unica manera de prepararse es experimentar proactivamente con esos fallos en condiciones controladas.
Como funciona
El proceso sigue cuatro pasos: (1) definir el estado estable del sistema (metricas normales), (2) formular una hipotesis sobre como el sistema manejara un fallo especifico, (3) introducir el fallo de forma controlada (terminar instancias, inyectar latencia, simular caidas de red), y (4) observar si el sistema mantiene su estado estable o se degrada. Si la hipotesis falla, se ha descubierto una debilidad real que puede corregirse antes de que cause un incidente en produccion. AWS Fault Injection Simulator (FIS) permite ejecutar estos experimentos de forma gestionada.
Casos de uso principales
- Validacion de que los mecanismos de auto-healing y failover funcionan correctamente ante fallos de instancias o zonas de disponibilidad
- Descubrimiento de dependencias ocultas entre servicios que no aparecen en la documentacion de arquitectura
- Verificacion del comportamiento del sistema bajo condiciones de red degradada como alta latencia o perdida de paquetes
- Entrenamiento de equipos de respuesta a incidentes con escenarios de fallo realistas en entornos controlados
Ventajas y consideraciones
La ingenieria del caos transforma los fallos de produccion de eventos inesperados a situaciones ensayadas, reduciendo significativamente el tiempo de resolucion cuando ocurren incidentes reales. Construye confianza en la resiliencia del sistema basada en evidencia empirica. La principal consideracion es que requiere sistemas de observabilidad maduros y la capacidad de detener el experimento rapidamente si el impacto excede lo esperado. Debe adoptarse gradualmente, comenzando con experimentos de bajo impacto.