Découvrons comment vous pouvez assurer la fiabilité de votre production à l'aide des outils d'ingénierie du chaos.
L'ingénierie du chaos est une discipline dans laquelle vous expérimentez sur votre système ou application pour révéler ses faiblesses et ses défaillances de capacité. Ce sont des choses dont vous ne pensiez pas qu'elles pourraient se produire lors de leur création. Ainsi, vous provoqueriez volontairement des pannes sur votre système pour montrer ses faiblesses pour apporter les correctifs et rendre votre système et votre application plus résilients.
De nombreuses organisations populaires comme Netflix, LinkedIn et Facebook effectuent une ingénierie du chaos pour mieux comprendre leur microservices architecture et systèmes distribués. Il aide à trouver les nouveaux problèmes plus tôt que les plaintes des utilisateurs réels et à prendre les mesures nécessaires pour les corriger. C'est ainsi que ces organisations peuvent servir des millions d'utilisateurs, augmenter leur productivité et économiser des millions de dollars 🤑.
Avantages de l'ingénierie du chaos:
- Contrôlez les pertes de revenus en identifiant les problèmes critiques
- Réduction des pannes du système ou de l'application
- Meilleure expérience utilisateur avec moins de perturbations et une haute disponibilité du service
- Cela vous aide à découvrir le système et à gagner en confiance.
Dans quelle mesure avez-vous confiance en la fiabilité de votre production? Est-ce vraiment à l'épreuve des catastrophes?
Découvrons-le à l'aide des outils de test de chaos populaires suivants.
Chaos Mesh
Maille du chaos est une solution de gestion de l'ingénierie du chaos qui injecte des défauts dans chaque couche d'un Kubernetes système. Cela inclut les pods, le réseau, les E/S système et le noyau. Chaos Mesh peut tuer automatiquement les pods Kubernetes et simuler les latences. Il peut perturber la communication pod à pod et simuler des erreurs de lecture/écriture. Il peut programmer des règles pour les expérimentations et définir leur périmètre. Ces expériences sont spécifiées à l'aide de fichiers YAML.
Chaos Mesh dispose d'un tableau de bord pour afficher les analyses sur les expériences. Il s'exécute sur Kubernetes et prend en charge la majorité de la plate-forme cloud. Il est open-source et a récemment été accepté comme projet sandbox CNCF. En utilisant les principes d'ingénierie du chaos, vous pouvez ajouter Chaos Mesh à votre flux de travail DevOps pour créer des applications résilientes.

Caractéristiques de l'ingénierie du chaos:
- Facilement déployable sur les clusters Kubernetes sans modification de la logique de déploiement
- Aucune dépendance unique n'est requise pour le déploiement
- Définit les objets chaos à l'aide de CustomResourceDefinitions (CRD)
- Fournit un tableau de bord pour suivre toutes les expériences
Chaos ToolKit
Boîte à outils du chaos est un outil open-source et simple pour l'automatisation des expériences d'ingénierie du chaos.

Vous intégrez Chaos ToolKit à votre système à l'aide d'un ensemble de pilotes ou de plugins qu'il prend en charge AWS, Google Cloud, Slack, Prométhée, etc.

Caractéristiques du Chaos ToolKit:
- Fournit une API ouverte déclarative pour créer des expériences de chaos indépendantes d'un fournisseur ou d'une technologie
- Peut être facilement intégré dans les pipelines CICD pour l'automatisation
- Fournit un support commercial et d'entreprise également via ChaosIQ
ChaosKube
Comme vous pouvez le deviner par son nom, c'est pour Kubernetes.
Chaoskube est un outil de chaos open source qui tue périodiquement les pods aléatoires dans le cluster Kubernetes. Cela vous aide à comprendre comment votre système réagira en cas de panne du pod. Par défaut, il tue un pod dans n'importe quel espace de noms toutes les 10 minutes. Vous pouvez filtrer les pods cibles dans Chaoskube en utilisant des espaces de noms, des étiquettes, des annotations, etc. Il peut être facilement installé en utilisant Chaoskube.

