Ingénierie du chaos

outil de déclenchement de pannes aléatoires de système informatique

L'ingénierie du chaos est la discipline qui consiste à expérimenter sur un système distribué[1] afin d'améliorer la confiance dans ses capacités à résister à des turbulences en conditions de production[2].

C'est l'ingénierie des tests de résilience sur un système réel et non simulé pour ce qui concerne le domaine de l'informatique. En tant que telle, cette pratique fait donc partie intégrante de l’ingénierie de la fiabilité des sites.

Concept modifier

Dans le domaine du développement logiciel, la capacité d'un système à tolérer les pannes tout en garantissant la résilience : une qualité de service adéquate étant souvent spécifiée comme une exigence.

Pourtant, les équipes de développement ne parviennent que rarement à répondre à cette exigence en raison de facteurs tels que des délais de mise en production courts ou un manque de connaissance du domaine. L’ingénierie du chaos est une démarche permettant de répondre à l’exigence de résilience.

L’ingénierie du chaos peut également être utilisée pour atteindre challenger, vérifier, valider la résilience contre les pannes d’infrastructure, les pannes de réseau et les pannes d’applications.

Enfin, il permet avant tout de construire la confiance des équipes en la capacité de leur systèmes à résister au turbulences.

Préparation opérationnelle grâce à l'ingénierie du chaos modifier

Calculer le degré de confiance que nous accordons aux systèmes complexes interconnectés intégrés dans les environnements de production nécessite d'avoir des mesures d'opérabilité. L'état de préparation opérationnelle peut être évalué à l'aide de simulations d'ingénierie du chaos hors environnement de production.

En effet la reproductibilité de reproduction des environnements grâce aux démarches de déploiement tout-"as-code", permettent aujourd'hui d'avoir une confiance relative dans la simulation réaliste des environnement de production. Ces fonctionnalités sont prises en charge par les nouvelles infrastructures comme l'infrastructure Kubernetes, ou les fournisseurs de cloud computing via des outils comme Terraform ou Ansible. Les solutions pour accroître la résilience et la préparation opérationnelle d'une plate-forme incluent le renforcement des capacités de sauvegarde, de restauration, de transfert de fichiers réseau, de basculement et de sécurité globale de l'environnement. Gautam Siwach et al, ont effectué une évaluation de la manière de provoquer le chaos dans un environnement Kubernetes qui termine des pods aléatoires avec des données provenant d'appareils de périphérie dans des centres de données tout en traitant des analyses sur un réseau Big Data, et en déduisant le temps de récupération des pods pour calculer un temps de réponse estimé, comme mesure de résilience[3],[4].

Histoire modifier

1983 – Apple

Durant le développement des outils de bureautique MacWrite et MacPaint pour le premier ordinateur Apple Macintosh, Steve Capps a créé un outil de test appelé "Monkey".

Cet outil permettait de générer manière aléatoire des événements d'interface utilisateur à grande vitesse. Cela permettait de simuler un singe frappant frénétiquement le clavier et déplaçant et cliquant sur la souris, comme si un vrai singe était placé devant (cf. Paradoxe du singe savant). Il a été rapidement utilisé pour le débogage en générant des erreurs que les développeurs devaient corriger. A l'époque les tests automatisés n'étaient pas possibles ; le premier Macintosh disposait de trop peu d’espace mémoire libre pour un precess plus sophistiqué[5].

2003 – Amazon

Pendant l'amélioration de la fiabilité du site Web chez Amazon, Jesse Robbins, qui y travaillait, a créé les "Game day"[6]

Ce sont des jeux sérieux dont l'objectif est d'augmenter la fiabilité en créant délibérément des défaillances majeures régulièrement. Robbins a déclaré qu'il était inspiré par la formation des pompiers et la recherche dans d'autres domaines, des leçons sur les systèmes complexes, l'ingénierie de la fiabilité[7].

2006-Google

