Qu'est-ce Que L'ingénierie Du Chaos ? Principes, Avantages Et Outils

|

Accueil / DevOps / Qu’est-ce que l’ingénierie du chaos ? Principes, avantages et outils

La recherche de défauts dans un système distribué va au-delà de la capacité des tests d’application standard. Les entreprises ont besoin de moyens plus intelligents pour tester les microservices en continu. Une stratégie qui gagne en popularité est l’ingénierie du chaos.

Grâce à cette pratique de test proactif, une organisation peut rechercher et corriger les défaillances avant qu’elles ne provoquent une panne coûteuse. Lisez la suite pour savoir comment l’ingénierie du chaos améliore la fiabilité des systèmes distribués à grande échelle.

Qu’est-ce Que L’ingénierie Du Chaos ? Défini

L’ingénierie du chaos est une stratégie de découverte de vulnérabilités dans un système distribué. Cette pratique nécessite d’injecter des échecs et des erreurs dans le logiciel pendant la production. Une fois que vous avez intentionnellement causé un bogue, surveillez les effets pour voir comment le système réagit au stress.

L’ingénierie du chaos permet à un administrateur de :

  • Identifier les points faibles d’un système.
  • Voyez en temps réel comment un système réagit à la pression.
  • Préparez l’équipe à de vrais échecs.
  • Identifiez les bogues qui n’ont pas encore causé de problèmes à l’échelle du système.

Netflix a été la première organisation à introduire l’ingénierie du chaos. En 2010, la société a publié un outil appelé Chaos Monkey. Avec cet outil, les administrateurs ont pu provoquer des pannes dans des endroits aléatoires à des intervalles aléatoires. Une telle approche de test a rendu le système basé sur le cloud distribué de Netflix beaucoup plus résistant aux pannes.

Qui Utilise L’ingénierie Du Chaos ?

Des organisations plus traditionnelles ont également adopté les tests de chaos. Par exemple, la National Australia Bank a appliqué le chaos pour arrêter les serveurs de manière aléatoire et renforcer la résilience du système.

Le Besoin D’ingénierie Du Chaos

Peter Deutsch et ses collègues de Sun Microsystem ont énuméré huit fausses hypothèses que les programmeurs font couramment à propos des systèmes distribués :

  • Le réseau est fiable.
  • Il n’y a aucune latence.
  • La bande passante est infinie.
  • Le réseau est sécurisé.
  • La topologie ne change jamais.
  • Il y a un administrateur.
  • Le coût du transport est nul.
  • Le réseau est homogène.

Ces erreurs montrent la dynamique d’une application distribuée conçue dans une architecture de microservices. Ce type de système comporte de nombreuses pièces mobiles et les administrateurs ont peu de contrôle sur l’infrastructure cloud.

Des modifications constantes de la configuration provoquent un comportement inattendu du système. Il est impossible de prédire ces comportements, mais nous pouvons les reproduire et les tester avec l’ingénierie du chaos.

Différence Entre L’ingénierie Du Chaos Et Les Tests De Défaillance

Un test d’échec examine une seule condition et détermine si une propriété est vraie ou fausse. Un tel test brise un système de manière préconçue. Les résultats sont généralement binaires et ne révèlent pas de nouvelles informations sur l’application.

Le but d’un test de chaos est de générer de nouvelles connaissances sur le système. Une portée plus large et des résultats imprévisibles vous permettent d’en savoir plus sur les comportements, les propriétés et les performances du système. Vous ouvrez de nouvelles pistes d’exploration et voyez comment vous pouvez améliorer le système.

Bien que différents, les tests de chaos et de défaillance ont un certain chevauchement dans les préoccupations et les outils utilisés. Vous obtenez les meilleurs résultats lorsque vous utilisez les deux disciplines pour tester une application.

Comment Fonctionne L’ingénierie Du Chaos

