Partager via


Modèles de conception d’architecture qui prennent en charge la fiabilité

Lorsque vous concevez des architectures de charge de travail, vous devez utiliser des modèles de secteur qui répondent aux défis courants. Les modèles peuvent vous aider à faire des compromis intentionnels au sein des charges de travail et à optimiser les résultats souhaités. Ils peuvent également aider à atténuer les risques qui proviennent de problèmes spécifiques, qui peuvent avoir un impact sur la sécurité, les performances, le coût et les opérations. Si ce n’est pas le cas, ces risques entraîneront éventuellement des problèmes de fiabilité. Ces modèles sont soutenus par l’expérience réelle, sont conçus pour la mise à l’échelle du cloud et les modèles d’exploitation, et sont intrinsèquement indépendants du fournisseur. L’utilisation de modèles connus comme moyen de normaliser la conception de votre charge de travail est un composant de l’excellence opérationnelle.

De nombreux modèles de conception prennent directement en charge un ou plusieurs piliers d’architecture. Les modèles de conception qui prennent en charge le pilier Fiabilité hiérarchisent la disponibilité des charges de travail, la conservation automatique, la récupération, l’intégrité des données et du traitement et l’isolement des dysfonctionnements.

Le tableau suivant récapitule les modèles de conception d’architecture qui prennent en charge les objectifs de fiabilité.

