Qu'est-ce que Chaos Monkey? L'ingénierie du chaos expliquée

Lancé en dehors des couloirs de Netflix lors de son passage de la distribution de DVD à la construction de systèmes cloud distribués pour le streaming vidéo, Chaos Monkey a introduit un principe d'ingénierie qui a été adopté par les organisations de développement logiciel de toutes formes et tailles: à savoir, qu'en cassant intentionnellement les systèmes, vous peuvent apprendre à les rendre plus résilients.

Selon le billet de blog original de Netflix sur le sujet, publié en juillet 2011 par Yury Izrailevsky, alors directeur du cloud et de l'infrastructure des systèmes, et Ariel Tseitlin, directeur des solutions cloud de la société de streaming, Chaos Monkey a été conçu pour désactiver au hasard les instances de production sur son infrastructure Amazon Web Services, exposant ainsi les faiblesses que les ingénieurs de Netflix pourraient éliminer en créant de meilleurs mécanismes de récupération automatique.

Le nom accrocheur vient de «l'idée de libérer un singe sauvage avec une arme dans votre centre de données (ou région du cloud) pour abattre au hasard des instances et mâcher des câbles - tout en continuant à servir nos clients sans interruption», le blog post États.

En pratique, cela impliquerait une simple application «sélectionnant une instance au hasard dans chaque cluster, et à un moment donné pendant les heures de bureau, la désactivait sans avertissement. Il le ferait tous les jours de travail », comme détaillé par les anciens ingénieurs de Netflix Nora Jones et Casey Rosenthal dans leur livre complet sur le sujet, Chaos Engineering , publié par O'Reilly Media.

L'idée est qu'en apprenant où se trouvent vos points les plus faibles, les ingénieurs peuvent définir des déclencheurs automatisés pour lutter contre un problème, leur évitant ainsi un appel au milieu de la nuit en cas de problème. Chaos Monkey a depuis évolué vers toute une gamme de principes du chaos, sous la bannière de l'ingénierie du chaos.

Chaos Monkey chez Netflix

Chaos Monkey est né des efforts d'ingénierie de Netflix vers 2010, lorsque Greg Orzell - qui travaille maintenant chez GitHub appartenant à Microsoft - a été chargé de renforcer la résilience dans la nouvelle architecture basée sur le cloud de l'entreprise.

"La façon dont je pense Chaos Monkey n'est pas un exploit majeur de l'ingénierie", a déclaré Orzell. «La valeur que cela apporte est un changement d'état d'esprit qui était essentiel à l'époque alors que nous sommes passés de l'expédition de DVD à la diffusion en continu via Internet.

Au début, les ingénieurs de Netflix ont introduit toute une gamme de pannes et de problèmes dans les systèmes en utilisant une «armée simienne» d'outils open source, chacun représentant certains types de pannes, à commencer par Chaos Monkey supprimant les clusters AWS.

L'armée d'origine (maintenant principalement retirée au profit de nouveaux outils) comprenait des éléments comme Latency Monkey, qui induirait des retards artificiels dans la couche de communication client-serveur RESTful, et Doctor Monkey, qui exploiterait les contrôles de santé qui s'exécutent sur chaque instance. , ainsi que des moniteurs pour d'autres signes externes de santé (par exemple la charge du processeur) pour détecter les instances défectueuses et les supprimer du service si nécessaire.

Chaos Kong a propulsé Chaos Monkey au niveau supérieur en simulant une panne dans toute une zone de disponibilité AWS. «Il est très rare qu'une région AWS devienne indisponible, mais cela arrive», souligne un article de blog Netflix de 2015. 

«En exécutant régulièrement des expériences qui simulent une panne régionale, nous avons pu identifier rapidement les faiblesses systémiques et les corriger», poursuit l'article. "Lorsque US-EAST-1 est devenu indisponible, notre système était déjà suffisamment puissant pour gérer un basculement du trafic."

Comme Jones et Rosenthal le soulignent dans leur livre, laisser Chaos Kong se déchaîner sur l'infrastructure était «une affaire de coup de poing blanc avec une« salle de guerre »assemblée pour surveiller tous les aspects du service de streaming, et cela a duré des heures.

Deux ans plus tard, en juillet 2017, Netflix a présenté ChAP, la plateforme d'automatisation du chaos, qui «interroge le pipeline de déploiement pour un service spécifié par l'utilisateur. Il lance ensuite des clusters d'expérimentation et de contrôle de ce service, et achemine une petite quantité de trafic vers chacun », déclare le blog.

Principes d'ingénierie du chaos

Les pratiques de base du Chaos Monkey ont rapidement évolué, avec des déploiements de plus en plus importants via Chaos Kong, pour devenir plus tard formalisé comme l'ingénierie du chaos. Netflix n'a pas construit sa propre équipe d'ingénierie formelle du chaos avant 2015. Cette équipe était dirigée par Bruce Wong, maintenant directeur de l'ingénierie chez Stitch Fix.