Tous les tests en ingénierie du chaos se déroulent à travers des expériences dites de chaos. Chaque expérience commence par injecter un défaut spécifique dans un système, tel qu’une latence, une panne de processeur ou un trou noir du réseau. Les administrateurs observent ensuite et comparent ce qu’ils pensent qu’il va se passer avec ce qui se passe réellement.

Une expérience implique généralement deux groupes d’ingénieurs. Le premier groupe contrôle l’injection de panne, et le second groupe s’occupe des effets.

Voici un flux étape par étape d’une expérience de chaos :

Étape 1 : Création D’une Hypothèse

Les ingénieurs analysent le système et choisissent la panne à provoquer. L’étape centrale de l’ingénierie du chaos consiste à prédire comment le système se comportera une fois qu’il rencontrera un bogue particulier.

Les ingénieurs doivent également déterminer les seuils métriques critiques avant de commencer un test. Les métriques se présentent généralement en deux ensembles :

  • Métriques clés : il s’agit des principales métriques de l’expérience. Par exemple, vous pouvez mesurer l’impact sur la latence, les requêtes par seconde ou les ressources système.
  • Mesures client : ce sont des mesures de précaution qui vous indiquent si le test est allé trop loin. Des exemples de métriques client sont les commandes par minute ou les démarrages de flux par seconde. Si un test commence à avoir un impact sur les métriques client, c’est un signe pour les administrateurs d’arrêter d’expérimenter.

Dans certains tests, les deux mesures peuvent se chevaucher.

Étape 2 : Injection De Fautes

Les ingénieurs ajoutent une défaillance spécifique au système. Puisqu’il n’y a aucun moyen d’être sûr du comportement de l’application, il existe toujours un plan de sauvegarde.

La plupart des outils d’ingénierie du chaos ont une option inverse. De cette façon, si quelque chose ne va pas, vous pouvez interrompre le test en toute sécurité et revenir à un état stable de l’application.

Étape 3 : Mesurer L’impact

Les ingénieurs surveillent le système pendant que le bogue cause des problèmes importants. Les mesures clés sont la principale préoccupation, mais surveillez toujours l’ensemble du système.

Si le test déclenche une panne simulée, l’équipe recherche la meilleure façon de la résoudre.

Étape 4 : Vérifiez (ou Infirmez) Votre Hypothèse

Un test de chaos réussi a l’un des deux résultats. Soit vous vérifiez la résilience du système, soit vous trouvez un problème que vous devez résoudre. Les deux sont de bons résultats.

Principes De L’ingénierie Du Chaos

Bien que le nom puisse suggérer le contraire, il n’y a rien d’aléatoire dans l’ingénierie du chaos.

Cette méthode de test suit des principes stricts, qui incluent les principes suivants :

Connaître L’état Normal De Votre Système

Définissez l’état d’équilibre de votre système. Le comportement habituel d’un système est un point de référence pour toute expérience de chaos.

Injecter Des Bogues Et Des échecs Réalistes

Toutes les expériences doivent refléter des scénarios réalistes et probables. Lorsque vous injectez une défaillance réelle, vous avez une bonne idée des processus et des technologies qui nécessitent une mise à niveau.

Essai En Production

Vous ne pouvez voir comment les pannes affectent le système que si vous appliquez le test à un environnement de production.

Si votre équipe a peu ou pas d’expérience avec les tests de chaos, laissez-la commencer à expérimenter dans un environnement de développement. Testez l’environnement de production une fois prêt.

Contrôlez Le Rayon De Souffle

Minimisez toujours le rayon d’explosion d’un test de chaos. Comme ces tests se déroulent dans un environnement de production, il est possible que le test affecte les utilisateurs finaux.

Une autre précaution standard consiste à disposer d’une équipe prête à intervenir en cas d’incident, juste au cas où.

Chaos Continu

Vous pouvez automatiser les expériences de chaos au même niveau que votre pipeline CI/CD. Le chaos constant permet à votre équipe d’améliorer continuellement les systèmes actuels et futurs.

