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, que 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'avantage concurrentiel pour se voir à travers le fiasco, en partie grâce à l'infrastructure préventive qu'ils avaient construite avec ce genre d'événement apocalyptique à l'esprit.

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 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 les câbles au hasard et détruit les appareils. L'enjeu 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."

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.

En rapport: 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 qu'ils n'affectent 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.

« Comme 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ù des composants individuels peuvent échouer sans affecter la disponibilité de l'ensemble système."

le Netflix Blog

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.

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

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

Si vous voulez comprendre un système complexe — dérangez-le

– Farhan Thawar (@fnthawar) 26 mai 2021

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 permet d'éviter qu'un problème beaucoup plus important ne se présente, la planification de l'incident initial peut être la meilleure façon de vous 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 avec compétence seront à la fois plus alerte à l'avenir et aussi plus intellectuellement équipés pour gérer tout ce qui leur arrive chemin. Le système plus fort 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.

La mise en jeu de l'expérience sur le lieu de travail rend la perspective de succès dans ce domaine passionnante; 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.

E-mail
Qu'est-ce que la méthodologie de programmation agile ?

Que vous postuliez à des postes de programmation ou que vous souhaitiez une méthode de travail plus efficace, vous devez connaître Agile.

Lire la suite

Rubriques connexes
  • Programmation
  • Programmation
A propos de l'auteur
Emma Garofalo (25 articles publiés)

Emma Garofalo est une écrivaine actuellement basée à Pittsburgh, en Pennsylvanie. Lorsqu'elle ne travaille pas à son bureau à la recherche d'un avenir meilleur, elle se trouve généralement derrière la caméra ou dans la cuisine.

Plus d'Emma Garofalo

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Un pas de plus…!

Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.

.