Chaos Monkey
Singe du chaos est un outil utilisé pour vérifier la résilience des systèmes cloud en créant délibérément des pannes pour que ces systèmes comprennent leur réaction. Netflix l'a créé pour tester la résilience et la récupérabilité de son infrastructure AWS. Il a été nommé Chaos Monkey car il crée la destruction comme un singe sauvage et armé pour tester les échecs.
C'est aussi Chaos Monkey, qui a donné naissance à la nouvelle pratique d'ingénierie Chaos Engineering. Il a été créé sur le principe qu'il vaut mieux échouer à plusieurs reprises pour éviter tout échec significatif soudainement.

Caractéristiques du singe du chaos:
- Il vous aide à vous préparer aux échecs d'instances aléatoires.
- Encourage la redondance pour les pannes inattendues
- Utilise Spinnaker pour activer la compatibilité cross-cloud
- Fournit un calendrier configurable pour simuler les échecs
- Intégré avec gouverneur pour ajouter de nouvelles dépendances à chaos monkey

Simmy
Simmy est un outil de chaos d'injection de fautes qui s'intègre au projet de résilience Polly pour .NET. Il vous permet de créer des politiques d'injection de chaos via Polly, où vous exécutez vos codes. Il propose différentes politiques telles que la politique d'exceptions pour injecter des exceptions dans le système, la politique de comportement pour injecter tout nouveau comportement, etc. Ces politiques sont conçues pour injecter le comportement de manière aléatoire.

Caractéristiques de Simmy:
- Fournit des politiques de singe ou des politiques de chaos pour semer le chaos
- Facile à tester les échecs de dépendance
- Il aide à revenir rapidement au modèle de travail et contrôle le rayon de l'explosion.
- Il est prêt pour la production.
- Il peut également définir des pannes en fonction de facteurs externes (par exemple, des pannes dues à une configuration globale)
Pystol
pistolet est un outil utilisé pour injecter des injections défectueuses dans des environnements cloud natifs. Il regarde les événements dans l'ETCD via les opérateurs Kubernetes. Lorsqu'une action d'injection de pannes est exécutée, les opérateurs créent les pods et exécutent certaines collections Ansible. Ainsi, les développeurs n'ont pas besoin d'écrire leurs propres actions à effectuer.
Pystol propose des actions prêtes à l'emploi pour tester le système. Néanmoins, si un développeur souhaite créer une nouvelle action, cela peut être fait en utilisant GoLang et Python.
Il fournit un tableau de bord d'intégration continue pour donner une vue récapitulative de toutes les opérations de travail. Vous pouvez exécuter Pystol localement ou le déployer dans un conteneur à l'aide de son image docker. Pystol fournit deux interfaces, l'une est l'interface utilisateur Web et l'autre via CLI. De toute évidence, l'interface utilisateur Web est une meilleure option.

Muxy
Muxy est un proxy pour tester vos modèles de résilience et de tolérance aux pannes pour les défaillances réelles des systèmes distribués. Il peut altérer le niveau de transport (couche 4), le niveau de session TCP (couche 5) et le niveau de protocole HTTP (couche 7).

Caractéristiques de Muxy:
- Architecture modulaire et facilement extensible
- Possède un conteneur Docker officiel
- Facile à installer, aucune dépendance requise.
- Idéal pour les tests continus de résilience
- Simule les problèmes de connectivité réseau pour les systèmes distribués et les appareils mobiles
Pumba
Pumba est un outil en ligne de commande qui effectue des tests de chaos pour les conteneurs Docker. Avec Pumba, vous plantez délibérément les conteneurs Docker de l'application pour voir comment le système réagit. Vous pouvez également effectuer des tests de résistance sur les ressources du conteneur telles que le processeur, la mémoire, le système de fichiers, les entrées/sorties, etc.
Vous pouvez également exécuter Pumba sur un cluster Kubernetes. Vous devez utiliser DaemonSets pour déployer Pumba sur les nœuds Kubernetes. Vous pouvez utiliser plusieurs conteneurs Pumba pour exécuter plusieurs commandes Pumba dans le même DaemonSet.