Alors qu'il travaillait pour Google, Kripa Krishnan a créé un programme équivalent au GameDay (venant d'Amazon cf. ci-dessus) appelé "DiRT"[7],[8],[9]. Jason Cahoon, ingénieur en fiabilité de site (SRE) [10] chez Google, a contribué au livre « Chaos Engineering » [11] par un chapitre sur Google DiRT [12] dans, et a décrit le système lors de la conférence GOTOpia 2021[13].

2011 – Netflix

Durant la migration de Netflix vers le cloud en 2011, Nora Jones, Casey Rosenthal et Greg Orzell [11],[14],[15] qui la supervisaient, ont élargi la discipline alors qu'ils travaillaient ensemble chez Netflix. Ils mettaient en place un outil qui provoquerait des pannes dans leur environnement de production, c'est à dire l'environnement utilisé par les clients Netflix. L’intention était de passer d’un modèle de développement ne supposant aucune panne à un modèle dans lequel les pannes étaient considérées comme inévitables. Cela doit forcer les développeurs à considérer la résilience intégrée comme une obligation plutôt qu’une option[16]. En « descendant » régulièrement et aléatoirement des instances d'un micro-service logiciel, on a eu l'opportunité de tester une architecture redondante pour vérifier qu'une panne de serveur n'avait pas d'impact notable sur les clients.

Le concept d'ingénierie du chaos est proche du principe de fonctionnement des serveurs Phoenix. Ils ont été introduits pour la première fois par Martin Fowler en 2012[17].

Outils d'ingénierie du chaos modifier

Chaos Monkey modifier

 
Le logo de Chaos Monkey utilisé par Netflix

Chaos Monkey est un outils inventé en 2011 par Netflix pour tester la résilience de son infrastructure informatique[14]. Il fonctionne en désactivant intentionnellement les ordinateurs du réseau de production de Netflix pour tester la manière dont les systèmes restants réagissent à la panne. Chaos Monkey fait désormais partie d'une suite plus large d'outils appelée Simian Army, conçue pour simuler et tester les réponses à diverses pannes du système et cas extrêmes.

Le code source de Chaos Monkey a été publié par Netflix en 2012 sous une licence Apache 2.0[18],[19].

Le nom "Chaos Monkey" est expliqué dans le livre Chaos Monkeys d'Antonio Garcia Martinez [20]:

Imaginez un singe entrant dans un « data center », ces « fermes » de serveurs qui hébergent toutes les fonctions critiques de nos activités en ligne. Le singe déchire au hasard les câbles, détruit les appareils et retourne tout ce qui lui passe par la main [...]. L’enjeu 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 arriveront et ce qu’ils vont détruire.

Simian Army modifier

La Simian Army [19] est une suite d'outils développés par Netflix pour tester la fiabilité, la sécurité ou la résilience de son infrastructure hébergée sur Amazon Web Services et comprend les outils suivants[21] :

Tout en haut de la hiérarchie de l'armée simienne, Chaos Kong déconnecte une " région " AWS complète. Bien que cela soit rare, la perte d'une région entière se produit et Chaos Kong simule une réponse et une récupération du système à ce type d'événement.

Chaos Gorilla déconnecte une « zone de disponibilité » Amazon complète (un ou plusieurs centres de données entiers desservant une région géographique).

Plateforme d'ingénierie du chaos Proofdock modifier

Proofdock est une plateforme d'ingénierie du chaos qui se concentre sur et exploite la plateforme Microsoft Azure et les services Azure DevOps . Les utilisateurs peuvent injecter des pannes au niveau de l’infrastructure, de la plateforme et des applications[22].

Gremlin modifier

Gremlin est une plateforme « Panne en tant que service »[23].

Facebook Storm modifier

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 le nom de Storm Project, le programme simule des pannes massives de centres de données.

Days of Chaos modifier

Voyages-sncf.com a créé en 2017 une « Journée du Chaos » [24], gamifiant la simulation d'échecs de pré-production[25]. Ils ont présenté leurs résultats lors de la conférence DevOps REX 2017[26].

