Chaos Monkey

Un article de Wikipédia, l'encyclopédie libre.
Chaos Monkey

Informations

Chaos Monkey est un logiciel conçu en 2011 par Netflix pour tester la résilience de ses infrastructures informatiques[1]. Le but de cet outil est de provoquer 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[Quand ?] directeur Cloud & Infrastructure et Ariel Tseitlin, aujourd'hui [Quand ?] directeur des solutions Cloud[2], 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 »[3].

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[4] :

Imaginez un singe s’introduisant dans un centre de données, 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[5],[6].

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

Netflix Simian Army

La Simian Army[6] (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[7]. 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[8].

  • 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.

  • Security 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 [9], « 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[10].

Il s'agit d'une communauté construite autour des principes définis sur le site Principlesofchaos.org, initiée par Netflix[11].

Facebook Storm[modifier | modifier le code]

Pour se préparer à la perte d’un centre de données, 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[12].

Days of Chaos[modifier | modifier le code]

Voyages-sncf.com a créé un "Day of Chaos"[13] en 2017, qui gamifie la simulation des pannes en pré-production[14]. Ils ont présenté leurs résultats à la conférence Devops REX 2017[15].

Chaos Toolkit[modifier | modifier le code]

Le 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, plateforme mais aussi applicatif. Le Chaos Toolkit est un outil open source, sous licence Apache 2, publié en [16].

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

  1. « The Netflix Simian Army », sur Netflix TechBlog, Blog Netflix Technology, (consulté le )
  2. Netflix Technology Blog, « The Netflix Simian Army », sur Netflix TechBlog, (consulté le )
  3. Netflix Technology Blog, « Netflix Chaos Monkey Upgraded », sur Netflix TechBlog, (consulté le )
  4. « Mais qui sont ces singes du chaos ? - 15marches », Le blog de 15marches,‎ (lire en ligne, consulté le )
  5. « Netflix libère Chaos Monkey dans la jungle Open Source - Le Monde Informatique », LeMondeInformatique,‎ (lire en ligne, consulté le )
  6. 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)
  7. SemiColonWeb, « Infrastructure : quelles méthodes pour s'adapter aux nouvelles architectures Cloud ? - D2SI Blog », D2SI Blog,‎ (lire en ligne, consulté le )
  8. « Résilience cloud: Netflix mise sur ses singes tueurs d’instances AWS », sur www.ictjournal.ch (consulté le )
  9. « Les Patterns des Grands du Web – Design for failure | OCTO Talks ! », sur blog.octo.com (consulté le )
  10. « Principles of Chaos Engineering », sur principlesofchaos.org (consulté le )
  11. « Le Chaos Engineering par Netflix », sur InfoQ (consulté le )
  12. (en) Robert Hof, « Interview: How Facebook's Project Storm Heads Off Data Center Disasters », Forbes,‎ (lire en ligne, consulté le )
  13. « Days of Chaos », sur Days of Chaos (consulté le )
  14. « DevOps : le retour d’expérience de Voyages-sncf.com - Blog du Modérateur », Blog du Modérateur,‎ (lire en ligne, consulté le )
  15. devops REX, « Days of Chaos : le développement de la culture devops chez Voyages-Sn… », Slideshare,‎ (lire en ligne, consulté le )
  16. Russ Miles, « Introducing and Extending the Chaos Toolkit », sur Russ Miles (the Geek on a Harley), (consulté le )