Modèles de conception cloud qui prennent en charge l’efficacité des performances
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 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 fiabilité, la sécurité, les coûts et les opérations. S’ils ne sont pas atténués, les risques finissent par entraîner des inefficacités en matière de performances. Ces modèles sont soutenus par une expérience réelle, sont conçus pour l’échelle du cloud et les modèles d’exploitation, 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 Efficacité des performances traitent de la scalabilité, du réglage des performances, de la hiérarchisation des tâches et de la suppression des goulots d’étranglement.
Modèles de conception pour l’efficacité des performances
Le tableau suivant récapitule les modèles de conception cloud qui prennent en charge les objectifs d’efficacité des performances.
Modèle | Résumé |
---|---|
Demande-réponse asynchrone | Améliore la réactivité et la scalabilité des systèmes en découplant les phases de demande et de réponse des interactions pour les processus qui n’ont pas besoin de réponses immédiates. En utilisant un modèle asynchrone, vous pouvez optimiser la concurrence côté serveur. Vous pouvez utiliser ce modèle pour planifier l’exécution du travail en fonction de la capacité. |
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 frontend spécifique. Cette séparation vous permet d’optimiser d’une manière qui n’est peut-être pas possible avec une couche de service partagée. Lorsque vous gérez des clients individuels différemment, vous pouvez optimiser les performances pour les contraintes et fonctionnalités d’un client spécifique. |
Cloisonnement | Introduit la segmentation entre les composants pour isoler le rayon d’explosion des dysfonctionnements. Cette conception permet à chaque cloison d’être individuellement scalable pour répondre aux besoins de la tâche encapsulée dans la cloison. |
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. Ce modèle est particulièrement utile avec les données lourdes en lecture qui ne changent pas souvent et peuvent tolérer une certaine quantité d’obsolescence. L’objectif de cette implémentation est de fournir de meilleures performances dans l’ensemble du système en déchargeant ce type de données dans un cache au lieu de les approvisionner à partir de son magasin de données. |
Chorégraphie | Coordonne le comportement des composants distribués autonomes dans une charge de travail à l’aide d’une communication décentralisée pilotée par les événements. Ce modèle peut fournir une alternative lorsque des goulots d’étranglement des performances se produisent dans une topologie d’orchestration centralisée. |
Disjoncteur | Empêche les requêtes continues à une dépendance défaillante ou indisponible. Une approche de nouvelle tentative d’erreur peut entraîner une utilisation excessive des ressources pendant la récupération des dépendances et peut également surcharger les performances d’une dépendance qui tente de récupérer. |
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. Ce modèle améliore l’efficacité et les performances des éditeurs de messages, des abonnés et du bus de messages lui-même lorsque le système gère des charges utiles de données volumineuses. Il fonctionne en diminuant la taille des messages et en s’assurant que les consommateurs récupèrent les données de charge utile uniquement si nécessaire et à un moment opportun. |
Consommateurs concurrents | Applique le traitement distribué et simultané pour gérer efficacement les éléments d’une file d’attente. Ce modèle prend en charge la distribution de la charge sur tous les nœuds grand public et la mise à l’échelle dynamique basée sur la profondeur de la file d’attente. |
Consolidation des ressources de calcul | Optimise et consolide les ressources de calcul en augmentant la densité. Ce modèle combine plusieurs applications ou composants d’une charge de travail sur une infrastructure partagée. Cette consolidation optimise l’utilisation des ressources de calcul en utilisant la capacité de nœud de rechange pour réduire le surapprovisionnement. Les orchestrateurs de conteneurs en sont un exemple courant. Les instances de calcul volumineuses (mises à l’échelle verticalement) sont souvent utilisées dans le pool de ressources pour ces infrastructures. |
Séparation des responsabilités en matière de commande et de requête (CQRS) | Sépare les opérations de lecture et d’écriture du modèle de données d’une application. Cette séparation permet des optimisations ciblées des performances et de la mise à l’échelle pour l’objectif spécifique de chaque opération. Cette conception est particulièrement utile dans les applications qui ont un ratio lecture-écriture élevé. |
Empreintes de déploiement | Fournit une approche pour la publication d’une version spécifique d’une application et de son infrastructure en tant qu’unité contrôlée de déploiement, basée sur l’hypothèse que les versions identiques ou différentes seront déployées simultanément. Ce modèle s’aligne souvent sur les unités d’échelle définies dans votre charge de travail : comme une capacité supplémentaire est nécessaire au-delà de ce qu’une unité d’échelle unique fournit, un tampon de déploiement supplémentaire est déployé pour effectuer un scale-out. |
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. En fonction de votre charge de travail, ce modèle, généralement associé à CQRS, à une conception de domaine appropriée et à la capture instantanée stratégique, peut améliorer les performances. Les améliorations des performances sont dues aux opérations atomiques d’ajout uniquement et à l’évitement du verrouillage de base de données pour les écritures et les lectures. |
Identité fédérée | Délègue l’approbation à un fournisseur d’identité externe à la charge de travail pour gérer les utilisateurs et fournir l’authentification pour votre application. Lorsque vous déchargez la gestion et l’authentification des utilisateurs, vous pouvez consacrer des ressources d’application à d’autres priorités. |
Opérateur de contrôle | Décharge le traitement des demandes spécifiquement pour l’application de la sécurité et du contrôle d’accès avant et après le transfert de la demande vers un nœud principal. Ce modèle est souvent utilisé pour implémenter la limitation au niveau de la passerelle plutôt que pour implémenter des vérifications de débit au niveau du nœud. La coordination de l’état du taux entre tous les nœuds n’est pas intrinsèquement performante. |
Agrégation de passerelle | Simplifie les interactions client avec votre charge de travail en agrégeant les appels à plusieurs services back-end dans une seule requête. Cette conception peut entraîner moins de latence qu’une conception dans laquelle le client établit plusieurs connexions. La mise en cache est également courante dans les implémentations d’agrégation, car elle réduit les appels aux systèmes principaux. |
Déchargement de passerelle | Décharge le traitement des demandes vers un appareil de passerelle avant et après le transfert de la demande vers un nœud principal. L’ajout d’une passerelle de déchargement au processus de demande vous permet d’utiliser moins de ressources par nœud, car les fonctionnalités sont centralisées au niveau de la passerelle. Vous pouvez optimiser l’implémentation de la fonctionnalité déchargée indépendamment du code de l’application. Les fonctionnalités fournies par la plateforme déchargées sont déjà susceptibles d’être très performantes. |
Routage de passerelle | Achemine les demandes réseau entrantes vers différents systèmes back-end 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 de distribuer le trafic entre les nœuds de votre système pour équilibrer la charge. |
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. Vous pouvez l’utiliser pour servir votre application à partir d’une région la plus proche de votre base d’utilisateurs distribués. Cela réduit la latence en éliminant le trafic longue distance et en partageant l’infrastructure uniquement entre les utilisateurs qui utilisent actuellement la même géode. |
Surveillance de point de terminaison d’intégrité | Fournit un moyen 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 ces points de terminaison pour améliorer l’équilibrage de charge en acheminant le trafic vers uniquement les nœuds vérifiés comme sains. Avec une configuration supplémentaire, vous pouvez également obtenir des métriques sur la capacité de nœud disponible. |
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. Les clients sont dirigés vers leur partition, leur partition ou leur point de terminaison, ce qui peut activer le partitionnement dynamique des données pour l’optimisation des performances. |
Vue matérialisée | Utilise des vues de données précalculées pour optimiser la récupération des données. Les vues matérialisées stockent les résultats de calculs ou de requêtes complexes sans exiger que le moteur de base de données ou le client se recalculent pour chaque requête. Cette conception réduit la consommation globale des ressources. |
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 performances sur le travail le plus urgent. |
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. Le découplage des éditeurs et des consommateurs vous permet d’optimiser le calcul et le code spécifiquement pour la tâche que le consommateur doit effectuer pour le message spécifique. |
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 permet de concevoir intentionnellement les performances de débit, car l’admission des requêtes n’a pas besoin d’être corrélée à la vitesse de traitement. |
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 de performances et de capacité pour détecter l’utilisation actuelle et acheminer les tâches vers un agent qui a de la capacité. Vous pouvez également l’utiliser pour hiérarchiser l’exécution d’un travail de priorité plus élevée par rapport au travail de priorité inférieure. |
Partitionnement | Dirige la charge vers une destination logique spécifique pour gérer une requête spécifique, ce qui permet la colocalisation pour l’optimisation. Lorsque vous utilisez le partitionnement dans votre stratégie de mise à l’échelle, les données ou le traitement sont isolés sur une partition, de sorte qu’ils ne sont en concurrence pour les ressources qu’avec d’autres demandes dirigées vers cette partition. Vous pouvez également utiliser le partitionnement pour optimiser en fonction de la géographie. |
Sidecar | Étend les fonctionnalités d’une application en encapsulant des tâches non primaires ou transversales dans un processus complémentaire qui existe parallèlement à l’application main. Vous pouvez déplacer des tâches transversales vers un seul processus pouvant être mis à l’échelle sur plusieurs instances du processus main, ce qui réduit la nécessité de déployer des fonctionnalités en double pour chaque instance de l’application. |
Hébergement de contenu statique | Optimise la distribution de contenu statique aux clients de charge de travail à l’aide d’une plateforme d’hébergement conçue à cet effet. Le déchargement de la responsabilité sur un hôte externalisé permet d’atténuer la congestion et vous permet d’utiliser votre plateforme d’application uniquement pour fournir une logique métier. |
Limitation | Impose des limites sur le débit ou le débit des demandes entrantes à une ressource ou à un composant. Lorsque le système est soumis à une forte demande, ce modèle permet d’atténuer la congestion qui peut entraîner des goulots d’étranglement des performances. Vous pouvez également l’utiliser pour éviter de manière proactive les scénarios de voisins bruyants. |
Clé Valet | Octroie un accès limité à la sécurité à une ressource sans utiliser de ressource intermédiaire pour proxyer l’accès. Cela décharge le traitement en tant que relation exclusive entre le client et la ressource sans nécessiter un composant ambassadeur qui doit gérer toutes les demandes du client de manière performante. L’avantage de l’utilisation de ce modèle est le plus important lorsque le proxy n’ajoute pas de valeur à la transaction. |
Étapes suivantes
Passez en revue les modèles de conception cloud qui prennent en charge les autres piliers d’Azure Well-Architected Framework :