Aller au contenu principal

Ingénierie du Chaos - Briser intentionnellement les choses

· 5 minutes de lecture
Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Ingénierie-du-Chaos-Briser-intentionnellement-les-choses
Ingénierie-du-Chaos-Briser-intentionnellement-les-choses

« La nécessité est mère de l'invention » ; de même, Netflix n'est pas seulement une plateforme de streaming média. Netflix a donné naissance à l'ingénierie du chaos par nécessité.

En 2008, Netflix a subi une corruption majeure de sa base de données. Ils n'ont pas pu livrer de DVD pendant trois jours. Cela a incité les ingénieurs de Netflix à repenser la migration de leur architecture monolithique vers une architecture distribuée basée sur le cloud.

La nouvelle architecture distribuée de Netflix était composée de centaines de microservices. Cette migration a résolu leur problème de point de défaillance unique, mais a engendré de nombreuses autres complexités nécessitant un système plus fiable et tolérant aux pannes. C'est à ce moment que les ingénieurs de Netflix ont eu une idée innovante : tester la tolérance aux pannes du système sans impacter le service client.

Ils ont créé Chaos Monkey : un outil provoquant des défaillances aléatoires à différents endroits et intervalles de temps. Avec le développement de Chaos Monkey, une nouvelle discipline est née : l'Ingénierie du Chaos.

« L'Ingénierie du Chaos est la discipline qui consiste à expérimenter sur un système afin de renforcer la confiance dans sa capacité à résister à des conditions turbulentes en production. » - Principes du Chaos

L'Ingénierie du Chaos est une approche pour comprendre le comportement de votre système en appliquant une discipline d'exploration empirique. Tout comme les scientifiques mènent des expériences pour étudier les phénomènes physiques et sociaux, l'Ingénierie du Chaos utilise des expériences pour apprendre sur un système particulier - sa fiabilité, sa stabilité et sa capacité à survivre dans des conditions imprévues ou instables.

Dans un système distribué à grande échelle, les défaillances peuvent être causées par de nombreux facteurs : erreurs applicatives, défaillances d'infrastructure, problèmes de dépendances, pannes réseau, etc. Ces échecs ne peuvent pas tous être couverts par les méthodes traditionnelles comme les tests d'intégration ou unitaires, ce qui rend l'Ingénierie du Chaos indispensable :

  • Pour améliorer la résilience du système

  • Pour révéler les menaces et vulnérabilités cachées du système

  • Pour identifier les faiblesses du système avant qu'elles ne provoquent des échecs en production

Beaucoup pensent ne pas être aussi importants que Netflix ou d'autres géants technologiques, ni disposer de bases de données ou systèmes à cette échelle.

Ils ont probablement raison, mais avec le temps, l'Ingénierie du Chaos a tellement évolué qu'elle ne se limite plus aux entreprises numériques comme Netflix. Pour garantir des performances constantes et une disponibilité permanente de leurs systèmes, de plus en plus d'entreprises de différents secteurs mettent en œuvre des expériences de chaos.

Chaos Mesh

note

2022-10-24: Suite à la suspension de la technologie Katacoda (https://www.oreilly.com/online-learning/leveraging-katacoda-technology.html) et comme indiqué dans #356, le tutoriel interactif est temporairement indisponible.

Pour tester la résilience et la fiabilité de TiDB, les ingénieurs de PingCAP ont développé un outil fantastique pour les tests de chaos : Chaos Mesh, une plateforme d'Ingénierie du Chaos cloud-native qui orchestre le chaos dans des environnements Kubernetes. Chaos Mesh prend en compte les défaillances possibles d'un système distribué, couvrant le pod, le réseau, les E/S système et le noyau.

Chaos Mesh propose de nombreuses méthodes d'injection de défaillances :

  • clock-skew: Simule un décalage d'horloge

  • container-kill: Simule l'arrêt d'un conteneur

  • cpu-burn: Simule une pression CPU

  • io-attribution-override: Simule des exceptions de fichiers

  • io-fault: Simule des erreurs d'E/S du système de fichiers

  • io-latency: Simule la latence des E/S du système de fichiers

  • kernel-injection: Simule les défaillances du noyau

  • memory-burn: Simule une pression sur la mémoire

  • network-corrupt: Simule la corruption des paquets réseau

  • network-duplication: Simule la duplication des paquets réseau

  • network-latency: Simule la latence réseau

  • network-loss: Simule la perte réseau

  • network-partition: Simule une partition réseau

  • pod-failure: Simule l'indisponibilité continue des Pods Kubernetes

  • pod-kill: Simule l'arrêt d'un Pod Kubernetes

Chaos Mesh se concentre principalement sur la simplicité : tous les tests de chaos s'effectuent rapidement et sont faciles à comprendre pour tout utilisateur.

La récente version 1.0 rend généralement disponible le Chaos Dashboard, qui simplifie radicalement la complexité des expériences de chaos. En quelques clics, vous pouvez définir le périmètre de l'expérience, spécifier le type d'injection de chaos, établir des règles de planification et observer les résultats - le tout dans l'interface de Chaos Mesh.

Pour essayer Chaos Mesh directement dans votre navigateur, explorez le Katakoda interactive tutorial où vous manipulerez Chaos Mesh sans même le déployer. Pour comprendre ses principes de conception et son fonctionnement, lisez ce billet par la maintenrice du projet, Cwen Yin.

Rejoignez la communauté

Toute personne souhaitant explorer l'ingénierie du chaos ou Chaos Mesh est la bienvenue dans notre communauté. En tant que membre, je peux témoigner de son dynamisme : les mainteneurs adorent échanger et sont à l'écoute de vos idées pour améliorer le projet et l'écosystème.

Pour nous rejoindre et découvrir Chaos Mesh, retrouvez le canal #project-chaos-mesh dans l'espace Slack du CNCF.