JHipster avec une architecture de microservice

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:

image

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:

image

 

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:

image

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:

image

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!

image image

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:imageimage 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.