Motif Résumé
Ambassadeur Encapsule et gère les communications réseau en déchargeant les tâches croisées liées à la communication réseau. Les services d’assistance résultants lancent la communication pour le compte du client. Ce point de médiation offre la possibilité d’ajouter des modèles de fiabilité à la communication réseau, telles que la nouvelle tentative ou la mise en mémoire tampon.
Back-ends pour les serveurs frontaux Individualise la couche de service d’une charge de travail en créant des services distincts exclusifs à une interface frontale spécifique. En raison de cette séparation, un dysfonctionnement de la couche de service qui prend en charge un client peut ne pas affecter la disponibilité de l’accès d’un autre client. Lorsque vous traitez différents clients différemment, vous pouvez hiérarchiser les efforts de fiabilité en fonction des modèles d’accès clients attendus.
Cloison Introduit une segmentation intentionnelle et complète entre les composants pour isoler le rayon d’explosion des dysfonctionnements. Cette stratégie d’isolation des défaillances tente de contenir des erreurs à la seule cloison qui rencontre le problème, ce qui empêche l’impact sur d’autres cloisonnements.
Cache-Aside Optimise l’accès aux données fréquemment lues en introduisant un cache rempli à la demande. Le cache est ensuite utilisé sur les demandes suivantes pour les mêmes données. La mise en cache crée la réplication des données et, de manière limitée, peut être utilisée pour préserver la disponibilité des données fréquemment consultées si le magasin de données d’origine n’est pas disponible temporairement. En outre, s’il existe un dysfonctionnement dans le cache, la charge de travail peut revenir au magasin de données d’origine.
Disjoncteur Empêche les requêtes continues vers une dépendance défaillante ou indisponible. Ainsi, ce modèle empêche la surcharge d’une dépendance défaillante. Vous pouvez également utiliser ce modèle pour déclencher une dégradation normale dans la charge de travail. Les disjoncteurs sont souvent couplés à la récupération automatique pour fournir à la fois la préservation de soi et l’auto-guérison.
Vérification des revendications Sépare les données du flux de messagerie, ce qui permet de récupérer séparément les données associées à un message. Les bus de messages ne fournissent pas la même fiabilité et la récupération d’urgence qui sont souvent présents dans les magasins de données dédiés, de sorte que la séparation des données du message peut fournir une fiabilité accrue pour les données sous-jacentes. Cette séparation permet également une approche de récupération de file d’attente de messages après un sinistre.
Transaction de compensation Fournit un mécanisme de récupération des défaillances en inversant les effets des actions précédemment appliquées. Ce modèle résout les dysfonctionnements des chemins de charge de travail critiques à l’aide d’actions de compensation, qui peuvent impliquer des processus tels que la restauration directe des modifications de données, la rupture des verrous de transaction ou même l’exécution du comportement du système natif pour inverser l’effet.
Consommateurs concurrents Applique le traitement distribué et simultané pour gérer efficacement les éléments d’une file d’attente. Ce modèle génère une redondance dans le traitement de file d’attente en traitant les consommateurs en tant que réplicas, de sorte qu’une défaillance d’instance n’empêche pas d’autres consommateurs de traiter les messages de file d’attente.
Approvisionnement en événements Traite le changement d’état comme une série d’événements, en les capturant dans un journal immuable et ajouté uniquement. Vous pouvez utiliser ce modèle lorsqu’un historique fiable des modifications est crucial dans un processus métier complexe. Il facilite également la reconstruction de l’état si vous avez besoin de récupérer des magasins d’état.
Identité fédérée Délègue l’approbation à un fournisseur d’identité externe à la charge de travail pour la gestion des utilisateurs et la fourniture de l’authentification pour votre application. Le déchargement de la gestion des utilisateurs et de l’authentification déplace la fiabilité de ces composants vers le fournisseur d’identité, qui a généralement un contrat SLA élevé. En outre, lors de la récupération d’urgence de la charge de travail, les composants d’authentification n’ont probablement pas besoin d’être traités dans le cadre du plan de récupération de charge de travail.
Agrégation de passerelle Simplifie les interactions client avec votre charge de travail en agrégeant des appels à plusieurs services principaux dans une seule requête. Cette topologie vous permet de déplacer la gestion des erreurs temporaires d’une implémentation distribuée entre les clients et une implémentation centralisée.
Déchargement de passerelle Décharge le traitement des demandes sur un appareil de passerelle avant et après le transfert de la requête vers un nœud principal. Décharger cette responsabilité sur une passerelle réduit la complexité du code d’application sur les nœuds principaux. Dans certains cas, le déchargement remplace complètement les fonctionnalités par une fonctionnalité fournie par une plateforme fiable.
Routage de passerelle Route les demandes réseau entrantes vers différents systèmes principaux en fonction des intentions de demande, de la logique métier et de la disponibilité du back-end. Le routage de passerelle vous permet d’acheminer le trafic vers des nœuds sains uniquement dans votre système.
Géode Déploie des systèmes qui fonctionnent dans des modes de disponibilité actif-actif dans plusieurs zones géographiques. Ce modèle utilise la réplication des données pour prendre en charge l’idéal que n’importe quel client puisse se connecter à n’importe quelle instance géographique. Il peut aider votre charge de travail à résister à une ou plusieurs pannes régionales.
Surveillance des points de terminaison d’intégrité Fournit un moyen de surveiller l’intégrité ou l’état d’un système en exposant un point de terminaison spécifiquement conçu à cet effet. Vous pouvez utiliser ce point de terminaison pour gérer l’intégrité de votre charge de travail et pour les alertes et les tableaux de bord. Vous pouvez également l’utiliser comme signal pour la correction de l’auto-guérison.
Table d’index Optimise la récupération des données dans les magasins de données distribués en permettant aux clients de rechercher des métadonnées afin que les données puissent être récupérées directement, ce qui évite d’avoir à effectuer des analyses complètes du magasin de données. Étant donné que les clients sont pointés vers leur partition, partition ou point de terminaison par le biais d’un processus de recherche, vous pouvez utiliser ce modèle pour faciliter une approche de basculement pour l’accès aux données.
Élection du chef Établit un leader d’instances d’une application distribuée. Le leader coordonne les responsabilités liées à l’accomplissement d’un objectif. Ce modèle atténue l’effet des dysfonctionnements de nœud en redirigeant de manière fiable le travail. Il implémente également le basculement par le biais d’algorithmes de consensus lorsqu’un leader ne fonctionne pas correctement.
Canaux et filtres Décompose le traitement complexe des données en une série d’étapes indépendantes pour obtenir un résultat spécifique. La responsabilité unique de chaque étape permet d’attirer l’attention et d’éviter la distraction du traitement des données comminglé.
File d’attente prioritaire Garantit que les éléments de priorité supérieure sont traités et terminés avant les éléments de priorité inférieure. La séparation des éléments en fonction de la priorité métier vous permet de concentrer les efforts de fiabilité sur le travail le plus critique.
Éditeur/Abonné Dissocie les composants d’une architecture en remplaçant la communication directe client-à-service ou client-à-services par communication par le biais d’un répartiteur de messages intermédiaire ou d’un bus d’événements.
Queue-Based niveau de charge Contrôle le niveau des requêtes entrantes ou des tâches en les mettant en mémoire tampon dans une file d’attente et en laissant le processeur de file d’attente les gérer à un rythme contrôlé. Cette approche peut fournir une résilience contre les pics soudains de demande en découplant l’arrivée des tâches à partir de leur traitement. Il peut également isoler les dysfonctionnements dans le traitement de la file d’attente afin qu’ils n’affectent pas l’entrée.
Limitation du débit Contrôle le taux de requêtes clientes pour réduire les erreurs de limitation et éviter les scénarios de nouvelle tentative sans limite. Cette tactique protège le client en reconnaissant les limitations et les coûts de communication avec un service lorsque le service est conçu pour éviter d’atteindre les limites spécifiées. Elle fonctionne en contrôlant le nombre et/ou la taille des opérations envoyées au service pendant une période spécifique.
réessayer Résout les défaillances qui peuvent être temporaires ou intermittentes en retenant certaines opérations, de manière contrôlée. L’atténuation des erreurs temporaires dans un système distribué est une technique clé pour améliorer la résilience d’une charge de travail.
Transactions distribuées Saga Coordonne les transactions longues et potentiellement complexes en décomposant le travail en séquences de transactions plus petites et indépendantes. Chaque transaction doit également avoir des actions de compensation pour inverser les défaillances dans l’exécution et maintenir l’intégrité. Étant donné que les transactions monolithiques sur plusieurs systèmes distribués sont généralement impossibles, ce modèle fournit une cohérence et une fiabilité en implémentant l’atomicité et la compensation.
Superviseur de l’agent planificateur Distribue et redistribue efficacement les tâches sur un système en fonction de facteurs observables dans le système. Ce modèle utilise des métriques d’intégrité pour détecter les défaillances et rediriger les tâches vers un agent sain afin d’atténuer les effets d’un dysfonctionnement.
Convoi séquentiel Gère l’entrée de messagerie simultanée tout en prenant également en charge le traitement dans un ordre défini. Ce modèle peut éliminer les conditions de concurrence difficiles à résoudre, la gestion contentieuse des messages ou d’autres solutions de contournement pour traiter les messages mal ordonnés pouvant entraîner des dysfonctionnements.
Partitionnement Dirige la charge vers une destination logique spécifique pour gérer la requête spécifique, en activant la colocalisation pour l’optimisation. Étant donné que les données ou le traitement sont isolés de la partition, un dysfonctionnement dans une partition reste isolé à cette partition.
Strangler Fig Fournit une approche permettant de remplacer systématiquement les composants d’un système en cours d’exécution par de nouveaux composants, souvent lors d’une migration ou d’une modernisation du système. L’approche incrémentielle de ce modèle peut aider à atténuer les risques pendant une transition.
Limitation Impose des limites au taux ou au débit des requêtes entrantes à une ressource ou un composant. Vous pouvez concevoir les limites pour empêcher l’épuisement des ressources susceptibles d’entraîner des dysfonctionnements. Vous pouvez également utiliser ce modèle comme mécanisme de contrôle dans un plan de dégradation approprié.

Étapes suivantes

Passez en revue les modèles de conception d’architecture qui prennent en charge les autres piliers d’Azure Well-Architected Framework :