Les tests de chaos ont été créés il y a un peu plus de dix ans grâce à la même entreprise qui nous a donné Le Roi Tigre et Le Gambit de la Dame —Netflix.
En 2010, les équipes de développement et d'exploitation de Netflix ont entrepris la migration de l'intégralité de leur infrastructure vers AWS (Amazon Web Services). Elles ont rapidement réalisé que leur infrastructure existante ne permettrait pas l'évolutivité nécessaire à terme et ont donc pris la décision audacieuse de tout migrer vers le cloud AWS d'Amazon, dans le cadre d'une transition d'une architecture monolithique vers une architecture de microservices.
Durant cette période, Netflix a établi deux principes tirés du processus de migration de l'intégralité de son infrastructure, tout en minimisant l'impact sur ses millions d'utilisateurs :
- Aucun système ne devrait présenter de point de défaillance unique. Un point de défaillance unique désigne la possibilité qu'une seule erreur ou panne puisse entraîner des centaines d'heures d'indisponibilité imprévue.
- Ne soyez jamais absolument certain que le point numéro un est vrai. Votre équipe a besoin d'un moyen efficace de tester et de surveiller constamment votre système afin de garantir la véracité du point numéro un (Netflix a créé les « chaos monkeys » pour faciliter cette tâche ; nous y reviendrons plus tard).
Cette méthodologie a été baptisée « tests de chaos ». Les tests de chaos reposent sur l'identification proactive des erreurs au sein d'un système afin de prévenir les pannes et les impacts négatifs sur l'utilisateur. Netflix en avait parfaitement compris l'importance, ayant subi une défaillance catastrophique quelques années seulement avant de migrer vers AWS.
Aujourd'hui, de nombreuses équipes DevOps et informatiques, tous secteurs confondus, rejoignent Netflix et Amazon en adoptant les tests et l'ingénierie du chaos. Cet article explore les principes fondamentaux de l'ingénierie du chaos, ses avantages et inconvénients, le concept de « singes du chaos » et détermine si les tests du chaos sont adaptés à votre équipe.
Qu'est-ce que l'ingénierie des tests du chaos ?
Tests de chaos, ou ingénierie du chaos L'ingénierie du chaos est une approche rigoureuse visant à tester l'intégrité d'un système en simulant et en identifiant proactivement les défaillances dans un environnement donné avant qu'elles n'entraînent des interruptions de service imprévues ou une expérience utilisateur négative. Les équipes DevOps et informatiques qui utilisent l'ingénierie du chaos doivent mettre en place un système d'outils de surveillance et exécuter activement des tests de chaos en environnement de production. Ainsi, elles peuvent observer des simulations réalistes de la façon dont leur application ou service réagit à différentes contraintes.
L'ingénierie du chaos repose sur cinq principes principaux :
- Assurez-vous du bon fonctionnement de votre système et définissez un état stable. Pour ce faire, vous devrez définir un « état stable » ou une commande comme une sortie système mesurable qui indique un comportement de fonctionnement normal (taux d'erreur bien inférieur à un pour cent).
- Supposons que l'état stationnaire du système se maintienne. Une fois qu'un état stationnaire a été déterminé, il faut supposer qu'il se maintiendra aussi bien dans les conditions de contrôle que dans les conditions expérimentales.
- Veillez à minimiser l'impact sur vos utilisateurs Lors des tests de chaos, l'objectif est de tenter activement de perturber le système, tout en minimisant l'impact et les conséquences négatives pour vos utilisateurs. Votre équipe veillera à ce que tous les tests soient ciblés sur des zones spécifiques et sera prête à intervenir en cas d'incident.
- Introduisez le chaos. Une fois que vous êtes certain du bon fonctionnement de votre système, de la préparation de votre équipe et du confinement de la zone d'impact, vous pouvez lancer vos tests de résistance au chaos. Il est important d'introduire différentes variables afin de simuler des scénarios réalistes, allant d'une panne de serveur à un dysfonctionnement matériel en passant par une coupure de connexion réseau. Il est préférable de réaliser ces tests en environnement de production afin d'observer la réaction de votre service ou application à ces événements sans impacter directement la version en production et les utilisateurs actifs.
- Surveiller et répéter. En ingénierie du chaos, la clé est de tester de manière constante, en introduisant du chaos pour déceler les faiblesses du système. L'objectif est de réfuter l'hypothèse initiale et, par la même occasion, de construire un système plus fiable et à toute épreuve.
Qu'est-ce que Chaos Monkey et comment ça marche ?
Lors de la migration de Netflix vers AWS, l'entreprise a entrepris des tests de robustesse en créant différents « monstres de chaos » afin de garantir des tests continus et cohérents. Ces monstres étaient déployés dans le système pour y introduire des problèmes spécifiques (latences réseau, instances défaillantes, segments de données manquants, etc.) et simuler ainsi divers scénarios d'utilisation réelle.
Chaque singe du chaos avait son propre nom et sa propre fonction, notamment :
- Singe de latence : Induit des retards artificiels
- Singes de la conformité et de la sécurité : Traquer et éliminer les instances qui ne respectent pas les bonnes pratiques
- Singe concierge : Nettoie et supprime les ressources inutilisées
- Gorille du chaos : Simule une panne complète d'une zone de disponibilité Amazon.
Collectivement, ces singes du chaos et d'autres encore sont désormais connus sous le nom d'Armée Simienne.
Les avantages et les inconvénients des tests de chaos ?
L'ingénierie du chaos gagne en popularité auprès des plus grandes équipes informatiques et DevOps du secteur. Cependant, elle n'est pas toujours adaptée à toutes les équipes et à toutes les situations.
Les avantages des tests de chaos sont les suivants :
- Les équipes informatiques et DevOps sont en mesure d'identifier et de résoudre plus rapidement les problèmes qui pourraient ne pas être détectés par d'autres tests.
- Les temps d'arrêt et les pannes non planifiés sont beaucoup moins susceptibles de se produire grâce à des tests proactifs et constants.
- Renforce l'intégrité du système
- Idéal pour les systèmes vastes et complexes (ex. : applications et services cloud) ainsi que pour la mise à l’échelle.
Cependant, les tests de chaos peuvent ne pas convenir à :
- Systèmes plus petits ou logiciels de bureau
- Applications et services qui ne sont pas essentiels à la réussite de l'entreprise
- Environnements applicatifs ne nécessitant pas une disponibilité 24h/24 et 7j/7 via les SLA clients
- Systèmes dans lesquels les pannes sont acceptables si elles sont résolues avant la fin de la journée
Comment fonctionne le test du chaos dans le contexte DevOps ?
L'ingénierie du chaos s'intègre parfaitement à une structure DevOps. Généralement, elle incombe à un ingénieur DevOps, comme le spécialiste de l'assurance de l'expérience (XA). Ce dernier est chargé de définir les différents scénarios de test, d'exécuter les tests et de suivre les résultats. Il veille également à minimiser l'impact sur le client.
Lors des tests, l'ingénieur DevOps doit faire preuve d'une grande prudence. D'un côté, il y a les tests d'intégrité du système, qui consistent à introduire des perturbations et à tenter de le faire planter (d'où l'intérêt de réaliser ces tests en environnement de production). De l'autre, il y a les tests non planifiés ou mal maîtrisés qui peuvent effectivement provoquer un plantage du système et impacter l'expérience utilisateur.
Comment débuter avec les tests de chaos
Envie de vous lancer dans les tests de chaos sur votre propre système ? Avant de déployer une armée de robots de test, il est essentiel de déterminer si ces tests et l'ingénierie du chaos sont adaptés à votre équipe et à votre entreprise. L'ingénierie du chaos s'est avérée extrêmement efficace pour améliorer l'intégrité des systèmes très vastes et complexes, offrant des avantages tels que des temps de réponse aux incidents plus rapides, une réduction des temps d'arrêt non planifiés et une flexibilité optimale en matière d'évolutivité. Cependant, les tests de chaos ne sont pas forcément nécessaires pour les systèmes plus petits ou les logiciels de bureau.
Si vous souhaitez en savoir plus sur l'ingénierie du chaos et sur la manière de l'implémenter au sein de votre organisation, n'hésitez pas à nous contacter en ligne ou Démarrez votre essai gratuit de 14 jours dès aujourd'hui.