Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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, ce qui peut avoir un impact sur la fiabilité, la sécurité, le coût et les opérations. Si ce n’est pas le cas, les risques entraîneront finalement des inefficacités de performances. 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 Efficacité des performances répondent à l’évolutivité, au réglage des performances, à la hiérarchisation des tâches et à la suppression des goulots d’étranglement.
Le tableau suivant récapitule les modèles de conception d’architecture qui prennent en charge les objectifs de l’efficacité des performances.
| Motif | Résumé |
|---|---|
| Requête-réponse asynchrone | Améliore la réactivité et l’extensibilité 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 la fin du travail en fonction de la capacité. |
| 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. Cette séparation vous permet d’optimiser de manière à ne pas être possible avec une couche de service partagé. 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. |
| Cloison | Introduit la segmentation entre les composants pour isoler le rayon d’explosion des dysfonctionnements. Cette conception permet à chaque cloison d’être évolutive individuellement 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 l’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 basée sur 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 vers 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 sur 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 associé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 réduisant la taille des messages et en garantissant que les consommateurs récupèrent des 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 informatiques à l’aide de la capacité de nœud de rechange pour réduire le surprovisionnement. Les orchestrateurs de conteneurs sont un exemple courant. Les instances de calcul volumineuses (à l’échelle verticale) sont souvent utilisées dans le pool de ressources pour ces infrastructures. |
| Séparation des responsabilités des commandes et des requêtes (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 de performances et de mise à l’échelle ciblées pour chaque opération. Cette conception est la plus utile dans les applications qui ont un ratio lecture-écriture élevé. |
| Empreintes de déploiement | Fournit une approche permettant de libérer une version spécifique d’une application et de son infrastructure en tant qu’unité contrôlée de déploiement, en fonction de l’hypothèse que les mêmes versions 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 : étant donné que la capacité supplémentaire est nécessaire au-delà de ce qu’offre une unité d’échelle unique, 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 et ajouté uniquement. Selon votre charge de travail, ce modèle, généralement combiné à CQRS, une conception de domaine appropriée et une capture instantanée stratégique, peuvent améliorer les performances. Les améliorations des performances sont dues aux opérations d’ajout atomique 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 la gestion des utilisateurs et la fourniture de 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. |
| Gardien | Décharge le traitement des demandes spécifiquement pour l’application du contrôle d’accès et de sécurité avant et après le transfert de la requête vers un nœud principal. Ce modèle est souvent utilisé pour implémenter la limitation au niveau d’une passerelle plutôt que d’implémenter des vérifications de débit au niveau du nœud. La coordination de l’état de débit 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 des appels à plusieurs services principaux 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 sur un appareil de passerelle avant et après le transfert de la requête 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 sur 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à très performantes. |
| 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 de distribuer le trafic entre les nœuds de votre système pour équilibrer la charge. |
| 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. Vous pouvez l’utiliser pour servir votre application à partir d’une région la plus proche de votre base d’utilisateurs distribuée. Cela réduit la latence en éliminant le trafic de longue distance et, car vous partagez l’infrastructure uniquement entre les utilisateurs qui utilisent actuellement le même géode. |
| 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 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 pointés vers leur partition, partition ou point de terminaison, qui peut activer le partitionnement dynamique des données pour l’optimisation des performances. |
| Vue matérialisée | Utilise des vues précomputées de donné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 que le moteur de base de données ou le client ne soit récomposé pour chaque requête. Cette conception réduit la consommation globale des ressources. |
| 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 performances sur le travail le plus sensible au temps. |
| É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. Le découplage des éditeurs 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 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 permet une conception intentionnelle sur les performances du débit, car l’entrée des requêtes n’a pas besoin de mettre en corrélation le taux dans lequel ils sont traités. |
| 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 de performances et de capacité pour détecter l’utilisation actuelle et acheminer les tâches vers un agent disposant d’une 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 colocation 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 d’une partition, de sorte qu’il concurrence uniquement les ressources avec d’autres requêtes dirigées vers cette partition. Vous pouvez également utiliser le partitionnement pour optimiser en fonction de la géographie. |
| Side-car | Étend les fonctionnalités d’une application encapsulant des tâches non primaires ou croisées dans un processus complémentaire qui existe en même temps que l’application principale. Vous pouvez déplacer des tâches croisées vers un processus unique pouvant être mis à l’échelle sur plusieurs instances du processus principal, 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. Externaliser la responsabilité vers un hôte externalisé aide à atténuer la congestion et vous permet d’utiliser votre plate-forme d’application uniquement pour livrer la logique métier. |
| Limitation | Impose des limites au taux ou au débit des requêtes entrantes à une ressource ou un composant. Lorsque le système est à 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. |
| Valet Key | Octroie un accès restreint à la sécurité à une ressource sans utiliser de ressource intermédiaire pour proxyer l’accès. Cette opération décharge le traitement en tant que relation exclusive entre le client et la ressource sans nécessiter de 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 d’architecture qui prennent en charge les autres piliers d’Azure Well-Architected Framework :
- Modèles de conception d’architecture qui prennent en charge la fiabilité
- Modèles de conception d’architecture qui prennent en charge la sécurité
- Modèles de conception d’architecture qui prennent en charge l’excellence opérationnelle
- Modèles de conception d’architecture qui prennent en charge l’optimisation des coûts