Chaos Monkey for Spring Boot es una herramienta que introduce los principios de Chaos Engineering en nuestras aplicaciones Spring Boot, en esencia añadiendo latencias a nuestro endpoints REST, lanzando errores, matando apps,….para ver cómo se comporta nuestro sistema completo…como podéis ver algo muy importante en la era de los microservicios 😉
Como vamos a ver, usarlo en una aplicación Spring Boot es muy sencillo
¿Cómo configurarlo?
Primero añadimos la dependencia:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>chaos-monkey-spring-boot</artifactId>
<version>2.1.1</version>
</dependency>
Luego habilitamos el profile chaos-monkey (o sobre mi profile pongo chaos.monkey.enabled=true)
java -jar your-app.jar --spring.profiles.active=chaos-monkey
Chaos Monkey tiene 2 conceptos: Watchers y Assaults.
- Watchers: Un Watcher es un componente Sprign Boot que vía AOP comprueba los métodos públicos de los Beans de tipo Componente, Controller, RestController, Service y Repository y en función de la configuración de la librería me permite:
- Latency Assault: añade una latencia aleatoria a la petición
- Exception Assault lanza RuntimeExceptions aleatorias
- AppKiller Assault –mata la app
- Assaults: Los Assaults son escenarios en los que queremos testar mi aplicación sobre alguno de los escenarios de test de arriba, así que en función de lo que quiero probar: Se configuran así:
chaos: monkey: assaults: level: 8 latencyRangeStart: 1000 latencyRangeEnd: 10000 exceptionsActive: true killApplicationActive: true watcher: repository: true restController: true
Y para que funcionen con Spring Boot Actuator:
management: endpoint: chaosmonkey: enabled: true endpoints: web: exposure: include: health,info,chaosmonkey
¿Entonces qué? ¿Lo probamos? 😊