Partager via


Recommandations pour la conception d’une stratégie de tests de fiabilité

S’applique à cette recommandation de liste de contrôle Fiabilité Power Platform Well-Architected :

RE:06 Testez les scénarios de résilience et de disponibilité en appliquant les principes de l’ingénierie du chaos dans vos environnements de test et de production. Utilisez les tests pour garantir que vos stratégies de mise en œuvre de la dégradation progressive sont efficaces en effectuant des tests de dysfonctionnement actifs et des tests de charge simulés.

Ce guide décrit les recommandations pour concevoir une stratégie de tests de fiabilité afin de valider et d’optimiser la fiabilité de votre charge de travail. Les tests de fiabilité se concentrent sur la résilience et la disponibilité de votre charge de travail, en particulier les flux critiques que vous identifiez lors de la conception de votre solution. Ce guide fournit des conseils généraux en matière de tests et des conseils spécifiques à l’injection de pannes et à l’ingénierie du chaos.

Définitions

Terme Définition
Disponibilité Durée pendant laquelle une charge de travail d’application s’exécute dans un état d’intégrité sans temps d’arrêt significatif.
Ingénierie du chaos Pratique consistant à soumettre les applications et les services à des contraintes et à des défaillances du monde réel. L’objectif de l’ingénierie du chaos est de construire et de valider la résilience face à des conditions peu fiables et à des dépendances manquantes.
Injection de défauts Action d’introduire une erreur dans un système pour tester la résilience du système.
Récupérabilité Synonyme de résilience.
Résilience Capacité d’une charge de travail d’application à résister aux modes de défaillance et à s’en remettre.

Stratégies de conception clés

Les tests sont essentiels pour garantir que votre charge de travail atteint ses objectifs de fiabilité et peut gérer les pannes avec élégance. L’injection de défauts est un type de test qui introduit délibérément des défauts ou des contraintes dans votre système pour simuler des scénarios réels. En utilisant des techniques d’injection de pannes et d’ingénierie du chaos, vous pouvez découvrir et résoudre les problèmes de manière proactive avant qu’ils n’affectent votre environnement de production. Cette section fournit des conseils généraux sur les tests, l’injection de pannes et l’ingénierie du chaos pour votre charge de travail.

Conseils généraux pour les tests

Effectuez régulièrement des tests pour valider les seuils, les cibles et les hypothèses existants. Lorsqu’un changement majeur se produit dans votre charge de travail, effectuez des tests réguliers. Effectuez la plupart des tests dans des environnements de test et de préparation. Il est également avantageux d’exécuter un sous-ensemble de tests sur le système de production.

Automatisez les tests pour garantir une couverture et une reproductibilité cohérentes des tests. Automatisez les tâches de test courantes et intégrez-les dans vos processus de build. Tester manuellement un logiciel est fastidieux et sujet aux erreurs, mais vous pouvez effectuer des tests exploratoires manuels. Si vous devez développer des tests automatisés, utilisez des tests manuels pour déterminer la portée des tests à développer.

Adoptez une approche de test décalée à gauche pour effectuer des tests de résilience et de disponibilité dès le début du cycle de développement.

Adaptez un format de documentation simple afin qu’il soit facile pour tout le monde de comprendre le processus et les résultats de chaque test régulier.

Partagez les résultats documentés avec les équipes appropriées, telles que les équipes opérationnelles, les dirigeants technologiques, les parties prenantes commerciales et les parties prenantes de la récupération d’urgence. Les résultats devraient éclairer l’affinement des objectifs de fiabilité, tels que les objectifs de niveau de service (SLO), les accords de niveau de service (SLA), les objectifs de temps de récupération (RTO) et les objectifs de point de récupération (RPO).

Créez une cadence de test régulière pour vos sauvegardes. Restaurez les données sur des systèmes isolés pour garantir que les sauvegardes sont valides et que les restaurations sont fonctionnelles.

Documentez et partagez les mesures de temps de récupération avec vos parties prenantes de la récupération d’urgence pour garantir que les attentes en matière de récupération sont appropriées.

Utilisez les procédures de test de déploiement standard du secteur pour vous assurer que vous disposez d’un processus de déploiement automatisé, prévisible et efficace.

Testez la capacité de votre charge de travail à résister aux pannes transitoires. Pour plus d’informations, voir Recommandations concernant le traitement des pannes transitoires.

Testez la manière dont votre charge de travail gère les échecs des services dépendants ou d’autres dépendances à l’aide de l’injection de pannes.

Testez votre plan de récupération d’urgence pour répondre aux pannes catastrophiques et autres incidents majeurs.

Testez la capacité de votre charge de travail à se dégrader progressivement et minimisez le rayon d’explosion d’un dysfonctionnement des composants en utilisant l’injection de pannes.

