Notes
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.
Conseil / Astuce
Ce contenu est un extrait de l’eBook, Architecting Cloud Native .NET Applications pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.
Microsoft, en partenariat avec des experts de la communauté de premier plan, a produit une application de référence de microservices natives cloud complète, eShopOnContainers. Cette application est conçue pour démontrer l'utilisation de .NET et Docker, ainsi que, de manière optionnelle, Azure, Kubernetes et Visual Studio, afin de créer une vitrine en ligne.
Figure 2-1. Capture d’écran de l’exemple d’application eShopOnContainers.
Avant de commencer ce chapitre, nous vous recommandons de télécharger l’application de référence eShopOnContainers. Si vous le faites, il doit être plus facile de suivre les informations présentées.
Fonctionnalités et exigences
Commençons par passer en revue les fonctionnalités et les exigences de l’application. L’application eShopOnContainers représente un magasin en ligne qui vend différents produits physiques tels que des t-shirts et des tasses de café. Si vous avez acheté quelque chose en ligne avant, l’expérience d’utilisation du magasin doit être relativement familière. Voici quelques-unes des fonctionnalités de base que le magasin implémente :
- Répertorier les éléments de catalogue
- Filtrer les éléments par type
- Filtrer les éléments par marque
- Ajouter des articles au panier d’achat
- Modifier ou supprimer des éléments du panier
- Caisse
- Inscrire un compte
- Connectez-vous
- Se déconnecter
- Passer en revue les commandes
L’application a également les exigences non fonctionnelles suivantes :
- Doit être hautement disponible et doit s'adapter automatiquement à un trafic accru (et inversement une fois que le trafic diminue).
- Il doit fournir une surveillance facile d'utilisation de ses journaux de santé et de diagnostic pour aider à résoudre les problèmes rencontrés.
- Il doit prendre en charge un processus de développement agile, y compris la prise en charge de l’intégration et du déploiement continus (CI/CD).
- Outre les deux interfaces web (traditionnelle et application à page unique), l’application doit également prendre en charge les applications mobiles clientes fonctionnant sur différents types de systèmes d’exploitation.
- Il doit prendre en charge l’hébergement multiplateforme et le développement multiplateforme.
Figure 2-2. eShopOnContainers référence l’architecture de développement d’applications.
L’application eShopOnContainers est accessible à partir de clients web ou mobiles qui accèdent à l’application via HTTPS ciblant l’application serveur ASP.NET Core MVC ou une passerelle API appropriée. Les passerelles d’API offrent plusieurs avantages, tels que le découplage des services back-end de clients frontaux individuels et la meilleure sécurité. L’application utilise également un modèle associé appelé Backends-for-Frontends (BFF), qui recommande de créer des passerelles API distinctes pour chaque client frontal. L’architecture de référence illustre la séparation des passerelles d’API selon que la requête provient d’un client web ou mobile.
La fonctionnalité de l’application est divisée en plusieurs microservices distincts. Il existe des services chargés de l’authentification et de l’identité, de répertorier les éléments du catalogue de produits, de gérer les paniers d’achat des utilisateurs et de passer des commandes. Chacun de ces services distincts a son propre stockage persistant. Il n’existe aucun magasin de données principal unique avec lequel tous les services interagissent. Au lieu de cela, la coordination et la communication entre les services sont effectuées selon les besoins et à l’aide d’un bus de messages.
Chacun des différents microservices est conçu différemment, en fonction de leurs besoins individuels. Cet aspect signifie que leur pile technologique peut différer, bien qu’elles soient toutes générées à l’aide de .NET et conçues pour le cloud. Les services plus simples fournissent un accès CRUD (Create-Read-Update-Delete) de base aux magasins de données sous-jacents, tandis que les services plus avancés utilisent des approches et des modèles de conception Domain-Driven pour gérer la complexité de l’entreprise.
Figure 2-3. Différents types de microservices.
Vue d’ensemble du code
Étant donné qu’elle utilise des microservices, l’application eShopOnContainers inclut quelques projets et solutions distincts dans son dépôt GitHub. En plus des solutions distinctes et des fichiers exécutables, les différents services sont conçus pour s’exécuter à l’intérieur de leurs propres conteneurs, à la fois pendant le développement local et au moment de l’exécution en production. La figure 2-4 montre la solution Visual Studio complète, dans laquelle les différents projets sont organisés.
Figure 2-4. Projets dans la solution Visual Studio.
Le code est organisé pour prendre en charge les différents microservices, et au sein de chaque microservice, le code est divisé en logique de domaine, problèmes d’infrastructure et interface utilisateur ou point de terminaison de service. Dans de nombreux cas, les dépendances de chaque service peuvent être satisfaites par les services Azure en production et par d’autres options pour le développement local. Examinons la façon dont les exigences de l’application sont mappées aux services Azure.
Présentation des microservices
Ce livre se concentre sur les applications natives cloud créées à l’aide de la technologie Azure. Pour en savoir plus sur les bonnes pratiques en matière de microservices et sur la façon d’concevoir des applications basées sur des microservices, lisez le livre complémentaire . NET Microservices : Architecture pour les applications .NET conteneurisées.