Qu’est-ce que l’ingénierie du chaos ?

La technologie est partout. Selon l'importance des enjeux de votre industrie, la défaillance d'un produit ou d'un système technologique peut être tout à fait négligeable jusqu'à la fin de vie telle que vous la connaissez.

Ordinateurs centraux d'hôpitaux ? Un peu important. La résilience de l'application Candy Crush sur votre téléphone portable ? Probablement un peu plus bas sur la liste globale des priorités.

Dans un système distribué de réseaux, l'échec est inévitable. La prévention des catastrophes commence par une conception de sécurité solide et étanche. Au-delà de cela, cependant, que peut-on faire d'autre?

Qu'est-ce que l'ingénierie du chaos de Netflix ?

20 septembre 2015.

Tout est calme sur le front occidental, lorsque, soudainement, plusieurs serveurs importants d'Amazon Web Services tombent en panne sans un mot.

De nombreuses grandes entreprises ont été incapables de subvenir aux besoins de leurs clients pendant plusieurs heures. Netflix, cependant, était de retour sur pied en quelques minutes. Comment? La culture d'entreprise interne de Netflix avait évolué pour inclure de nombreuses pratiques « induisant des défaillances » mises en œuvre en temps réel pour préparer à la fois les systèmes et les ingénieurs en cas de catastrophe.

La direction de l'entreprise a délibérément mené des pannes de serveur simulées dans des parties confinées du système pour étudier et se préparer à de tels événements. Cela les a aidés à identifier les failles dans le système et à créer des redondances qui ont permis au service de continuer sans interruption, même en cas de dysfonctionnement majeur comme celui mentionné précédemment.

Ces exercices délibérés d'« ingénierie du chaos » ont donné à leurs ingénieurs suffisamment d'avantages concurrentiels pour se sortir du fiasco, en partie grâce à l'infrastructure préventive qu'ils avaient construite en pensant à ce genre d'événement apocalyptique.

Personne d'autre n'était prêt lorsque la grosse vague a frappé. Le système Netflix était suffisamment puissant pour se débrouiller tout seul. Conclusion? Ces cerveaux chaotiques pourraient être sur quelque chose ici.

Anéantir intentionnellement ceux qui vous aiment

"L'ingénierie du chaos est la discipline consistant à expérimenter sur un système afin de renforcer la confiance dans la capacité du système à résister aux conditions turbulentes de la production."

Principes du Manifeste du Chaos

C'est le cœur de l'ingénierie du chaos – en substance, un « exercice d'incendie » imposé au système pendant les heures de travail lorsqu'il y a des yeux et des mains disponibles pour relever le défi présenté. La capacité d'un système donné à tolérer les pannes est mise à l'épreuve au fur et à mesure que des vulnérabilités sont exposées.

Dans son contexte d'origine en 2011, l'ingénierie du chaos concernait le service informatique de Netflix. Leur direction voulait tester la résilience des efforts de l'équipe lorsqu'un ou plusieurs de leurs ordinateurs étaient intentionnellement désactivés. Ces revers ont permis à l'équipe informatique d'identifier les principales faiblesses avant qu'elles ne deviennent des problèmes à l'échelle du système et puissent être exploitées de l'extérieur.

Vrai échec ? Cela peut coûter très cher, et cela va au-delà des implications monétaires . Même les périodes d'indisponibilité, sans véritable faille de sécurité, se traduiront probablement par de nombreuses occasions manquées de générer des revenus. Pourquoi attendre qu'une urgence vous surprenne ?

Les singes derrière la folie

Certaines entreprises adopteront un modèle « d'équipe rouge » qui opposera des équipes de développeurs à leurs collègues de part et d'autre des départements. L'exemple classique mis en place par Netflix utilise cependant une « armée simienne ». Ces robots font le sale boulot pour eux de manière équitable et totalement aléatoire.

Fou? Au profane, peut-être. Pour reprendre les mots de l'auteur de "Chaos Monkeys" Antonio Garcia Martinez :

"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 des câbles et détruit des appareils. L'enjeu est de concevoir le système d'information dont il a la charge afin que ça peut marcher malgré ces singes, dont personne ne sait jamais quand ils arrivent et ce qu'ils vont détruire."

Une analogie colorée. Cependant, tous les Simiens ne sont pas cruels : le docteur Monkey surveille les performances du système, par exemple. Cependant, lorsque Chaos Kong s'arrête pour une visite, tous les paris sont ouverts; ce personnage supprimera une zone de disponibilité AWS entière.

