Partager via


Modèles de conception de cloud

Ces modèles de conception sont utiles pour développer des applications fiables, évolutives et sécurisées dans le cloud.

Chaque modèle décrit le problème traité par le modèle, les aspects à prendre en compte pour l’application du modèle et un exemple basé sur Microsoft Azure. La plupart des modèles incluent des exemples ou des extraits de code qui montrent comment implémenter le modèle sur Azure. La plupart des modèles conviennent à n’importe quel système distribué, qu’il soit hébergé sur Azure ou sur d’autres plateformes cloud.

Les charges de travail cloud sont sujettes aux illusions de l’informatique distribuée. Voici quelques exemples d’illusions de conception cloud :

  • Le réseau est fiable
  • Le temps de latence est nul
  • La bande passante est infinie
  • Le réseau est sûr
  • La topologie ne change pas
  • Il y a un seul administrateur
  • Le contrôle de version des composants est simple
  • L’implémentation de l’observabilité peut être retardée

Les modèles de conception n’éliminent pas ces notions, mais peuvent contribuer à les faire connaître, à les compenser et à les atténuer. Chaque modèle cloud a ses propres compromis. Vous devez vous intéresser davantage aux raisons pour lesquelles vous choisissez un modèle donné qu’à la manière de le mettre en œuvre.

Défis liés au développement cloud

Gestion des données

Gestion des données

La gestion des données constitue l’élément clé des applications cloud et a une incidence sur la plupart des attributs de qualité. Les données sont généralement hébergées dans des emplacements distincts et sur plusieurs serveurs pour des raisons de performances, de scalabilité ou de disponibilité. Cela peut soulever une multitude de problèmes. Par exemple, il est impératif de préserver la cohérence des données et de synchroniser généralement les données entre les différents emplacements.

Conception et implémentation

Conception et implémentation

Une bonne conception englobe l’homogénéité et la cohérence dans la conception de composants et de déploiements, la facilité de gestion pour simplifier l’administration et le développement, et la réutilisation pour permettre l’utilisation de composants et de sous-systèmes dans d’autres applications et scénarios. Les décisions prises pendant la phase de conception et d’implémentation ont un impact significatif sur la qualité et le coût total de possession des applications et services hébergés dans le cloud.

Icône de messagerie

Messagerie

La nature distribuée des applications cloud nécessite une infrastructure de messagerie qui connecte les composants et les services, dans l’idéal de manière faiblement couplée pour optimiser la scalabilité. La messagerie asynchrone est largement utilisée et offre de nombreux avantages, mais elle présente également des défis, tels que le classement des messages, la gestion des messages incohérents, l’idempotence et bien plus encore.

Catalogue de modèles

