# Ingeniería del caos

> Romper tu propio sistema a propósito, con cuidado, para encontrar puntos débiles.

- Nivel: Avanzado
- Temas: Cloud, Software
- URL: https://tidbit.legios.com.ar/es/chaos-engineering/
- En inglés: [Chaos engineering](https://tidbit.legios.com.ar/chaos-engineering/)

La **ingeniería del caos** es la práctica de hacer experimentos controlados que meten fallas en un sistema, como matar un servidor, agregar demora en la red, llenar un disco o hacer que una dependencia devuelva errores, para ver si sigue funcionando. La idea es que en los sistemas distribuidos grandes las fallas van a pasar igual; mejor descubrir cómo reacciona tu sistema un martes a la tarde con el equipo mirando que a las 3 de la mañana en medio de una caída real.

Un experimento tiene forma científica. Primero definís el **estado estable**: una señal medible de que todo está normal, como pedidos por minuto o tasa de errores. Después planteás una hipótesis ("si se cae una réplica de la base de datos, el checkout sigue andando"), inyectás la falla y buscás diferencias. La buena práctica es mantener chico el **radio de explosión** (blast radius), empezando por una parte del tráfico o un entorno de prueba, y tener siempre un botón de parada que vuelve todo atrás.

Netflix popularizó la idea con Chaos Monkey, una herramienta que apagaba al azar sus servidores de producción para que los ingenieros tuvieran que construir servicios capaces de sobrevivir a eso. Hoy hay herramientas open source como Chaos Mesh y LitmusChaos para Kubernetes, y servicios administrados como **AWS Fault Injection Service**. La ingeniería del caos tiene sentido recién cuando tenés buena observabilidad; si no, rompés cosas y no podés saber qué pasó.

## Una analogía

Un simulacro de incendio, pero con un fuego real y chiquito en un rincón controlado del edificio, para saber si los rociadores, las alarmas y las salidas de verdad funcionan antes del día en que las necesites.

## Para quedarse

- Experimentos controlados que inyectan fallas para probar la resiliencia.
- Definís un estado estable, planteás una hipótesis, inyectás la falla y comparás.
- Radio de explosión chico y siempre una forma de frenar.
- Necesita buena observabilidad para aprender algo del experimento.

## Para seguir leyendo

- [Principios de la ingeniería del caos](https://principlesofchaos.org/es/)
- [Ingeniería del caos en Wikipedia](https://es.wikipedia.org/wiki/Ingenier%C3%ADa_del_caos)
- [¿Qué es AWS Fault Injection Service? (documentación oficial)](https://docs.aws.amazon.com/es_es/fis/latest/userguide/what-is.html)

## Términos relacionados

- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [Netflix](https://tidbit.legios.com.ar/es/netflix/): Un servicio de streaming, y la ingeniería que armó para llevar video a todo el mundo.
- [Código abierto](https://tidbit.legios.com.ar/es/open-source/): Software cuyo código cualquiera puede leer, usar, cambiar y compartir.
- [Kubernetes](https://tidbit.legios.com.ar/es/kubernetes/): El sistema que corre y cuida contenedores en muchas máquinas a la vez.
- [Observabilidad](https://tidbit.legios.com.ar/es/observability/): Poder saber qué está haciendo un sistema en marcha, y por qué, a partir de lo que emite.
