"Créer facilement des microservices avec Eclipse MicroProfile" - Conférence Devoxx France

Contexte

J’ai eu le plaisir d’être sélectionné par le jury de Devoxx France pour animer une Université sur la création des microservices avec Eclipse Microprofile pour la deuxième année consécutive. Cette année est particulière car je suis seul pour animer cette université. C’est un bon défi pour moi.

devoxxfr 1

Voici le sujet

L’architecture des microservices apporte son lot d’avantages mais surtout des nouveaux challenges pour les équipes de développements.

Le monde Java n’est pas en reste, profitant des spécifications matures de Java EE / Jakarta EE (JAX-RS, CDI..), une communauté s’est construite en essayant d’apporter des éléments de réponses aux nouveaux défis : MicroProfile sous l’égide de la fondation Eclipse. Pour cela, une série de nouvelles spécifications ont été créés : Config, OpenAPI, Rest Client, HealthCheck, Propagation JWT, Fault Tolerance, Metrics.

Le déploiement est sous forme d’uberjar, c’est à dire sans installation de serveur d’applications au préalable. On démarre comme une simple application java.

La communauté aime la pluralité. Cela est aussi vraie pour Eclipse Microprofile avec plusieurs implémentations disponibles : thorntail, payara, helidon, tomee, open liberty et d’autres.

Au delà d’une introduction sur ce projet, nous allons aborder les différentes spécifications par l’exemple (c’est à dire du code). Nous verrons ainsi leurs intérêts et leurs utilisations.

De plus, la dernière version Eclipse Microprofile 2.0 s’aligne sur les spécifiations Java EE / Jakarta EE 8.

CFP de Devoxxfr : via cfp.devoxx.fr

devoxxfr 2


Vidéo de la présentation :

La conférence a été filmée et elle est disponible sur Internet via Youtube.fr


Support de présentation :

Le support de la présentation est disponible sur Speakerdeck.com

support microprofile devoxxfr

Dépôt GIT pour les exercices :

Les exemples sont disponibles sur un dépôt GIT via GitHub

Structure du dépôt

Les projets sont configurés avec l’outil Apache Maven. il existe un profile Maven pour chacune des implémentations Thorntail et OpenLiberty

Le pré-requis est la connaissance de JAX-RS. Pour cela, il y a deux projets d’introduction :

  • jaxrs : Projet Java utilisant uniquement JavaEE / JakartaEE, pour générer un war à déployer sur serveur d’application

  • mp-jaxrs : Même code que jaxrs mais avec une dépendance MicroProfile au lieu de JavaEE / JakartaEE

La dépôt contient aussi différents projets correspondant aux différentes spécifications :

  • mp-config : Pour manipuler la spécification MicroProfile Config

  • mp-fault-tolerance : Pour manipuler la spécification MicroProfile Fault Tolerance

  • mp-health : Pour manipuler la spécification MicroProfile Health Checks

  • mp-jwt : Pour manipuler la spécification MicroProfile JWT

  • mp-metrics : Pour manipuler la spécification MicroProfile Metrics

  • mp-openapi : Pour manipuler la spécification MicroProfile OpenAPI

  • mp-opentracing : Pour manipuler la spécification MicroProfile OpenTracing

  • mp-rest-client : Pour manipuler la spécification MicroProfile Rest Client

Chaque spécification a son projet afin d’étudier la spécification souhaitée sans aucun chemin. C’est à dire que je peux faire mp-jwt sans mp-health

Le projet microprofile-specs permet de définir deux profils avec les plugins Maven nécessaire aux implémentations. (Thorntail et Open Liberty)

Utilisation de branches

Les branches sont utilisées pour obtenir les différentes solutions. Par défaut, il faut commencer avec la branche mp-start afin de commencer l’exercice.

Pour avoir la solution, il suffit de choisir la branche correspondant ayant le nom spécification-finish. Par exemple, pour la branche solution pour la spécification mp-health est la branche mpHealth-finish.

Compilation et exécution pour Thorntail

mvn package -P thorntail-v2

Le plugin Thorntail est configuré pour créer un hollow-jar. L’exécution est faite par la commande suivante

<plugin>
    <groupId>io.thorntail</groupId>
	<artifactId>thorntail-maven-plugin</artifactId>
	<version>${version.thorntail}</version>
	<executions>
	    <execution>
		    <goals>
			    <goal>package</goal>
		    </goals>
	    	<configuration>
	        	<hollow>true</hollow><!--(1)-->
	        </configuration>
	    </execution>
	</executions>
</plugin>
  1. true pour construire un hollow jar, false pour fat-jar

java -jar nom-projet-thorntail.jar mon-projet.war

Compilation et exécution pour OpenLiberty

mvn package -P liberty

Le plugin OpenLiberty est configuré pour créer un fat-jar. L’exécution est faite par la commande suivante :

java -jar nom-projet.jar