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éesLa 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émentationUne 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. |
|
MessagerieLa 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é |