Tirez parti des pannes planifiées et imprévues

Lorsque votre charge de travail est hors ligne en raison d’une maintenance planifiée ou d’une panne imprévue, vous disposez d’une opportunité unique d’effectuer des tests et d’améliorer votre compréhension de votre charge de travail. Les sections suivantes fournissent des recommandations pour chaque scénario.

Maintenance planifiée

Lorsque vous avez planifié des fenêtres de maintenance pour les mises à jour ou les correctifs, vous pouvez tester les composants et les flux qui ne sont pas impliqués dans le travail de maintenance. Effectuez des tests sans risque potentiel de dégrader de manière inattendue la charge de travail ou de la mettre complètement hors ligne. Si vous disposez de suffisamment de temps pendant votre fenêtre de maintenance, vous pouvez également tester les composants et les flux impliqués dans la maintenance une fois les travaux de maintenance terminés.

Panne imprévue

Profitez de chaque incident de panne comme d’une opportunité pour en savoir plus sur votre charge de travail et améliorer sa résilience en suivant ces étapes, classées par priorité :

  1. Remettez la charge de travail en ligne pour vos utilisateurs. Vous devrez peut-être contourner le problème, résoudre le problème ou lancer les processus de récupération.

  2. Déterminez la cause première de la panne et corrigez-la. Si vous pouvez corriger la cause première dans le cadre de l’enquête, documentez-la et les mesures que vous avez prises pour y remédier. Si le problème nécessite de prendre une autre fenêtre de maintenance plus tard, assurez-vous que vos mesures d’atténuation peuvent gérer la charge attendue en la testant minutieusement. Assurez-vous d’avoir mis en place une surveillance suffisante pour couvrir vos mesures d’atténuation.

  3. Le cas échéant, recherchez le même problème ou les faiblesses de configuration qui pourraient être affectées par des problèmes similaires sur tous les composants de votre charge de travail. Profitez de cette opportunité pour traiter ces composants de manière proactive. Consultez votre historique d’incidents pour détecter des modèles de problèmes similaires dans votre charge de travail.

  4. Utilisez vos résultats pour améliorer votre stratégie de test. Assurez-vous d’avoir résolu avec succès la cause première et les problèmes similaires en testant directement le même échec.

Conseils en matière d’injection de pannes et d’ingénierie du chaos

Les tests d’injection de pannes suivent les principes de l’ingénierie du chaos en mettant en évidence la capacité de la charge de travail à réagir aux pannes de composants. Effectuez des tests d’injection de pannes dans des environnements de préproduction et de production. Appliquez les informations que vous avez apprises en en effectuant une analyse des modes de défaillance pour vous assurer que vous testez uniquement les défauts que vous priorisez et que vous disposez de stratégies d’atténuation qui corrigent les défauts.

Les principales lignes directrices de l’ingénierie du chaos sont les suivantes :

  • Soyez proactif. N’attendez pas que les échecs se produisent. Essayez d’anticiper les pannes en menant des expériences de chaos pour découvrir et résoudre les problèmes avant qu’ils n’affectent votre environnement de production.

  • Acceptez les pannes. Acceptez et apprenez des pannes qui se produisent dans votre système. Considérez les pannes comme un élément naturel des systèmes complexes et utilisez-les comme des opportunités pour apprendre et améliorer la fiabilité de votre système.

  • Mettez le système en échec. Injectez délibérément des pannes ou du stress dans votre système pour tester sa résilience. Simulez des pannes ou des perturbations réelles pour tester et améliorer les capacités de récupération de votre charge de travail.

  • Développez l’immunité. Utilisez des expériences d’ingénierie du chaos pour améliorer la capacité de votre charge de travail à prévenir les pannes et à s’en remettre.

L’ingénierie du chaos fait partie intégrante de la culture d’équipe en matière de charge de travail et constitue une pratique continue, et non un effort tactique à court terme en réponse à une seule panne. Suivez cette méthode standard lorsque vous concevez vos expériences de chaos :

  1. Commencez par une hypothèse. Chaque expérience doit avoir un objectif clair, comme tester la capacité d’un flux à résister à la perte d’un composant particulier.

  2. Mesurez le comportement de base. Assurez-vous de disposer de mesures de fiabilité et de performances cohérentes pour le flux et les composants impliqués dans une expérience, afin de les comparer à l’état dégradé lors de l’exécution de votre expérience.

  3. Injectez une ou plusieurs pannes. L’expérience doit intentionnellement cibler des composants spécifiques qui peuvent être récupérés rapidement, et vous devez avoir une attente informée de l’effet que l’injection de faute provoquera pour aider à contrôler le rayon d’explosion de l’expérience.

  4. Surveillez le comportement résultant. Rassemblez des données télémétriques sur les composants de flux individuels et le comportement de flux de bout en bout ciblé par l’expérience pour bien comprendre les effets de la panne. Comparez les mesures que vous collectez avec les mesures de base pour obtenir une image complète des résultats de l’injection de pannes.

  5. Documentez le processus et les observations. La tenue de registres détaillés de vos expériences éclairera les décisions futures concernant la conception de la charge de travail, garantissant ainsi que vous comblerez les lacunes révélées au fil du temps.

  6. Identifiez et agissez en fonction du résultat. Planifiez des étapes de remédiation qui peuvent être ajoutées à votre réplication de charge de travail en tant qu’améliorations. Veiller à ce que les plans d’amélioration de la conception soient examinés et testés dans des environnements hors production selon les mêmes processus que les autres déploiements.