ChaosBlade
Lame du Chaos est un outil open-source pour injecter des expériences dans les systèmes d'Alibaba. Il teste tous les échecs auxquels Alibaba a été confronté au cours des dix dernières années et applique les meilleures pratiques pour les éviter. Il suit les principes d'ingénierie du chaos pour vérifier la tolérance aux pannes des systèmes distribués.

Caractéristiques de ChaosBlade:
- Fournit des scénarios expérimentaux pour plusieurs ressources telles que le processeur, le réseau, la mémoire, le disque, etc.
- Fournit des scénarios expérimentaux pour les nœuds, les réseaux et les pods sur la plate-forme Kubernetes
- Fournit des commandes CLI faciles à utiliser pour exécuter des expériences
Litmus
Tournesol suit les principes d'ingénierie du chaos natifs du cloud. La mission de l'outil litmus est de fournir un cadre complet pour trouver les faiblesses de vos systèmes Kubernetes et de vos applications en cours d'exécution sur Kubernetes.
Il a un opérateur du chaos et les CRD (CustomResourceDefinitions) autour de cela, permettant une capacité plug-and-play. Il s'agit de mettre votre logique de chaos dans une image docker, de la jeter dans un cadre décisif et de les orchestrer à l'aide des CRD.
Caractéristiques de tournesol:
- Aide les ingénieurs et les développeurs de fiabilité du site à trouver les faiblesses du système Kubernetes
- Fournit des expériences génériques prêtes à l'emploi
- Fournit l'API Chaos pour la gestion du flux de travail du chaos
- Le SDK Litmus prend en charge Go, Python et Ansible pour créer vos propres expériences.
Gremlin
Diablotin aide les ingénieurs à créer des logiciels plus résilients. Il fournit une plate-forme pour exécuter des expériences d'ingénierie du chaos en toute sécurité, en toute sécurité et simplement.
Vous pouvez judicieusement injecter des échecs dans des hôtes ou des conteneurs avec gremlin, où qu'ils se trouvent, qu'il s'agisse du cloud public ou de votre propre centre de données.

Caractéristiques de Gremlin:
- Installe un agent léger sur vos hôtes ou conteneurs pour injecter des échecs
- Fournit plus de 10 modes d'attaque d'infrastructure différents
- Les gremlins d'état vous permettent de manipuler l'heure du système, d'arrêter ou de redémarrer les hôtes et de tuer les processeurs.
- Les gremlins du réseau peuvent injecter une latence pour introduire une perte de paquets ou supprimer le trafic.
- Les attaques de la bibliothèque Alfi de Gremlin peuvent être configurées, démarrées et arrêtées via l'application Web. API ou CLI
- Vous permet de cibler précisément le rayon d'explosion que vous souhaitez attaquer
- Vous permet d'arrêter toutes les attaques et de ramener le système à un état stable
Steadybit
Bit fixe vise à réduire les temps d'arrêt de manière proactive et offre une visibilité sur les problèmes du système. Vous pouvez exécuter cet outil localement sur votre infrastructure ou cloud as a service (SaaS).

Pour utiliser Steadybit, vous définissez la situation, simulez les expériences, exécutez les expériences simulées en production et automatisez toutes les expériences. Il exécute des agents intelligents sur votre système pour découvrir les problèmes et faiblesses potentiels. Il s'intègre facilement à plusieurs systèmes.
Conclusion
Allez-y et soyez assez courageux pour appliquer les principes de l'ingénierie du chaos et tester votre production avec les outils mentionnés ci-dessus. Ces outils vous aideront à trouver plusieurs faiblesses non identifiées dans votre système, et cela vous aidera à rendre votre système plus résilient.