iStock
Chaos engineering : comment choisir les bons outils
Malgré la jeunesse de cette pratique, les outils de chaos engineering pullulent. Voici les projets open et produits les plus populaires, ainsi que les critères de sélection au moment de les adopter.
Les méthodes de test traditionnelles sont largement efficaces pour les applications modernes hébergées dans le cloud ou conteneurisées, mais il existe des lacunes qui peuvent exposer les équipes à des incidents potentiels. L’ingénierie du chaos (chaos engineering dans la langue de Shakespeare) est apparue comme un processus qui permet aux développeurs de ne pas s’en tenir seulement à ces différentes techniques afin de découvrir les problèmes sous la surface des programmes en production.
C’était il y a peu une réflexion d’une des équipes de Radio France qui malgré son expérience solide dans le maintien en production de clusters Kubernetes, n’arrivait pas à identifier la source de certaines petites erreurs pouvant générer des effets boule de neige considérables.
En cela, les ingénieurs de Netflix ont été les premiers à codifier une liste de critères qui définissent des expériences de chaos (chaos experiments). Ces procédures visent sciemment à mettre à mal le système pour en dévoiler les failles les plus importantes ou celles jusqu’alors insoupçonnées.
Les outils de chaos engineering sont les agents du chaos. Ils automatisent certains mécanismes de désactivation temporaire ou de saturation volontaire de composants spécifiques de l’infrastructure, afin d’évaluer leurs effets sur les applications en production. Ils permettent également de surveiller ces runtimes à l’aide de diverses briques d’observabilité et de résoudre les évènements détectés.
En clair, ces outils automatisés aident les équipes à expérimenter les problèmes éventuels pouvant occasionner de graves interruptions de service. Il s’agit aussi d’ajouter aux processus de test plus classiques un élément de précision dans le but d’identifier la cause profonde d’une défaillance.
Idéalement, ils facilitent l’organisation et la gestion d’une journée de jeu de chaos engineering pour soutenir les équipes de sécurité, d’exploitation et de développement à s’entraîner et à coordonner une réponse à une panne importante.
Examinons les outils de chaos engineering les plus populaires et les critères de sélection adaptés aux besoins des équipes.
L’utilité des outils de chaos engineering
Le premier outil populaire d’ingénierie du chaos est Chaos Monkey de Netflix. Cet outil de résilience était rudimentaire, mais il fournissait les éléments essentiels pour mener à bien des expériences de chaos. Certaines organisations IT l’utilisent encore. Plusieurs autres alternatives commerciales et open source ont vu le jour, à savoir des outils offrant de meilleurs contrôles, des capacités d’intégration avec les plateformes du marché et des composants plus précis pour exécuter des expériences de chaos.
« Les outils d’ingénierie du chaos décèlent les problèmes avant qu’ils ne deviennent graves », déclare Ryan Petrich, directeur technique de Capsule, un service de sécurité dédié à Linux, qui a essayé de nombreux outils de ce type. Par exemple, les tests de chaos ont identifié des soucis d’expiration de certificats lors de la supervision de la sécurité de la couche transport de Capsule8. Ryan Petrich et son équipe ont remédié à la situation en mettant à jour l’infrastructure de surveillance, afin d’automatiser une semaine à l’avance la notification de l’expiration des certificats.
Dans un autre cas, Capsule8 a découvert, grâce à des tests de chaos, que lorsque divers systèmes étaient mis hors service, ils ne déclenchaient pas tous un basculement vers une autre région.
Même si les outils peuvent être utiles, l’ingénierie du chaos exige de la discipline et des pratiques opérationnelles relativement strictes pour être efficace, avertit M. Petrich. « Une fois que la disponibilité et la résilience sont des objectifs commerciaux et que l’on suppose que des mesures sont en place pour les garantir, le chaos engineering devient une démarche essentielle pour remettre en question et valider les hypothèses », ajoute-t-il.
Chaos Monkey
Même si Chaos Monkey est le plus ancien outil de chaos engineering et qu’il n’a pas beaucoup évolué, de nombreux développeurs affectionnent toujours cet outil pour sa simplicité. Chaos Monkey – et la brique connexe d’injection de pannes Simian Army – se concentre sur l’arrêt des instances de machines virtuelles et la reproduction d’incidents de production imprévisibles. Ces aspects sont appréciés par Jacek Zmudzinski, spécialiste marketing senior de la société de conseil en logiciels Future Processing.
« Il est excellent pour se préparer aux catastrophes », affirme-t-il. Le seul inconvénient de l’outil est son manque de procédure de récupération ou de retour en arrière (rollback). Si Jacek Zmudzinski estime que sa simplicité peut en faire une bonne option pour les petites entreprises et les startups, celles-ci devront disposer d’un mécanisme de rollback bien huilé pour faire face à tout problème.
Chaos Toolkit
L’un des premiers outils d’ingénierie du chaos avec lequel une équipe peut commencer est Chaos Toolkit. Ce projet open source est fourni avec une suite d’expériences de chaos standard que l’on peut exécuter, une bonne documentation d’introduction et supporte la plupart des principaux fournisseurs de cloud.
Le Chaos Toolkit établit une API déclarative et facilite le codage des expériences de chaos dans un système de contrôle de version de manière à les automatiser via un système CI/CD. Ce kit comprend des pilotes pour Kubernetes, AWS, Google, Azure et d’autres outils d’ingénierie du chaos, tels que Gremlin.
Chaos Mesh
Le projet open source Chaos Mesh peut s’intégrer dans un flux de développement et se veut particulièrement compatible avec Kubernetes sans aucune modification de la logique de déploiement, selon Nabil Mounem, fondateur de Have Websites, un service de comparaison d’outils de sites Web. Nabil Mounem apprécie également l’utilisation de CustomResourceDefinitions (ou CRD, des objets liés à Kubernetes) pour définir les objets du chaos. L’API a facilité le versioning, la gestion et l’automatisation des expériences de chaos. Chaos Mesh comprend également un tableau de bord permettant de suivre les expériences.
Un autre avantage de Chaos Mesh, selon Nabil Mounem, est la facilité avec laquelle son équipe peut injecter des défauts à travers diverses couches de dispositifs Kubernetes au niveau des pod, du réseau, du système E/S et du kernel. Les développeurs peuvent, entre autres, ajouter de la latence, interférer avec les communications ou imiter des erreurs de lecture/écriture. L’outil fonctionne avec toutes les grandes plateformes de cloud. Récemment, la Cloud Native Compute Foundation a intégré Chaos Mesh dans son programme Sandbox. Chaos Mesh a aidé Have Websites à construire une application plus résiliente, d’après Nabil Mounem.
Gremlin
Compte tenu de la manière dont les outils de chaos engineering identifient et résolvent les vulnérabilités et les problèmes de sécurité potentiels, Éric Florence – analyste en cybersécurité chez SecurityTech, une société de conseil en sécurité – a récemment commencé à explorer les outils d’ingénierie du chaos. Eric Florence utilise l’outil Gremlin parce qu’il offre de nombreux scénarios de dysfonctionnement – qu’une grande infrastructure IT complexe pourrait connaître à un moment ou à un autre – tels que des attaques au niveau CPU (de type Spectre et Meltdown) ou une surcharge de trafic sur les systèmes.
Autre avantage de Gremlin, il détecte automatiquement les composants de l’infrastructure et recommande des expériences pour identifier les modes de défaillance courants. L’outil peut également interrompre les expériences lorsque les systèmes deviennent instables.
Gremlin comprend des intégrations natives pour Kubernetes, AWS, Azure, Google Cloud et même l’infrastructure bare-metal.
Il est encore trop tôt pour le chaos engineering
« Aucun des outils disponibles n’est capable de tester et expérimenter une série complète de défaillances susceptibles de se produire dans des environnements réels », prévient Ryan Petrich.
En dehors de ces solutions, les organisations peuvent envisager diverses options commerciales potentiellement mieux adaptées ou faire appel aux fournisseurs ou aux ESN dans leur cheminement vers le chaos engineering, suggère-t-il. Certaines de ces options incluent les outils de Steadybit ou Verica, bien que Ryan Petrich ne les ait pas directement utilisés. Certains instruments se concentrent sur un type particulier de défaillance, de sorte que la meilleure approche implique généralement d’employer plusieurs outils et leur extension, avec des expériences personnalisées basées sur l’évaluation des risques opérationnels d’une entreprise.
Les outils sont également limités par l’API utilisée et le type de scénario que vous souhaitez simuler.
« Ces boîtes à outils ne constituent en aucun cas une solution à vos véritables problèmes », note Éric Florence. « Elles les mettent simplement en évidence des scénarios catastrophes et vous aident à vous préparer en conséquence. »
Enfin, la plupart de ces outils sont mieux adaptés aux tests de systèmes vastes et complexes s’étalant sur plusieurs régions et ne sont pas aussi efficaces une fois intégrés dans le SI d’une petite entreprise, ajoute-t-il. Dans un même temps, il conseille également aux petites entreprises d’effectuer quelques tests de base pour comprendre ce qui endommage l’infrastructure et améliorer la réponse à un problème réel.