Validez périodiquement vos processus, vos choix d’architecture et votre code pour détecter rapidement la dette technique, intégrer de nouvelles technologies et vous adapter à l’évolution des exigences.

Lorsque vous effectuez des expériences d’injection de pannes, vous :

  • confirmez que la surveillance est en place et que les alertes sont configurées ;

  • validez votre processus d’affectation d’une personne directement responsable (DRI) pour s’approprier un incident ;

  • garantissez que votre documentation et vos processus d’enquête sont à jour ;

intégrez les recommandations et considérations suivantes pour optimiser votre stratégie de test du chaos :

  • remettez en question les hypothèses du système. Avec les tests, vous essayez d’améliorer la résilience de votre charge de travail et vos stratégies de conception de charge de travail. Recherchez des opportunités d’injecter des défauts dans des composants et des flux que vous supposez fiables sur la base de vos expériences passées. Ils pourraient ne pas être fiables dans votre nouvelle charge de travail.

  • Validez le changement. Sans tests approfondis, y compris des tests d’injection de fautes, vous risquez d’avoir une image incomplète de votre charge de travail une fois les modifications apportées. Par exemple, vous pouvez introduire de nouvelles dépendances qui ne sont pas immédiatement visibles.

  • Utilisez des tampons de contrat SLA. Limitez les tests de chaos pour respecter vos contrats SLA et éviter les effets négatifs potentiels des pannes. Vos objectifs de récupération de flux et de composants aident à définir la portée de vos tests.

  • Établissez un budget d’erreurs comme investissement dans le chaos et l’injection de pannes. Votre budget d’erreur est la différence entre atteindre 100 % du SLO et atteindre le SLO convenu.

  • Mettez une fin à l’expérience si elle dépasse le cadre. Les résultats inconnus sont le résultat attendu des expériences de chaos. Efforcez-vous d’atteindre un équilibre entre la collecte de données de résultats substantielles et l’impact sur le moins d’utilisateurs de production possible.

  • Travaillez en étroite collaboration avec les équipes de développement pour assurer la pertinence des pannes injectées. Utilisez les incidents ou problèmes passés comme guide. Examinez les dépendances et évaluez les résultats lorsque vous supprimez ces dépendances.

  • Identifiez et documentez les dépendances non découvertes auparavant entre les différents composants de votre charge de travail qui sont révélées grâce aux tests de chaos.

  • Ajustez les plans de récupération si nécessaire pour tenir compte des dépendances découvertes lors des tests de chaos.

  • Utilisez les résultats de vos expériences et tests comme base pour de nouvelles expériences et tests. À mesure que des comportements inattendus apparaissent, de nouveaux tests peuvent cibler directement ces comportements et vous donner la possibilité de concevoir des stratégies correctives pour eux.

Compromis : tester l’injection de pannes en production peut être gênant et entraîner éventuellement des temps d’arrêt. Soyez transparent avec les parties prenantes sur cette possibilité et assurez-vous que vous disposez de mesures de protection pour mettre fin aux expériences et de plans de restauration afin d’annuler rapidement les échecs que vous introduisez.

Facilitation de Power Platform

Vous pouvez utiliser des résultats statiques dans Power Automate pour renvoyer un résultat fixe afin de tester votre charge de travail.

Moteur de test Power Apps (version préliminaire) est un composant CLI Power Platform que vous pouvez utiliser pour tester des applications canevas autonomes dans Power Apps.

Azure Test Plans, une solution de gestion des tests facile d’utilisation, basée sur un navigateur qui fournit les fonctionnalités requises pour les tests manuels planifiés, les tests d’acceptation des utilisateurs, les tests exploratoires et la collecte des commentaires des parties prenantes.

Si votre charge de travail inclut des ressources Azure, vous pouvez utiliser Azure Chaos Studio, un service géré qui utilise l’ingénierie du chaos pour vous aider à mesurer, comprendre et améliorer la résilience de vos applications et services cloud.

Liste de contrôle de fiabilité

Référez-vous à l’ensemble complet des recommandations.