Les principes de l'ingénierie du chaos ont été officiellement rassemblés par certains des auteurs originaux de Chaos Monkey, définissant la pratique comme: «La discipline d'expérimentation sur un système afin de renforcer la confiance dans la capacité du système à résister à des conditions turbulentes en production.

En pratique, cela prend la forme d'un processus en quatre étapes:

  1. Définition de «l'état d'équilibre» d'un système pour définir une ligne de base pour un comportement normal.
  2. Faites l'hypothèse que cet état d'équilibre continuera à la fois dans le groupe témoin et dans le groupe expérimental.
  3. Introduisez des variables qui reflètent des événements du monde réel tels que des serveurs qui plantent, des disques durs qui fonctionnent mal ou des connexions réseau qui sont interrompues.
  4. Essayez de réfuter l'hypothèse en recherchant une différence entre le groupe témoin et le groupe expérimental.

Si l'état d'équilibre est difficile à perturber, vous disposez d'un système robuste; s'il y a une faiblesse, vous avez quelque chose à corriger.

«Au cours des cinq années qui se sont écoulées depuis la publication de« The Principles », nous avons vu l'ingénierie du chaos évoluer pour relever de nouveaux défis dans de nouvelles industries», observent Jones et Rosenthal. «Les principes et les fondements de la pratique continueront à évoluer au fur et à mesure que l'adoption se répand dans l'industrie du logiciel et dans de nouveaux secteurs verticaux.»

Ingénierie du chaos avec Chaos Monkey

Pour exécuter la version open source de Chaos Monkey, vos systèmes devront répondre à un certain ensemble de conditions préalables, comme indiqué sur GitHub.

Chaos Monkey ne fonctionne pas en tant que service, vous devrez donc configurer une tâche cron comme indiqué sur la page GitHub, qui appelle ensuite Chaos Monkey une fois par semaine pour créer un calendrier de terminaisons.

Pour utiliser cette version de Chaos Monkey, vous devez utiliser la propre plate-forme de livraison continue open source de Netflix, Spinnaker, qui peut limiter la capacité de certaines organisations à adopter la méthode. Chaos Monkey nécessite également une base de données compatible MySQL, version 5.6 ou ultérieure.

Les propriétaires de services définissent leurs configurations Chaos Monkey via Spinnaker. Chaos Monkey fonctionne via Spinnaker pour obtenir des informations sur la façon dont les services sont déployés et met fin aux instances - machines virtuelles ou conteneurs - au hasard selon une fréquence et un calendrier que vous spécifiez.

Bien sûr, la mise en œuvre de Chaos Monkey n'est que le début de la tâche difficile et complexe de résolution des problèmes de résilience du système. Chaos Monkey découvre simplement les faiblesses du système; C'est ensuite aux équipes de développement ou d'ingénierie système d'identifier leurs causes et de trouver des solutions.

«L'outillage lui-même n'est pas cher, mais l'investissement que vous devez faire pour réagir à l'outillage l'est», comme le dit Orzell. S'engager dans l'ingénierie du chaos nécessite également de déplacer les ressources de la création de nouvelles fonctionnalités au renforcement de la résilience. «Chaque entreprise se trouve à un point différent de ce spectre et chacune doit décider du nombre de numéros à composer dans cet espace», ajoute-t-il.

Jones et Rosenthal affirment qu'au début, les ingénieurs de Netflix «ont reçu beaucoup de répulsion de la part des institutions financières en particulier».

Bien que les enjeux soient plus importants pour les banques, elles ont encore souffert de pannes, donc en mettant soigneusement en œuvre une «stratégie proactive comme l'ingénierie du chaos pour comprendre les risques afin d'éviter des résultats importants et incontrôlés», bon nombre de ces organisations ont changé d'avis, avec Capital One un adoptant, comme détaillé dans le livre.

Ressources d'ingénierie du chaos

Encore une fois, le dernier livre définitif sur le sujet est Chaos Engineering des anciens ingénieurs de Netflix Nora Jones et Casey Rosenthal, publié en avril 2020, qui s'appuie sur une grande partie du travail de ces auteurs, et d'autres, compilé dans le livre 2017 Chaos Engineering. . Pour un aperçu plus pratique, voir Learning Chaos Engineering de Russ Miles .

Netflix fournit une multitude de ressources sur le sujet sur GitHub, notamment un didacticiel, de nombreuses documentations, un compteur d'erreurs, un vérificateur de pannes et des outils de décryptage.

Gremlin - un fournisseur d'outils commerciaux pour exécuter des expériences d'ingénierie du chaos - propose son propre ensemble complet de ressources, qui sont disponibles gratuitement en ligne et au format PDF. La société soutient également divers efforts de la communauté, notamment Chaos Conf et une chaîne Slack.

O'Reilly dispose également d'une multitude de ressources, y compris cette liste de lecture pratique de livres et de vidéos sur le sujet.