placidenduwayo 68b87635f6 Mettre à jour 'README.md' | hace 2 años | |
---|---|---|
address-microservice | hace 2 años | |
application-deployment | hace 2 años | |
company-microservice | hace 2 años | |
eureka-discovery-server | hace 2 años | |
project-microservice | hace 2 años | |
spring-cloud-gateway-service | hace 2 años | |
user-microservice | hace 2 años | |
README-COPY.md | hace 2 años | |
README.md | hace 2 años |
Nous mettons en place une application orientée microservices avec Spring MVC et Spring Cloud OpenFeign. Simulation d’un scénario de gestion de projets.
L’application est consistituée de deux types microservices:
Les répertoires des microservices métiers:
Les répertoires des microservices qui font fonctionner les microservices métiers:
Le répertoire de déploiement contenant un fichier docker-compose pour créer et agencer les images dockers des tous ces microservices:
Chaque microservice métier possède ses propres ressources:
La figure présente le diagramme de classe de l’application.
Les microservices communiquent entre eux pour le fonctionnement de l’applications.
Pour faire communiquer les microservices, nous utilisons le pattern Spring Cloud OpenFeign. L’architechure d’enregistrement et de découverte des microservice de l’application backend peut se présenter ainsi: architecture
Spring Cloud OpenFeign présente plusieurs avantages:
Avec RestTemplate, un microservice qui a besoin d’appeler un autre microservice doit écrire en dur l’url de ce dernier dans son code source. <> Spring Cloud OpenFeign fournit l’autoconfiguration des microservices. Les microservices métiers s’enregistrent dans un service d’annuaire, un client qui a besoin de consommer un microservice métier donne le nom de ce dernier à la gateway qui le cherche à sa place. ==> le client n’a pas besoin de connâitre l’adresse complète du microservice qu’il veut consommer.
RestTemplate met en question l’évolutivité de l’application. En effet, RestTemplate se base sur une classe dans laquelle on écrit en dur l’url complète du microservice que l’autre microservice veut appeler. Ainsi, s’il arrive que le microservice change d’url, on est obligé de modifier le code source de la classe dans l’autre microservice qui utilise le premier microservice. <> Spring Cloud OpenFeign assure l’évolutivité de l’application grâce à l’autoconfiguration des microservices métiers. En effet, OpenFeign est basé sur une interface qu’il marque comme un service. Spring Cloud OpenFein avec le server d’enregistrement, permet aux microservices de s’autoenregistrer.
1) Créer un répertoire que l’on nomme à son choix, projet-microservices par exemple.
2) Cloner le git suivant de l’application dans ce répertoire:
git clone
: https://gitea.natan.fr/placidenduwayo/projects-management-microservices-backend.gitLes microservices métiers, les microservices intermédiaires et application-deployment (le répertoire pour déployer l’application) sont téléchargés dans ce répertoire projet-microservices.
Il faut avoir les application Docker et Docker-compose installées sur la machine. Docker pour créer les images docker des microservices et docker-compose pour agencer et lancer en une seule ligne de commandes les images de toute l’application.
Pour en savoir sur docker et docker-compose, voir les liens et docker-compose
3) Dans le terminal:
docker-compose build
:
docker-compose build
builde les sources de chaque microserviceAprès le build de l’application backend:
docker-compose up
. Cette ligne de commande va lancer toutes les images agencées dans le fichier docker-composeLes services eureka-discovery-server et spring-cloud-gateway-service sont de simples applications.
Ce service joue le rôle de serveur d’annuaire des microservices. eureka-discovery-server est lancé en premier. Lorsqu’ils sont lancés, les microservices métiers et le service gateway s’enregistrent dans le serveur d’annuaire. Ils s’enregistrent par leur nom configuré dans leur fichier de configuration application.properties.
Le lien suivant présente la documentation de ce service d’annuaire eureka service registration.
Le côté frontend est une application Angular (Angular 13). Le repository de cette application frontend peut être trouvé sur le lien suivant: frontend
Pour communiquer avec la partie backend, dans le fichier environment.ts
d’Angular nous y configurons l’adresse du service gateway avec les noms des microservices pour la backend:
export const environment = {
ADDRESSES_SERVER:"http://localhost:8181/ADDRESS-MICROSERVICE",
USERS_SERVER:"http://localhost:8181/USER-MICROSERVICE",
COMPANIES_SERVER:"http://localhost:8181/COMPANY-MICROSERVICE",
PROJECTS_SERVER:"http://localhost:8181/PROJECT-MICROSERVICE"
};
git clone
https://gitea.natan.fr/placidenduwayo/projects-management-microservices-backend.gitLancer l’application backend en suivant la procédure décrite au sous titre 1.4 Déploiement des microservices.
cloner la partie frontend: git clone
https://gitea.natan.fr/placidenduwayo/projects-management-microservices-frontend.git
Suivre la procédure telle que détaillée dans le README du repository
Aller sur http://localhost:4200
Powered by TurnKey Linux.