Présentation de l’application de référence eShopOnContainers

Conseil

Ce contenu est un extrait du livre électronique, Cloud Native .NET apps for Azure (Architecture d’applications .NET natives cloud pour Azure), disponible dans la documentation .NET ou au format PDF à télécharger gratuitement pour le lire hors connexion.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Microsoft, en partenariat avec des experts reconnus de la communauté, a produit une application de référence de microservices natifs cloud complète, eShopOnContainers. Cette application de présentation à l’aide de .NET et Docker, et éventuellement Azure, Kubernetes et Visual Studio, permet de créer une vitrine en ligne.

eShopOnContainers Sample App Screenshot.

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 à café. Si vous avez déjà effectué un achat en ligne auparavant, 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 du catalogue
  • Filtrer les articles par type
  • Filtrer les articles par marque
  • Ajouter des articles au panier d’achat
  • Modifier ou supprimer des articles dans le panier
  • Checkout
  • Inscrire un compte
  • Se connecter
  • Se déconnecter
  • Consulter les commandes

L’application présente également les exigences non fonctionnelles suivantes :

  • Elle doit être hautement disponible et mise à l’échelle automatiquement pour prendre en charge un trafic accru (et effectuer un scale-down une fois que le trafic diminue).
  • Elle doit fournir une surveillance facile à utiliser de son intégrité et de ses journaux de diagnostic pour vous aider à résoudre les problèmes rencontrés.
  • Elle doit prendre en charge un processus de développement agile, incluant la prise en charge de l’intégration continue et de la livraison continue (CI/CD).
  • Outre les deux serveurs frontaux web (application traditionnelle et monopage), l’application doit également prendre en charge les applications clientes mobiles exécutant différents types de systèmes d’exploitation.
  • Elle doit prendre en charge l’hébergement multiplateforme et le développement multiplateforme.

eShopOnContainers reference application development architecture.

Figure 2-2. Architecture de développement de l’application de référence eShopOnContainers.

L’application eShopOnContainers est accessible à partir de clients web ou mobiles qui accèdent à l’application via HTTPS en ciblant l’application serveur MVC ASP.NET Core ou une passerelle d’API appropriée. Les passerelles d’API offrent plusieurs avantages, tels que le découplage des services back-end des clients frontaux individuels et la mise en place d’une sécurité renforcée. L’application utilise également un modèle associé appelé Backends-for-Frontends (BFF), qui recommande de créer des passerelles d’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 ses exigences individuelles. 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 pilotés par le domaine pour gérer la complexité de l’entreprise.

Different kinds of microservices

Figure 2-3. Différents types de microservices.

Vue d’ensemble du code

Étant donné qu’elle utilise des microservices, l’application eShopOnContainers inclut plusieurs projets et solutions distincts dans son référentiel GitHub. Outre les solutions distinctes et les 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 au sein de laquelle les différents projets sont organisés.

Projects in Visual Studio solution.

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.

Compréhension 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 la façon de concevoir des applications basées sur des microservices, lisez le livre complémentaire Microservices .NET : architecture pour les applications .NET en conteneurs.