Mais pourquoi vouloir introduire du chaos volontairement dans mon application ?
C'est sans doute la question qui vous a traversé l'esprit en lisant le titre de cet article. Et c'est ce que nous allons voir en introduisant divers types de chaos dans une application Spring Boot.
Le Chaos Engineering est une discipline qui consiste à tester la résilience des systèmes en introduisant des perturbations contrôlées. L’objectif est d’identifier les failles avant qu’elles ne se manifestent en production et de s’assurer que l’application peut tolérer les pannes sans compromettre son bon fonctionnement.
Développé par Netflix, Chaos Monkey injecte des pannes aléatoires dans un environnement pour tester sa robustesse.
Pour ajouter Chaos Monkey dans votre application Spring Boot, ajoutez la dépendance suivante :
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>chaos-monkey-spring-boot</artifactId>
<version>3.1.2</version>
</dependency>
Activez le profil adéquat dans votre application.properties
:
spring.profiles.active=chaos-monkey
Au démarrage de votre application vous aurez en plus de la traditionnelle bannière Spring Boot, une bannière Chaos Monkey
_____ _ __ __ _
/ ____| | | \/ | | |
| | | |__ __ _ ___ ___ | \ / | ___ _ __ | | _____ _ _
| | | '_ \ / _` |/ _ \/ __| | |\/| |/ _ \| '_ \| |/ / _ | | | |
| |____| | | | (_| | (_) \__ \ | | | | (_) | | | | | __| |_| |
\_____|_| |_|\__,_|\___/|___/ |_| |_|\___/|_| |_|_|\_\___|\__, |
__/ |
_ready to do evil! |___/
:: Chaos Monkey for Spring Boot ::
Ajoutez ensuite les dépendances suivantes pour activer les actuators :
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.8.4</version>
</dependency>
DĂ©finissez oĂą le chaos doit survenir :
{
"controller": false,
"restController": true,
"service": false,
"repository": false,
"component": false
}
Personnalisez les attaques via /actuator/chaosmonkey/assaults
:
{
"level": 5,
"deterministic": true,
"latencyRangeStart": 5000,
"latencyRangeEnd": 10000,
"latencyActive": true,
"watchedCustomServices": [
"fr.eletutour.controller.ArticleController"
]
}
Ce n'est qu'un aperçu des possibilités offertes par Chaos Monkey. Testez-le avec prudence et communiquez avec votre équipe avant de semer le chaos !