JHipster avec une architecture de microservice
1. introduction
Dans cet article, nous allons explorer un exemple intéressant avecJHipster - la construction d'une architecture de microservices simple. Nous allons montrer comment créer et déployer toutes les pièces requises, et à la fin, nous aurons une application de microservice complète et opérationnelle.
Si vous êtes nouveau sur JHipster, veuillez vérifierour introductory article avant de continuer pour avoir une bonne compréhension des bases de cet outil de génération de projet.
2. Monolithique vs Microservice
Dans notre article initial, nous avons illustré la création et l’amorçage d’une application monolithique relativement facile à gérer.
Notre système de microservice, quant à lui, séparera le serveur principal du serveur principal, lequel peut également être divisé en plusieurs petites applications, chacune traitant un sous-ensemble du domaine complet des applications. Naturellement, comme avec toutes les implémentations de microservices, cela résout certains problèmes, mais introduit également une certaine complexité, telle que la gestion du registre de composants et de la sécurité.
JHipster se chargera de la plupart des difficultés de gestion des applications de microservices, à l’aide d’outils open-source modernes comme lesEureka Server de Netflix et lesConsul de Hashicorp.
Il y a bien sûr quelques éléments à prendre en compte ici, tels que la taille ou la complexité de notre domaine, l'importance de notre application et les niveaux de disponibilité souhaités, allons-nous héberger nos services sur différents serveurs et emplacements , etc. Le but de ces outils est bien sûr que ces permutations soient possibles et faciles à gérer.
2.1. Composants JHipster Microservice
Lorsque nous travaillons sur une architecture Microservice avec JHipster, nous devrons créer et déployer au moins trois projets différents: un registre JHipster, une Microservice Gateway et au moins une application Microservice.
The JHipster Registry est un élément essentiel de l'architecture des microservices. Il relie tous les autres composants et leur permet de communiquer les uns avec les autres.
The Microservice Application contient le code back-end. Une fois en cours d'exécution, il exposera l'API du domaine qui le concerne. Une architecture de microservices peut être composée de nombreuses applications de microservices, chacune contenant quelques entités et règles de gestion connexes.
And the Microservice Gateway a tout le code frontal (Angular) et consommera l'API créée par l'ensemble du groupe d'applications de micro-service:
3. Installation
Pour tous les détails sur le processus d'installation, consultez nosintroductory article on JHipster.
4. Création d'un projet de microservice
Maintenant, installons les trois composants principaux de notre projet de microservice.
4.1. Installation du registre JHipster
Comme le registre JHipster est un JHipster standard, il suffit donc de le télécharger et de l'exécuter. Il n'est pas nécessaire de le modifier:
git clone https://github.com/jhipster/jhipster-registry
cd jhipster-registry && ./mvnw
Cela clonera le projetjhipster-registry à partir de GitHub et démarrera l'application. Une fois le démarrage réussi, nous pouvons visiterhttp://localhost:8761/ et nous connecter avec l'utilisateuradmin et le mot de passeadmin:
4.2. Installation d'une application de microservice
Voici où nous commençons à construire les caractéristiques réelles de notre projet. Dans cet exemple, nous allons créer une application microservice simple qui gère les voitures. Nous allons donc d'abord créer l'application, puis nous y ajouterons une entité:
# create a directory for the app and cd to it
mkdir car-app && cd car-app
# run the jhipster wizard
yo jhipster
Une fois l'assistant démarré, suivons les instructions pour créer une application de type Microservice nomméecarapp. Quelques autres paramètres pertinents sont:
-
port: 8081
-
paquet:com.car.app
-
authentification: JWT
-
découverte de service: registre JHipster
La capture d'écran ci-dessous montre l'ensemble complet des options:
Nous allons maintenant ajouter une entitécar à notre application:
# runs entity creation wizard
yo jhipster:entity car
L'assistant de création d'entité va démarrer. Nous devons suivre les instructions pour créer une entité nomméecar avec trois champs:make,model etprice.
Une fois cela terminé, notre première application Microservice est terminée. Si nous jetons un œil au code généré, nous remarquerons qu'il n'y a pas de javascript, HTML, CSS ou tout code frontal. Celles-ci seront toutes produites une fois la passerelle Microservice créée. Consultez également le fichier README pour des informations importantes sur le projet et des commandes utiles.
Pour terminer, exécutons notre nouveau composant:
./mvnw
Avant d'exécuter la commande ci-dessus, nous devons nous assurer que le composantjhipster-registry est opérationnel. Sinon, nous obtiendrons une erreur.
Si tout se passait comme prévu, noscar-app commenceraient et le journal dejhipster-registry nous indiquera que l'application a été enregistrée avec succès:
Registered instance CARAPP/carapp:746e7525dffa737747dcdcee55ab43f8
with status UP (replication=true)
4.3. Installation d'une passerelle de microservice
Maintenant, le bit frontal. Nous allons créer une passerelle de microservice et lui indiquer que nous avons une entité sur un composant existant pour lequel nous voulons créer le code frontal:
# Create a directory for our gateway app
mkdir gateway-app && cd gateway-app
# Runs the JHipster wizard
yo jhipster
Suivez les instructions pour créer une application de type passerelle Microservice. Nous nommerons l'applicationgateway et sélectionnerons les options suivantes pour les autres paramètres:
-
port: 8080
-
paquet:com.gateway
-
authentification: JWT
-
découverte de service: registre JHipster
Voici un résumé du jeu complet de paramètres:
Passons à la création d'entités:
# Runs entity creation wizard
yo jhipster:entity car
Lorsqu'on vous demande si nous voulons générer à partir d'un microservice existant, choisissezYes, puis tapez le chemin relatif vers le répertoire racine decar-app (ex .: ../car-app). Enfin, lorsqu'on vous demande si nous voulons mettre à jour l'entité, choisissezYes, regenerate the entity.
JHipster trouvera le fichierCar.json qui fait partie de l'application Microservice existante que nous avons créée précédemment et utilisera les métadonnées contenues dans ce fichier pour créer tout le code d'interface utilisateur nécessaire pour cette entité:
Found the .jhipster/Car.json configuration file, entity can be automatically generated!
Il est temps d'exécuter lesgateway-app et de tester si tout fonctionne:
# Starts up the gateway-app component
./mvnw
Passons maintenant àhttp://localhost:8080/ et connectons-nous avec l'utilisateuradmin et le mot de passeadmin. Dans le menu supérieur, nous devrions voir un élémentCar qui nous mènera à la page de la liste des voitures. Tout bon!
4.4. Création d'une deuxième application de microservice
Ensuite, poussons notre système un peu plus loin etcreate a second component of type Microservice Application. Ce nouveau composant gérera les concessionnaires automobiles, nous y ajouterons donc une entité appeléedealer.
Créons un nouveau répertoire, accédez-y et exécutez la commandeyo jhipster:
mkdir dealer-app && cd dealer-app
yo jhipster
Après cela, nous taponsdealerapp comme nom de l'application et choisissons le port8082 pour qu'il s'exécute (il est essentiel que ce soit un port différent de ceux que nous utilisons pour lejhipster-registry etcar-app).
Pour les autres paramètres, nous pouvons choisir n’importe quelle option. N'oubliez pas qu'il s'agit d'un microservice distinct afin qu'il puisse utiliser différents types de base de données, stratégie de cache et tests que le composantcar-app.
Ajoutons quelques champs à notre entitédealer. Par exemplename etaddress:
# Runs the create entity wizard
yo jhipster:entity dealer
Nous ne devons pas oublier de naviguer versgateway-app et de lui dire de générer le code frontal pour l’entitédealer:
# Navigate to the gateway-app root directory
cd ../gateway-app
# Runs the create entity wizard
yo jhipster:entity dealer
Enfin, exécutez./mvnw sur le répertoire racine dedealer-app pour démarrer ce composant.
Ensuite, nous pouvons visiter notre application de passerelle àhttp://localhost:8080 et actualiser la page pour voir l'élément de menu nouvellement créé pour l'entité Dealer.
Avant de terminer, examinons à nouveau l’applicationjhipster-registry àhttp://localhost:8761/. Cliquez sur l'élément de menu Applications pour vérifier que tous nos trois composants ont été correctement identifiés et enregistrés: C'est tout! Nous avons créé une architecture sophistiquée composée d'une application Gateway avec tout le code frontal soutenu par deux microservices en quelques minutes seulement.
5. Conclusion
Démarrer un projet d’architecture de microservice avec JHipster est assez facile; nous n'avons besoin que de créer autant d'applications Microservice que nécessaire et une passerelle Microservice et nous sommes prêts à commencer.
Vous pouvez explorer le cadre plus loin auxofficial JHipster website.
Comme toujours, la base de code pour notre application de voiture, notre application de concessionnaire et notre application de passerelle sont disponiblesover on GitHub.