Chaos Monkey

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche
Chaos Monkey

Description de l'image LogoChaosMonkeysNetflix.png.
Informations
Développé par NetflixVoir et modifier les données sur Wikidata
Dernière version 2.0.2 ()[1]Voir et modifier les données sur Wikidata
Dépôt github.com/Netflix/chaosmonkeyVoir et modifier les données sur Wikidata
Site web github.com/Netflix/chaosmonkeyVoir et modifier les données sur Wikidata

Le concept de Chaos Monkey a été inventé en 2011 par Netflix pour tester la résilience de ses infrastructures informatiques[2]. Le but de cet outil est de simuler des pannes en environnement réel et de vérifier que le système informatique continue à fonctionner.

Concept[modifier | modifier le code]

Depuis toujours, dans la conception des logiciels, la notion d'exigence non-fonctionnelle était incluse dans les spécifications. Ces exigences mentionnaient notamment la capacité du logiciel à tolérer les pannes, à être résilient pour garantir une Qualité de service optimale. Souvent par manque de temps face au besoin de livrer rapidement un logiciel ou par méconnaissance du domaine, les équipes de développement faisaient l'impasse sur ces sujets.

En 2011, des ingénieurs de Netflix - Yury Izrailevsky, aujourd'hui directeur Cloud & Infrastructure et Ariel Tseitlin, aujourd'hui directeur des solutions Cloud[3], ont eu l'idée de changer le paradigme en mettant en place un outil en environnement de production, soit l'environnement réel utilisé par les clients de Netflix, un outil qui allait causer des pannes. Ils ont donc proposé de passer d'un modèle où les équipes construisent un logiciel en espérant qu'il n'y aura pas de pannes à un modèle où ils seront certains qu'il y a aura une panne - mais provoquée. Prendre en compte la résilience dans la conception des logiciels n'est donc plus une option, mais une obligation :

« Chez Netflix, notre culture de liberté et de responsabilité nous a conduit à ne pas forcer les ingénieurs à concevoir leur code d’une manière spécifique. À la place, nous avons découvert que nous pouvions aligner nos équipes autour de la notion de résilience des infrastructures en isolant les problèmes créés par la neutralisation des serveurs et en les poussant à l’extrême. Nous avons créé Chaos Monkey, un programme qui choisit un serveur au hasard et le neutralise pendant ses heures habituelles d’activité. Certains trouveront cela dingue, mais nous ne pouvions dépendre de l’occurrence aléatoire d’un évènement pour tester notre comportement face aux conséquences mêmes de cet évènement. Savoir que cela allait arriver fréquemment a créé un solide alignement parmi les ingénieurs pour construire la redondance et l’automatisation des process pour survivre à ce type d’incidents, sans que cela ait d’impact sur les millions d’utilisateurs de Netflix. Chaos Monkey est un de nos outils les plus efficaces pour améliorer la qualité de nos services »[4].

Le concept de Chaos Monkey consiste à régulièrement choisir au hasard des instances dans l’environnement de production et de les mettre délibérément hors service. En « tuant » régulièrement des instances au hasard, on s'assure avoir anticipé correctement la survenue de ce type d’incidents en mettant en place une architecture suffisamment redondante pour qu’une panne de serveurs n’affecte d’aucune façon les millions de membres de Netflix dans le monde. Le nom de Chaos monkey est expliqué dans le livre Chaos Monkeys d’Antonio Garcia Martinez[5] :

Imaginez un singe s’introduisant dans un data center, ces « fermes » de serveurs qui hébergent toutes les fonctions critiques de nos activités en ligne. Le singe arrache au hasard des câbles, détruit des appareils et retourne tout ce qui lui passe par la main. Le défi pour les responsables informatiques est de concevoir le système d’information dont ils ont la charge pour qu’il puisse fonctionner malgré ces singes, dont personne ne sait jamais quand ils arrivent et ce qu’ils vont détruire.

Netflix a rendu public le code source de cet outil en 2012[6],[7].

Différentes variantes de la Simian Army[modifier | modifier le code]

Netflix Simian Army

La Simian Army[7] (litt. « l’armée simiesque ») est une suite d’outils développés par Netflix pour tester la fiabilité, la sécurité ou la résilience de ses infrastructures Amazon Web Services[8]. Elle a été initiée par Greg Orzell, alors Ingénieur système senior chez Netflix.

  • Chaos Monkey

Premier outil développé par Greg Orzell, Netflix, il permet de choisir au hasard des instances dans l’environnement de production et de les mettre délibérément hors service.

  • Chaos Gorilla

Grand frère du monkey, Chaos Gorilla, fait tomber une zone complète de disponibilité Amazon[9].

  • Chaos Kong

Tout en haut de la pyramide hiérarchique de la Simian Army, Chaos Kong, fait tomber une région complète Amazon, créé par Luke Koweski.

  • Latency Monkey

En introduisant des délais dans les échanges au niveau des couches de communication, outil qui permet de tester la tolérance à la perte de performance d'un composant externe dont le système est dépendant, jusqu'à simulation d'une coupure complète par - un délai infini, sans avoir besoin de demander au partenaire concerné de couper son service.

  • Doctor Monkey

Outil qui détecte toutes instances qui présentent des risques de santé - surcharge CPU par exemple - et les écarte du système pour analyse des causes racines voire pour extinction.

  • Janitor Monkey