Avantages De L’ingénierie Du Chaos

Les avantages de l’ingénierie du chaos s’étendent sur plusieurs fronts commerciaux :

Avantages Commerciaux

L’ingénierie du chaos aide à arrêter les pertes de revenus importantes en évitant les pannes prolongées. Cette pratique permet également aux entreprises d’évoluer rapidement sans perdre la fiabilité de leurs services.

Avantages Techniques

Les connaissances tirées des expériences de chaos réduisent les incidents, mais ce n’est pas là que s’arrêtent les avantages techniques. L’équipe acquiert une meilleure compréhension des modes et des dépendances du système, ce qui lui permet de construire une conception de système plus robuste.

Un test de chaos est également une excellente formation sur appel pour l’équipe d’ingénierie.

Avantages Clients

Moins de pannes signifie moins de perturbations pour les utilisateurs finaux. L’ amélioration de la disponibilité et de la durabilité du service sont les deux principaux avantages pour le client de l’ingénierie du chaos.

Outils D’ingénierie Du Chaos

Voici les outils d’ingénierie du chaos les plus courants :

  • Chaos Monkey : Il s’agit de l’outil original créé chez Netflix. Bien qu’il soit sorti en 2010, Chaos Monkey reçoit toujours des mises à jour régulières et est l’outil de test de chaos par excellence.
  • Gremlin : Gremlin aide les clients à configurer et à contrôler les tests de chaos. La version gratuite de l’outil propose des tests de base, tels que l’arrêt des machines et la simulation d’une charge CPU élevée.
  • Chaos Toolkit : cette initiative open source facilite les tests avec une API ouverte et un format JSON standard.
  • Pumba : Pumba est un test de chaos et un outil d’émulation de réseau pour Docker.
  • Litmus : un outil d’ingénierie du chaos pour les charges de travail avec état sur Kubernetes.

Pour suivre l’évolution des nouveaux outils, mettez en signet le diagramme créé par la communauté Chaos Engineering Slack. Outre les outils, le graphique permet également de suivre les ingénieurs connus travaillant avec des tests de chaos.

Exemples D’ingénierie Du Chaos

Il n’y a pas de limites aux expériences de chaos. Le type de tests que vous exécutez dépend de l’architecture de votre système distribué et des objectifs commerciaux.

Voici une liste des tests de chaos les plus courants :

  • Simulation de la défaillance d’un micro-composant.
  • Désactiver une machine virtuelle pour voir comment une dépendance réagit.
  • Simulation d’une charge CPU élevée.
  • Déconnexion du système du centre de données.
  • Injecter de la latence entre les services.
  • Aléatoirement, les fonctions déclenchent des exceptions (également appelées chaos basé sur les fonctions).
  • Ajouter des instructions à un programme et permettre l’injection de fautes (également appelée insertion de code).
  • Interruption des synchronisations entre les horloges système.
  • Émulation des erreurs d’E/S.
  • Provoquant des pics de trafic soudains.
  • Injecter des échecs byzantins.

Ingénierie Du Chaos Et DevOps

L’ingénierie du chaos est une pratique courante dans la culture DevOps. De tels tests permettent à DevOps d’analyser en profondeur les applications tout en suivant le rythme du développement agile.

Les équipes DevOps utilisent couramment les tests de chaos pour définir une ligne de base fonctionnelle et des tolérances pour l’infrastructure. Les tests aident également à créer de meilleures politiques et processus en clarifiant à la fois les sorties stables et chaotiques.

Certaines entreprises préfèrent intégrer l’ingénierie du chaos dans leur cycle de vie de développement logiciel. Le chaos intégré permet aux entreprises d’assurer la fiabilité de chaque nouvelle fonctionnalité.

Un Must Pour Tout Système Distribué à Grande échelle

L’examen continu des logiciels est vital à la fois pour la sécurité et la fonctionnalité des applications.