banniere aubay

< Tous les articles

Oct 16, 2020

Tout casser pour renforcer les infrastructures avec le Chaos Engineering ?

 

Pour commencer qu’est-ce que le “Chaos Engineering” ? L’ingénierie du Chaos en Français est un concept inventé en 2010 par Netflix. Jusqu’alors, lorsque les ingénieurs concevaient une infrastructure, ils se demandaient si celle-ci allait finir par tomber en panne. Ainsi, suite à de nombreuses pannes sur leurs infrastructures ayant causé des interruptions de service pour leurs utilisateurs et par la même occasion généré une perte économique considérable, ils ont décidé de revoir leur façon de penser. Plutôt que de se demander si oui ou non les infrastructures tomberaient en panne, ils partirent du principe que celles-ci finiraient forcement par tomber en panne, ce qui souleva les questions suivantes :

Quelle infrastructure va tomber en panne et quelles en seront les conséquences ?

C’est donc de ce changement de philosophie qu’est né le premier outil de Chaos Engineering : le “Chaos Monkey”. Cet outil permet d’insérer différents types de pannes directement dans l’infrastructure en production, de manière aléatoire. Les ingénieurs doivent ainsi prendre en compte ces futures pannes afin de rendre leurs infrastructures les plus résilientes possible.

Les enjeux et les objectifs de notre projet 

 

Comme dit précédemment, Netflix a été victime de pannes ayant causé une incapacité à accéder à leur plateforme pour les utilisateurs et par la même occasion des pertes financières conséquentes. En réalité, toutes les entreprises ayant une infrastructure informatique peuvent être concernées par ce type de problématiques.

Ainsi, Aubay souhaiterait pouvoir proposer une solution de Chaos Engineering pouvant être, dans un premier temps, déployée sur l’infrastructure interne de l’entreprise. Dans un second temps, l’objectif serait de pouvoir proposer une solution adaptable à tout type de système permettant d’effectuer des tests de Chaos quelques soient les demandes des clients.

 

Présentation des technologies :

 

Bien que l’outil “Chaos Monkey” et son descendant “Simian Army” aient été précurseurs dans leur domaine, ils ne sont aujourd’hui plus utilisés et ont été remplacés par de nouvelles technologies. En effet, ces derniers n’étaient utilisables que sur le cloud provider proposé par Amazon (AWS) et avaient été conçus “PAR Netflix POUR Netflix” ce qui les rendaient difficiles à adapter pour d’autres entreprises.

L’outil les ayant remplacés qui semble actuellement être le plus mature et le plus utilisé se nomme Gremlin. Celui-ci étant sous licence nous avons décidé de ne pas nous y attarder pour notre projet.

L’outil ayant retenu notre attention est Chaos Toolkit, un projet open source et plein de potentiel. Cet outil permet d’effectuer des tests de chaos sur tous types de systèmes grâce à ses différentes extensions

 

Effectuer des tests avec ChaosToolkit :

 

ChaosToolkit nous permet d’effectuer des tests de très bonne qualité. Tout d’abord il faut choisir le type de système que nous souhaitons tester ainsi que la panne que nous souhaitons y insérer (notre test de chaos). Un certain nombre de pannes sont disponibles pour chaque type de système (il nous suffit donc de choisir la bonne extension pour le bon système). Lorsque nous avons fini de tout paramétrer nous pouvons ensuite lancer notre test.

Et c’est ici que ChaosToolkit devient intéressant ! En effet, l’outil nous permet de définir un état stable à notre système (pour notre projet nous avions défini l’état stable suivant : “l’utilisateur de notre système doit être capable d’y accéder en moins de 6 secondes”).  La première chose que va donc effectuer ChaosToolkit lors de l’exécution de notre test est une vérification de l’état stable.

Si celui-ci n’est pas atteint à ce moment-là, alors le test sera immédiatement interrompu. En effet, cela signifie que notre système n’est pas fonctionnel avant même l’insertion de notre panne.

En revanche, si l’état stable est vérifié alors la panne sera déployée sur notre système. S’en suivra une seconde vérification d’état stable afin d’étudier la réaction de notre système face à cette panne.

Si l’état stable est une nouvelle fois atteint cela signifie que notre système est résistant face à ce type de panne. En revanche si ce n’est pas le cas alors nous venons de trouver un axe d’amélioration pour notre système.

Résultats du projet

 

À l’issue de 6 mois de travail sur le sujet, nous avons réussi à établir un premier socle nous permettant un accès simple à un outil de Chaos Engineering. En effet, la prise en main de l’outil ChaosToolkit étant particulièrement compliquée, nous avons décidé d’y ajouter des surcouches afin de le rendre accessible à tous. Ainsi il est maintenant possible de lancer un test de Chaos au travers d’une interface web en saisissant uniquement les données nécessaires.

Une API Python, développée par nos soins, s’occupe ensuite de faire la liaison vers ChaosToolkit afin de lui retransmettre les données dans le format attendu. La panne est ensuite déployée directement dans notre système AWS.

Perspective d’avenir

 

L’ensemble de ce socle présenté est actuellement testé sur une infrastructure ayant été créée et déployée uniquement pour ce projet.

La prochaine étape serait donc de tester le socle sur les différentes infrastructures AWS de l’entreprise.

Par la suite, il nous faudra étoffer les types de systèmes et d’attaques disponibles afin de rendre notre application adaptable à tout type de demandes et ainsi pouvoir la proposer aux clients.

Conclusion 

 

Ce projet s’inscrit dans la démarche de l’équipe Cloud/DevOps de prévoir et d’anticiper les futures attentes des entreprises dans ces domaines. Bien que ce type de technologies et problématiques semblent être encore trop jeunes pour intéresser le marché Français, il est fort probable que celles-ci fassent surface à dans les années à venir.

 

Pour en savoir plus sur :

 

Partagez cet article
Florian

Florian

Ingénieur Cloud

< Retour à tous les articles