Outil qui met hors service toutes instances non utilisées afin d'éviter de surconsommer, créé également par Greg Orzell.

  • Conformity Monkey

Outil qui met hors service toutes instances non conformes afin de permettre au système de la recréer correctement par Greg Orzell.

  • Sécurity Monkey

Dérivé du Conformity Monkey, outil qui met hors service toutes instances qui présentent des vulnérabilités.

  • 10–18 Monkey

Outil qui détecte des problèmes de localisation, de langage (l10n-i18n) sur les instances.

Chaos Monkey et Devops[modifier | modifier le code]

La chaîne d'outils Devops

Dans le cadre du mouvement Devops, une attention particulière est portée à la sûreté de fonctionnement des systèmes informatiques permettant ainsi d'apporter un niveau de confiance suffisant malgré les mises en production fréquentes. En contribuant à la Chaîne d'outils Devops, les Chaos Monkey répondent au besoin de tests continus.

Ils s'inscrivent dans le modèle Design for failure [10], « conçu pour supporter la défaillance » : une application informatique doit être capable de supporter la panne de n’importe quel composant logiciel ou matériel sous-jacent.

Projets connexes[modifier | modifier le code]

Chaos Engineering[modifier | modifier le code]

Chaos Engineering est la discipline de l'expérimentation sur un système distribué afin de renforcer la confiance dans la capacité du système à résister à des conditions turbulentes en production[11].

Il s'agit d'une communauté construite autour des principes définit sur le site http://principlesofchaos.org/, initiée par Netflix[12].

Facebook Storm[modifier | modifier le code]

Pour se préparer à la perte d’un datacenter, Facebook teste régulièrement la résistance de ses infrastructures aux événements extrêmes. Connu sous l’appellation projet Storm, le programme simule des pannes massives dans les datacenters[13].

Days of Chaos[modifier | modifier le code]

Inspirée des GameDays d’AWS[14] pour tester la résilience de ses applications, les équipes applicatives volontaires de Voyages-sncf.com ont participé à un Day of Chaos. Toutes les 30 minutes, des exploitants simulaient des pannes en pré-production. Les équipes obtenaient des points en fonction des détections, des diagnostics et des résolutions. Ce type d’événement gamifié permet d’initier les équipes de développement au concept de résilience[15].

Présenté lors de la conférence Devops REX 2017[16], le concept est présenté sur le site http://days-of-chaos.com dans le but de recueillir les autres expérimentations.

Chaos Toolkit[modifier | modifier le code]

La Chaos Toolkit est né de la volonté de simplifier l'accès à la discipline du Chaos Engineering et démontrer que l'approche par expérimentation peut se faire à différents niveaux: infrastructure, plateform mais aussi applicatif. Le Chaos Toolkit est un outil open-source, sous licence Apache 2, publié en octobre 2017[17].

Notes et références[modifier | modifier le code]

  1. « Release 2.0.2 » (consulté le 19 juillet 2018)
  2. « The Netflix Simian Army », sur Netflix TechBlog, Blog Netflix Technology, (consulté le 21 octobre 2017)
  3. Netflix Technology Blog, « The Netflix Simian Army », sur Netflix TechBlog, (consulté le 21 octobre 2017)
  4. Netflix Technology Blog, « Netflix Chaos Monkey Upgraded », sur Netflix TechBlog, (consulté le 21 octobre 2017)
  5. « Mais qui sont ces singes du chaos ? - 15marches », Le blog de 15marches,‎ (lire en ligne)
  6. « Netflix libère Chaos Monkey dans la jungle Open Source - Le Monde Informatique », LeMondeInformatique,‎ (lire en ligne)
  7. a et b SimianArmy: Tools for keeping your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures, Netflix, Inc., (lire en ligne)
  8. SemiColonWeb, « Infrastructure : quelles méthodes pour s'adapter aux nouvelles architectures Cloud ? - D2SI Blog », D2SI Blog,‎ (lire en ligne)
  9. « Résilience cloud: Netflix mise sur ses singes tueurs d’instances AWS », sur www.ictjournal.ch (consulté le 21 octobre 2017)
  10. « Les Patterns des Grands du Web – Design for failure | OCTO Talks ! », sur blog.octo.com (consulté le 22 octobre 2017)
  11. « Principles of Chaos Engineering », sur principlesofchaos.org (consulté le 21 octobre 2017)
  12. « Le Chaos Engineering par Netflix », sur InfoQ (consulté le 22 octobre 2017)
  13. (en) Robert Hof, « Interview: How Facebook's Project Storm Heads Off Data Center Disasters », Forbes,‎ (lire en ligne)
  14. SemiColonWeb, « GameDay AWS : testez la résilience de vos applications Cloud », D2SI Blog,‎ (lire en ligne)
  15. « DevOps : le retour d’expérience de Voyages-sncf.com - Blog du Modérateur », Blog du Modérateur,‎ (lire en ligne)
  16. devops REX, « Days of Chaos : le développement de la culture devops chez Voyages-Sn… », Slideshare,‎ (lire en ligne)
  17. Russ Miles, « Introducing and Extending the Chaos Toolkit », sur Russ Miles (the Geek on a Harley), (consulté le 23 octobre 2017)