Modèle Résumé Category
Ambassadeur Créez des services d’assistance qui envoient des requêtes réseau pour le compte d’applications ou d’un service consommateur. Conception et implémentation,
Excellence opérationnelle
Couche de lutte contre la corruption Implémentez une couche de façade ou d’adaptateur entre une application moderne et un système hérité. Conception et implémentation,
Excellence opérationnelle
Demande-réponse asynchrone Découplez le traitement de back-end à partir d’un hôte front-end, où le traitement de back-end doit être asynchrone, mais le front-end a quand même besoin d’une réponse claire. Messagerie
Services principaux destinés aux frontaux Créez différents services principaux destinés à être utilisés par des applications ou interfaces frontales spécifiques. Conception et implémentation
Cloisonnement Isolez les éléments d’une application sous forme de pools afin qu’en cas de défaillance de l’un d’eux, les autres continuent à fonctionner. Fiabilité
Cache-Aside Chargez les données à la demande dans un cache à partir d’une banque de données Gestion des données,
Efficacité des performances
Chorégraphie Laissez chaque service décider du moment et de la façon dont une opération métier est traitée, au lieu de dépendre d’un orchestrateur central. Messagerie,
Efficacité des performances
Disjoncteur Gérer les erreurs dont la résolution peut prendre un certain temps lors de la connexion à une ressource ou à un service distant. Fiabilité
Vérification des revendications Diviser un message volumineux en une vérification des revendications et une charge utile pour éviter de surcharger un bus de messages. Messagerie
Transaction de compensation Annulez le travail effectué par une série d’étapes qui définissent ensemble une opération cohérente. Fiabilité
Consommateurs concurrents Ce modèle vise à permettre à plusieurs consommateurs concurrents de traiter les messages reçus sur un même canal de messagerie. Messagerie
Consolidation des ressources de calcul Consolidez plusieurs tâches ou opérations en une seule unité de calcul. Conception et implémentation
CQRS Séparez les opérations qui lisent les données des opérations qui mettent à jour les données en utilisant des interfaces distinctes. Gestion des données,
Conception et implémentation,
Efficacité des performances
Empreintes de déploiement Déployez plusieurs copies indépendantes des composants de l’application, dont les magasins de données. Fiabilité,
Efficacité des performances
Configuration de la charge de travail Edge La grande variété des systèmes et des appareils en place dans un atelier peut compliquer la configuration de la charge de travail. Conception et implémentation
Approvisionnement en événements Utilisez un magasin d’ajout uniquement pour enregistrer la série complète d’événements qui décrivent les actions exécutées sur les données dans un domaine. Gestion des données,
Efficacité des performances
Magasin de configurations externes Déplacez les informations de configuration depuis le package de déploiement d’application vers un emplacement centralisé. Conception et implémentation,
Excellence opérationnelle
Identité fédérée Déléguez l’authentification à un fournisseur d’identité externe. Sécurité
Opérateur de contrôle Protégez les applications et services à l’aide d’une instance d’hôte dédiée qui agit comme un intermédiaire entre les clients et l’application ou le service, valide et assainit les requêtes, et transmet les requêtes et les données entre eux. Sécurité
Agrégation de passerelle Utilisez une passerelle pour agréger plusieurs requêtes individuelles dans une requête unique. Conception et implémentation,
Excellence opérationnelle
Déchargement de passerelle Déchargez des fonctionnalités de service partagé ou spécialisé sur un proxy de passerelle. Conception et implémentation,
Excellence opérationnelle
Routage de passerelle Acheminez les requêtes vers plusieurs services à l’aide d’un seul point de terminaison. Conception et implémentation,
Excellence opérationnelle
Geodes Déployez des services back-end dans un ensemble de nœuds géographiques, chacun pouvant traiter une demande client dans n’importe quelle région. Fiabilité,
Excellence opérationnelle
Surveillance de point de terminaison d’intégrité Implémentez des contrôles fonctionnels dans une application à laquelle des outils externes peuvent accéder par le biais de points de terminaison exposés à intervalles réguliers. Fiabilité,
Excellence opérationnelle
Table d’index Créez des index sur les champs des magasins de données qui sont souvent référencés par les requêtes. Gestion des données,
Efficacité des performances
Élection du responsable Coordonnez les actions effectuées par un ensemble d’instances de tâche de collaboration dans une application distribuée en élisant l’instance responsable qui sera chargée de gérer les autres instances. Conception et implémentation,
Fiabilité
Vue matérialisée Générez des vues préremplies sur les données d’un ou de plusieurs magasins de données lorsque les données ne sont pas adéquatement formatées pour les opérations de requête requises. Gestion des données,
Excellence opérationnelle,
Efficacité des performances
Canaux et filtres Divisez une tâche qui exécute un traitement complexe en une série d’éléments séparés qui peuvent être réutilisés. Conception et implémentation,
Messagerie
File d’attente de priorité Classez par ordre de priorité les requêtes envoyées aux services, de telle sorte que les demandes ayant une priorité plus élevée soient reçues et traitées plus rapidement que celles de moindre priorité. Messagerie,
Efficacité des performances
Serveur de publication/abonné Activez une application pour annoncer des événements à plusieurs consommateurs intéressés de manière asynchrone, sans coupler les expéditeurs aux destinataires. Messagerie
Nivellement de la charge basé sur une file d’attente Utilisez une file d’attente qui agit comme mémoire tampon entre une tâche et un service qu’elle appelle, afin d’atténuer les surcharges intermittentes. Fiabilité,
Messagerie,
Résilience,
Efficacité des performances
Modèle de limite de débit Un modèle de limitation vous aide à éviter ou à réduire les erreurs liées à ces seuils de limitation, et à prédire le débit de manière plus précise. Fiabilité
Nouvelle tentative Permettez à une application de gérer les défaillances temporaires anticipées quand elle tente de se connecter à un service ou à une ressource réseau en réessayant d’exécuter en toute transparence une opération qui a échoué précédemment. Fiabilité
Saga Gérez la cohérence des données entre les microservices dans des scénarios de transactions distribuées. Un saga est une séquence de transactions qui met à jour chaque service et publie un message ou un événement pour déclencher l’étape suivante de la transaction. Messagerie
Superviseur de l’agent du planificateur Coordonnez un ensemble d’actions sur un ensemble distribué de services et d’autres ressources à distance. Messagerie,
Fiabilité
Convoi séquentiel Traitez un ensemble de messages connexes dans un ordre défini, sans bloquer le traitement d’autres groupes de messages. Messagerie
Partitionnement Divisez un magasin de données en un ensemble de partitions horizontales ou de partitions de base de données. Gestion des données,
Efficacité des performances
Sidecar Déployez les composants d’une application sur un processus ou conteneur distinct pour fournir l’isolation et l’encapsulation. Conception et implémentation,
Excellence opérationnelle
Hébergement de contenu statique Déployez un contenu statique dans un service de stockage cloud qui peut distribuer ce contenu directement au client. Conception et implémentation,
Gestion des données,
Efficacité des performances
Figuier étrangleur Faites migrer un système hérité de façon incrémentielle en remplaçant progressivement des parties spécifiques des fonctionnalités par de nouveaux services et applications. Conception et implémentation,
Excellence opérationnelle
Limitation Contrôlez la consommation des ressources utilisées par une instance d’une application, un locataire ou un service entier. Fiabilité,
Efficacité des performances
Clé Valet Utilisez un jeton ou une clé qui fournissent aux clients un accès direct limité à une ressource ou à un service spécifique. Gestion des données,
Sécurité