Chaos Monkey Banner

Chaos Monkey pour Spring Boot

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

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.

Pourquoi utiliser le Chaos Engineering ?

Exemple d'outils de Chaos Engineering

Développé par Netflix, Chaos Monkey injecte des pannes aléatoires dans un environnement pour tester sa robustesse.

Installation dans Spring Boot

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>

Activation

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échaîner le chaos

DĂ©finissez oĂą le chaos doit survenir :

{
    "controller": false,
    "restController": true,
    "service": false,
    "repository": false,
    "component": false
}

DĂ©finir le type de chaos

Personnalisez les attaques via /actuator/chaosmonkey/assaults :

{
    "level": 5,
    "deterministic": true,
    "latencyRangeStart": 5000,
    "latencyRangeEnd": 10000,
    "latencyActive": true,
    "watchedCustomServices": [
        "fr.eletutour.controller.ArticleController"
    ]
}

Conclusion

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 !