Connexe : Comment les vulnérabilités de sécurité sont-elles évaluées ?

L'ingénierie du chaos et la méthode scientifique

L'ingénierie du chaos est une source précieuse d'informations systémiques pour ceux qui mènent les expériences. Ce ne sont pas seulement les développeurs qui sont mis à l'épreuve ici ; c'est aussi le système tel qu'il existe de manière autonome.

Avant de jeter le baril de singes sur la table, l'ingénierie du chaos nécessite un peu de travail préparatoire.

  1. Vous devez d'abord identifier ce que vous considérez comme un état fonctionnel "stable", sain et fonctionnel pour votre système. Ce sera le « contrôle » par rapport auquel vous mesurez les résultats tangibles.
  2. Commencez à réfléchir à la façon dont cet état sera déséquilibré par l'intrusion d'un échec orchestré. Planifiez votre détection de logiciels malveillants pour n'affecter qu'une zone contenue et contrôlable de votre système.
  3. Présentez "l'intrus" et laissez le système réagir.
  4. Observez et interprétez toutes les différences entre le système tel qu'il existe maintenant et comment il se comportait auparavant, alors qu'il était dans l'homéostasie. Augmentez votre "rayon d'impact" jusqu'à ce que vous détectiez une vulnérabilité ou atteigniez la pleine échelle, selon la première éventualité.

L'idée est que plus il est difficile de perturber un système fonctionnel, plus vous pouvez avoir confiance dans sa résilience au changement et au bombardement. Cette approche montre comment différents aspects du système compenseront les défaillances des uns et des autres en cas de panne.

« Étant donné qu'aucun composant ne peut garantir une disponibilité à 100 % (et même le matériel le plus cher finit par tomber en panne), nous devons concevoir une architecture cloud où les composants individuels peuvent tomber en panne sans affecter la disponibilité de l'ensemble du système.

Le blog Netflix

Parfois, jouer avec le système de cette manière n'a même pas d'impact sur l'expérience client. D'autres fois, de graves failles de sécurité seront mises en lumière. Désormais, chez Netflix en particulier, la contingence destinée à masquer la défaillance du système au niveau de l'utilisateur est intégrée à la base du système.

Connexes : Qu'est-ce qu'un exploit Zero-Day ?

L'ingénierie du chaos en vaut-elle la peine ?

Les critiques diront qu'aucun jeu back-end ne vaut la peine d'avoir un impact sur l'expérience d'un client, même si ce n'est que brièvement et par incident. Les partisans de l'ingénierie du chaos, cependant, réfuteront le fait que ces "pannes planifiées" sont censées être beaucoup plus petites que ce qu'AWS a connu en 2015. Si un petit problème planifié vous met en mesure d'éviter un problème beaucoup plus important de ne jamais se présenter, planifier l'incident initial peut être la meilleure façon de se préparer. Moins d'utilisateurs seront touchés au total. Les maths fonctionnent.

Du point de vue humain, la mentalité est que, maintenant, ces ingénieurs qui ont eu un plantage de serveur devant eux et qui l'ont traité avec compétence seront à la fois plus alertes à l'avenir et aussi plus équipés intellectuellement pour gérer tout ce qui leur arrive. chemin. Le système plus solide qui en résulte, dans de nombreux cas, parle de lui-même.

Silicon Valley : où les rêves vont mourir

Ils disent que si vous voulez réussir, vous devez être prêt à tuer vos chéris, ou, dans ce cas, être prêt à laisser les autres les tuer pour vous. Lorsque la sécurité est au premier plan dès le début du développement, votre équipe est beaucoup plus susceptible de se retrouver avec quelque chose d'impénétrable et de sûr que les clients peuvent utiliser librement.

En jouant sur l'expérience en milieu de travail, les perspectives de réussite dans ce domaine sont passionnantes ; lorsque le résultat final est de qualité, tout le monde passe au niveau supérieur. Mon Netflix fonctionne très bien, et nous n'avons que les fous derrière le chaos à remercier pour cela.

Maintenant que vous maîtrisez parfaitement l'ingénierie du chaos, pourquoi ne pas élargir vos connaissances avec une autre méthodologie de développement logiciel ? Agile est un excellent système que vous pouvez intégrer pour unifier une main-d'œuvre et produire un code propre et efficace.