Académique Documents
Professionnel Documents
Culture Documents
ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
Filière :
« Génie du Logiciel et des Systèmes Informatiques Distribués »
GLSID
L'énoncé:
1. Etablir une architecture technique du projet:
Le système se compose de :
• Un microservice backend qui permet de gérer
• Un microservice backend pour valider
• Une application frontend basée sur Angular
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
2. Diagramme de classe
- En jaune les entites de microservice : Customer-Service
- En vert les entites de microservice : Inventory-Service
- En mauve les entites de microservice : Order-Service
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
Lancement du AxonServer
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
Gateway
Tout d'abord, Gateway API est un reverse proxy amélioré avec des fonctionnalités
plus avancées, y compris l'orchestration et la sécurité et le monitoring.
Dans ce cas, je vais utiliser Spring Cloud Gateway.
C'est une API non bloquante.
- Un thread est toujours disponible pour traiter requête entrante.
- Ces requêtes sont ensuite traitées de manière asynchrone en arrière -plan et
une fois complétées, la réponse est renvoyée.
- Ainsi, aucune requête entrante n'est jamais bloquée lors de l'utilisation de
Spring Cloud Gateway sauf si les ressources CPU et mémoires sont
saturées.
- Les dépendances
• Gateway : Fournit un moyen simple mais efficace d'acheminer vers les API et de
leur fournir des préoccupations transversales telles que la sécurité, la surveillance/les
métriques et la résilience.
• Spring Boot Actuator :Prend en charge les points de terminaison intégrés (ou
personnalisés) qui vous permettent de surveiller et de gérer votre application, tels que la
santé de l'application, les métriques, les sessions, etc.
• Eureka Discovery Client :un service basé sur REST pour localiser des services à
des fins d'équilibrage de charge et de basculement de serveurs de niveau intermédiaire.
Route:
Destination vers laquelle nous voulons qu'une requête particulière soit acheminée. Une
route comprend :
➔ L'URI de destination,
➔ Predicate : Une condition qui doit satisfaire
➔ Filters : Un ou plusieurs filtres qui peuvent intervenir pour apporter des traitement et
des modifications des requêtes et des réponses HTTP
Dans ce projet j'ai pas utiliser le routage statique mais cela se fait dynamiquement avec
Eureka discovery
- L'exécution
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
- Les dépendances
• Eureka Server : spring-cloudnetflix Eureka Server.
Cela nous permet d'utiliser l'annotation
@EnableEurekaServer
- L'exécution
Voici la navigation
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
KETCLOAK
Keylock est un outil permettant de centraliser l’infrastructure de sécurité des
applications :
• Gestion des identités
• Authentification
• Autorisations
Console administration
Les clients sont des entités pouvant demander à Keycloak d’authentifier un utilisateur (
comme des applications )
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
Donc je vais modifier le mot de passe d'utilisateur car je l'ai mis comme étant un mot de
passe temporaire.
• Access token : un token pouvant être fourni dans le cadre d’une requête HTTP
autorisant l’accès au service invoqué.
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
Dans chaque client j'ai activé Client authentication qui donne la possibilite de selectionner
Service account rôles
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
L’onglet Credentials
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
Les dépendances
Properties
Ecole Normale Supérieure de l’Enseignement ﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ ﻸﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ المحمدية ﺍ
Technique Mohammedia
Université Hassan II de Casablanca
ENSET ﺟﺎﻣﻌﺔ ﺍﻟﺤﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ
● L'installation
docker –v
- La signification
FROM extraire openjdk du référentiel Docker.
ADD copiera le build jar du dossier cible vers le dossier racine du Docker.
EXPOSE exposera le port 8761.
ENTRYPOINT exécutera la commande donnée.
● La configuration MySQL
Nous allons maintenant créer et exécuter une image de la base de données MySQL.
Depuis mon terminal, j'ai exécuté la commande ci-dessous. Ici, -d dans cette commande
indique que la commande Docker s'exécutera en mode détaché.
Pour chaque microservice je vais créer son propre image de base de données
Microservice 1 Customer-service
Microservice 2 Inventory-service
Espérons que l'image MySQL est extraite et exécutée en tant que conteneur. Pour
vérifier cela, nous pouvons faire run. Nous pouvons vérifier cela en utilisant la commande
docker container ls. Nous pouvons maintenant vérifier en nous connectant à MySQL
(mysql-docker est le nom de la balise que nous avons donné lors de la création) Nous avons
maintenant la base de données créée à l'intérieur du docker mysql
Vous pouvez importer le sql en suivant la commande
POST
{
"username":"hajarzarguan0610"
}
File