Les microservices
Introduction
Nous allons voir quelques éléments importants vis-à-vis de la conception des microservices avec Spring. Ce chapitre illustre comment créer des architectures microservices dans un environnement clusterisé et/ou conteneurisé standard. Le contenu de ce chapitre n’est pas adapté pour une utilisation de Kubernetes qui fournit déjà nativement l’orchestration des conteneurs.
L’architecture des microservices est un style d’architecture logicielle où une applicationcomplexe est décomposée en plusieurs services autonomes et indépendants. Ces services interagissent pour fournir les fonctionnalités globales de l’application. Lorsque plusieurs services fonctionnent ensemble, il est essentiel qu’ils puissent se découvrir et communiquer les uns avec les autres de manière transparente et efficace.
1. Découverte de service avec Spring Cloud Netflix Eureka
a. Usage
Spring Cloud Netflix Eureka est une solution de découverte de services. Dans une architecture de microservices, les applications sont typiquement décomposées en plusieurs services plus petits et indépendants, chacun exécutant une fonction spécifique. Eureka sert de point central où ces services peuvent s’enregistrer et annoncer leur présence, rendant ainsi possible leur découverte et leur utilisation par d’autres services.
b. Fonctionnement
Lorsqu’un service démarre, il s’enregistre auprès du serveur Eureka, fournissant des détails tels que son adresse IP et son port. Cela permet au service d’être « découvert » par d’autres composants de l’application. Lorsqu’un service a besoin de communiquer avec un autre, il demande au serveur Eureka les informations de connexion du service requis. Eureka répond avec les détails des instances disponibles, permettant au service demandeur d’établir une communication.
c. Utilité
Les services sont découplés les uns des autres, n’ayant pas besoin de connaître les adresses spécifiques des services avec lesquels ils interagissent. Cela simplifie considérablement la configuration et augmente la flexibilité de l’infrastructure.
Eureka peut travailler avec d’autres...
Exemple d’utilisation
L’exemple est conçu pour fonctionner en autonomie pour les tests et dans des conteneurs docker pour la production.
Diagramme :
Notre architecture est composée de trois microservices autonomes.
Chacun de ces services s’inscrit auprès d’un système de découverte de services, extrait ses configurations nécessaires d’un service de configuration centralisé et communique efficacement avec les autres services. L’ensemble de ce réseau de services est stratégiquement masqué derrière une passerelle API unique. Pour la surveillance et le traçage des performances, ces microservices transmettent leurs données de suivi à Zipkin, en utilisant les capacités de Micrometer.
Pour ce qui est de la gestion des dépendances dans cette configuration, nous utilisons la version la plus récente de Spring Cloud, qui est actuellement la 2023.0.0. Dans ce contexte, il est impératif d’incorporer cette version de spring-cloud-dependencies en tant que Bill of Materials (BOM), assurant ainsi une gestion efficace et cohérente des dépendances au sein de notre projet.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2023.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1. Fichiers de configuration
Afin de mettre en œuvre la fonctionnalité Spring Cloud Config dans une application, il est nécessaire en premier lieu d’ajouter spring-cloud-config-server aux dépendances du projet. C’est le point de départ pour activer cette capacité au sein de l’application.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
Pour...
Conclusion
Malgré de grands changements et beaucoup de projets qui ne sont plus suivis par Spring Cloud, il reste possible d’utiliser les facilités offertes par Spring pour créer des applications microservices.
Points clés
Points à retenir :
-
Kubernetes prend en charge l’ordonnancement des conteneurs.
-
Spring Cloud Netflix Eureka est une solution de découverte de services.
-
Spring Cloud OpenFeign est un outil conçu pour simplifier la communication entre les microservices dans une architecture distribuée.
-
Spring Cloud Config offre une solution élégante pour la gestion centralisée et distribuée des configurations.
-
Spring Cloud Gateway est conçu pour fournir une porte d’entrée unifiée vers les microservices.
-
Zipkin est un système de traçage distribué qui recueille et stocke les traces collectées par Micrometer et OpenTelemetry.