Pole Emploi (actuel France Travail) et Chaos-Native modifier

En 2020, à l'initiative du responsable de la sécurité opérationnelle des datacenters Julien Carreno, un partenariat a été mis en place entre la DSI de Pole-Emploi et la fondation à l'origine de l'outil Litmus, Chaos-Native. Cet outil permet l'automatisation des tests et leur randomisation en production. Sa mise en pratique a été présentée lors du DevOps DDay de Marseille en 2021[27]. Il est accompagné d'une démarche d’ingénierie de la résilience des sites.

Voir également modifier

Notes et références modifier

  1. Splunk, « Que sont les systèmes distribués ? », (consulté le )
  2. « Principles of Chaos Engineering », principlesofchaos.org (consulté le )
  3. Gautam Siwach « Evaluating operational readiness using chaos engineering simulations on Kubernetes architecture in Big Data » () (lire en ligne, consulté le ) [PDF]
    2022 International Conference on Smart Applications, Communications and Networking (SmartNets)
  4. « Machine Learning Podcast Host and Technology Influencer: Gautam Siwach », LA Weekly,‎ (lire en ligne)
  5. Hertzfeld, « Monkey Lives », Folklore (consulté le )
  6. « Game day », AWS Well-Architected Framework Glossary, Amazon, (consulté le )
  7. a et b Limoncelli, « Resilience Engineering: Learning to Embrace Failure », ACM Queue, vol. 10, no 9,‎ (lire en ligne)
  8. Krishnan, « Weathering the Unexpected », ACM Queue, vol. 10, no 9,‎ (lire en ligne)
  9. Kripa Krishnan « 10 Years of Crashing Google » (8-13 November 2015) (lire en ligne, consulté le ) [html]
    2015 Usenix LISA
  10. Betsy Beyer et Chris Jones, Site Reliability Engineering, 1st, (ISBN 9781491929124, OCLC 1291707340, lire en ligne)
  11. a et b Nora Jones et Casey Rosenthal, Chaos Engineering, 1st, (ISBN 9781492043867, OCLC 1143015464, lire en ligne)
  12. « Chapter 5. Google DiRT: Disaster Recovery Testing », "Chaos Engineering" book website, O'Reilly Media, (consulté le )
  13. (en) Cahoon, « WATCH: The DiRT on Chaos Engineering at Google » [vidéo], youtube.com, GOTO Conferences,
  14. a et b « The Netflix Simian Army », Netflix Tech Blog, Medium, (consulté le )
  15. [1], published 2012-03-22 
  16. « Netflix Chaos Monkey Upgraded », Netflix Tech Blog, Medium, (consulté le )
  17. « PhoenixServer », martinFowler.com, Martin Fowler (software engineer), (consulté le )
  18. « Netflix libère Chaos Monkey dans la jungle Open Source », Le Monde informatique,‎ (lire en ligne, consulté le ).
  19. a et b « SimianArmy: Tools for your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures », Netflix, Inc., (consulté le )
  20. « Mais qui sont ces singes du chaos ? », 15marches, (consulté le )
  21. Laurent Bernaille, « Infrastructure : quelles méthodes pour s’adapter aux nouvelles architectures Cloud ? », D2SI Blog,‎ (lire en ligne [archive du ], consulté le ).
  22. « A chaos engineering platform for Microsoft Azure », medium.com, (consulté le )
  23. « Gremlin raises $18 million to expand 'failure-as-a-service' testing platform », VentureBeat, (consulté le )
  24. « Days of Chaos », Days of Chaos (consulté le )
  25. « DevOps: feedback from Voyages-sncf.com », Moderator's Blog, (consulté le )
  26. devops REX, « [devops REX 2017] Days of Chaos : le développement de la culture devops chez Voyages-Sncf.com à l'aide de la gamification », (consulté le )
  27. DEVOPS DDAY #6, « REX : Mise en place du Chaos Engineering »  , sur Youtube,

Liens externes modifier