Modèles de conception cloud 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 pour le résultat souhaité. Ils peuvent également aider à atténuer les risques qui proviennent de problèmes spécifiques, ce qui peut avoir un impact sur la sécurité, les performances, les coûts et les opérations. S’ils ne sont pas atténués, ces risques entraîneront des problèmes de fiabilité. Ces modèles sont soutenus par l’expérience réelle, sont conçus pour les modèles d’exploitation et d’échelle cloud, et sont intrinsèquement indépendants des fournisseurs. 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é donnent la priorité à la disponibilité de la charge de travail, à l’auto-conservation, à la récupération, à l’intégrité des données et du traitement, et à la limitation des dysfonctionnements.

Modèles de conception pour la fiabilité

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

Modèle Résumé
Ambassadeur Encapsule et gère les communications réseau en déchargeant les tâches transversales liées à la communication réseau. Les services d’assistance résultants initient la communication au nom du client. Ce point de médiation offre la possibilité d’ajouter des modèles de fiabilité à la communication réseau, telles que les nouvelles tentatives ou la mise en mémoire tampon.
Services principaux destinés aux frontaux Individualise la couche de service d’une charge de travail en créant des services distincts qui sont 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 client attendus.
Cloisonnement 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 les erreurs à la cloison qui rencontre le problème, empêchant ainsi 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 une 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 est temporairement indisponible. En outre, en cas de dysfonctionnement dans le cache, la charge de travail peut revenir au magasin de données d’origine.
Disjoncteur Empêche les requêtes continues adressées à une dépendance défaillante ou indisponible. Ce modèle empêche ainsi la surcharge d’une dépendance en panne. Vous pouvez également utiliser ce modèle pour déclencher une dégradation normale dans la charge de travail. Les disjoncteurs sont souvent associés à la récupération automatique pour assurer à la fois la conservation 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 liées à un message. Les bus de messages ne fournissent pas la même fiabilité et la même récupération d’urgence que celles qui sont souvent présentes dans les magasins de données dédiés. La séparation des données du message peut donc offrir 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 dans les 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 d’un comportement système natif pour inverser l’effet.
Consommateurs concurrents Applique un traitement distribué et simultané pour gérer efficacement les éléments d’une file d’attente. Ce modèle génère la redondance dans le traitement de la file d’attente en traitant les consommateurs comme des réplicas, de sorte qu’une défaillance 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, en ajout uniquement. Vous pouvez utiliser ce modèle lorsqu’un historique fiable des modifications est essentiel dans un processus métier complexe. Il facilite également la reconstruction d’état si vous avez besoin de récupérer des magasins d’état.
Identité fédérée Les délégués font confiance à un fournisseur d’identité externe à la charge de travail pour gérer les utilisateurs et fournir 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, pendant 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 les 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 vers 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 demande vers un nœud principal. Le déchargement de 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é fiable fournie par la plateforme.
Routage de passerelle Achemine les requêtes réseau entrantes vers différents systèmes principaux en fonction des intentions de requête, de la logique métier et de la disponibilité du back-end. Le routage de passerelle vous permet d’acheminer le trafic uniquement vers des nœuds sains dans votre système.
Geode Déploie des systèmes qui fonctionnent en mode 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 selon lequel n’importe quel client peut se connecter à n’importe quel instance géographique. Cela peut aider votre charge de travail à résister à une ou plusieurs pannes régionales.
Surveillance de point de terminaison d’intégrité Permet de surveiller l’intégrité ou l’status 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, ainsi que pour les alertes et les tableaux de bord. Vous pouvez également l’utiliser comme un signal pour une correction auto-cicatrisant.
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 via 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 responsable Établit un leader des instances d’une application distribuée. Le responsable coordonne les responsabilités liées à l’atteinte 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 via des algorithmes de consensus lorsqu’un leader dysfonctionnement.
Canaux et filtres Décompose le traitement des données complexes en une série d’étapes indépendantes pour atteindre un résultat spécifique. La responsabilité unique de chaque étape permet de concentrer l’attention et d’éviter la distraction du traitement des données en mélange.
File d’attente de priorité 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.
Serveur de publication/abonné Dissocie les composants d’une architecture en remplaçant la communication directe de client à service ou de client à service par une communication via un répartiteur de messages intermédiaire ou un bus d’événements.
Nivellement de la charge basé sur une file d’attente Contrôle le niveau des requêtes ou tâches entrantes en les mettant en mémoire tampon dans une file d’attente et en laissant le processeur de files d’attente les gérer à un rythme contrôlé. Cette approche peut fournir une résilience face aux pics soudains de la demande en découplant l’arrivée des tâches de leur traitement. Il peut également isoler les dysfonctionnements dans le traitement de la file d’attente afin qu’ils n’affectent pas l’admission.
Limitation du débit Contrôle le taux de requêtes client pour réduire les erreurs de limitation et éviter les scénarios de nouvelles tentatives sans limite. Cette tactique protège le client en reconnaissant les limitations et les coûts liés à la communication avec un service lorsque le service est conçu pour éviter d’atteindre les limites spécifiées. Il fonctionne en contrôlant le nombre et/ou la taille des opérations envoyées au service pendant une période spécifique.
Nouvelle tentative Traite les échecs qui peuvent être temporaires ou intermittents en réessayant 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 de saga Coordonne les transactions de longue durée 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 échecs d’exécution et maintenir l’intégrité. Étant donné que les transactions monolithiques entre plusieurs systèmes distribués sont généralement impossibles, ce modèle fournit cohérence et fiabilité en implémentant l’atomicité et la compensation.
Superviseur de l’agent du planificateur Distribue et redistribue efficacement les tâches dans 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 en charge le traitement dans un ordre défini. Ce modèle peut éliminer les conditions de concurrence difficiles à résoudre, la gestion des messages litigieux ou d’autres solutions de contournement pour traiter des messages mal triés qui peuvent entraîner des dysfonctionnements.
Partitionnement Dirige la charge vers une destination logique spécifique pour gérer la requête spécifique, ce qui permet la colocalisation pour l’optimisation. Étant donné que les données ou le traitement sont isolés à la partition, un dysfonctionnement dans une partition reste isolé de cette partition.
Figuier étrangleur Fournit une approche pour 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 débit ou au débit des requêtes entrantes à une ressource ou à un composant. Vous pouvez concevoir les limites pour éviter l’épuisement des ressources qui pourrait entraîner des dysfonctionnements. Vous pouvez également utiliser ce modèle comme mécanisme de contrôle dans un plan de dégradation gracieux.

Étapes suivantes

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