VT2020-Helidon-Fiche

=Helidon= Helidon est framework micro-service développé par Oracle en open source, on peut le trouver sous Helidon.io sur Google. Ainsi Helidon une est collection de bibliothèques Java pour la création d'applications basées sur des microservices.



Abstract
Helidon is a collection of Java libraries for writing microservices that run on a fast web core powered by Netty. Its available in two frameworks: Helidon SE (Standard Edition) and Helidon MP (MicroProfile).

Application monolithique VS microservices


Une application monolithique est une application qui est développée en un seul bloc(war, jar...), avec une même technologie et déployée dans un serveur d'application. Cette architecture pose de nombreux problème :
 * Elle centralisation tous les besoins fonctionnels. Si une fonctionnalité plante l'ensemble de l'application plante.
 * Elle est réalisé dans une seule technologie(moins de fléxibilité).
 * Difficile à maintenir. En effet, à chaque modification il faut tester les régressions et redéployer toute l'application.
 * Difficile à faire évoluer.
 * Livraison en bloc (longue attente du client).

C'est pour pallier à tous ces problèmes qu'à partir de 2016 les architectures microservices ont vu le jour.

Les microservices sont une approche d'architecture et de développement d'une application composées de petits services. L'idée est de découper un grand problème en petites unités implémentée sous forme de microservices, où chaque service est responsable d'une fonctionnalité. Ainsi, en prenant en considération que chaque microservice est développé, testé et déployé séparément des autres, les micro services présentent de nombreux avantages :
 * Fléxibilité, on peut développer chaque micro service dans une technologies différente des autres et utilisé les points forts de chaque technologie (Java, C++, Python....).
 * Faible couplage entre les micro service communication à travers une API REST
 * Indépendances relatives entre les différentes équipent d'un même grand projet. Chaque équipe travaille indépendamment des autres.
 * Facile à tester et déployé du fait de la petite taille des micro service
 * Livraison continue, les clients reçoit les premières versions rapidement.
 * Elle s'apprête bien aux méthodes agiles.

Architecture globale
Le framework Helidon a été conçu pour être simple, rapide et léger. Il est unique parce qu’il est le seul framework microservices à développer parallèlement deux versions :


 * Une version Helidon SE qui est un microframework


 * Une version Helidon MP qui est un framework



Helidon SE vs Helidon MP
Helidon SE (standard édition) est un microframework microservice, c'est-à-dire une forme simple est minimaliste d'un framework. Il s'agit d'une petite API de style fonctionnel, réactive, simple et transparente dans laquelle un serveur d'applications n'est pas nécessaire. Il comporte trois composants de base requis pour créer un microservice :


 * un compsant serveur Web
 * une composant de configuration
 * une composant de sécurité

Helidon MP (MicroProfile) est une forme plus complète que Helidon SE, on parle d'un framework de microservices. Cette version de Helidon supporte MicroProfile 3.0. MicroProfile est une spécification, un socle de base standard pour aider les développeurs JEE dans le développement des MicroService. Cette forme est intéressante car elle apporte des composants Jakarta EE (Entreprise edition). Elle permet au développeur d’avoir une productivité plus importante, notamment avec un développement avec des annotations et des principes comme l'injection des dépendances. On va trouver alors retrouver des normes de JEE comme JPA et les Web services Rest Full. Cela va permettre d’avoir une plus grande productivité.



Naissance de Helison
Helidon a été crée dans le contexte du gain de popularité des architectures et des solutions microservices. Ainsi Helidon se distingue de Java EE par le fait que c’est un framework entièrement construit pour les microservices, contrairement à Java EE qui existait avant les microservices et qui contient du code non spécifiquement dédié au microservices. L’idée c’est en fait une nouvelle technologies, les micro-services implique un nouveau framework spécialement dédié à cette technologie. C'est ainsi qu'en février 2019 la version 1.0 de Helidon voit le jour.

Evolution de Helidon


De plus il est à noté que depuis la version 2.0.0, helidon ne supporte plus Java 8, en effet la version minimal a supporté est Java 11.

Helidon aujourd'hui
Il est à noter que Helidon est un framework très récent et en constante évolution. En effet, en l'espace d'une année Helidon est passé de la version 1.0.0 à la version 2.1.0, la dernière version de Helidon à ce jour.

Déploiement d'une application
Lorsque l’application microservices a est crée, Helidon nous permet de la déployée de différentes manières :


 * Sous format Jar, on la démarre alors avec java -jar.
 * Soit on la démarre avec une image Docker.
 * Elle nous permet d'utiliser une optimisation Jlink. Qui est une JVM light qui offre un temps de démarrage plus rapide.
 * Elle nous permet également d'utiliser la machine virtuelle très rapide GrallVM qui offre une faible consommation de mémoire.

Démarrer avec Helidon SE
Il est très facile de démarrer avec Helidon SE il suffit de lancer l'archetype suivant avec maven :

mvn -U archetype:generate -DinteractiveMode=false \ -DarchetypeGroupId=io.helidon.archetypes \ -DarchetypeArtifactId=helidon-quickstart-se \ -DarchetypeVersion=2.1.0 \ -DgroupId=io.helidon.examples \ -DartifactId=helidon-quickstart-se \ -Dpackage=io.helidon.examples.quickstart.se

Le résultat est alors un projet simple qui montre les bases de la configuration du serveur Web et de l'implémentation des règles de routage de base.

Il faut ensuite entrer dans le dossier helidon-quickstart-se et construire l'application avec maven, Helidon va alors lancer en interne un Netty web serveur très rapide et léger :

cd helidon-quickstart-se mvn package

On se retrouve avec un Jar que l'on peut démarrer rapidement avec la commande suivante :

java -jar target/helidon-quickstart-se.jar

Finalement on se retrouve avec un service une api qui dit Hello World en mettant un nom en paramètre. Si on appelle le service avec la requette suivante :

curl -X GET http://localhost:8080/greet/Joe

Le service retourne le message suivant : {"message":"Hello Joe!"}

Démarrer avec Helidon MP
Il est très facile de démarrer avec Helidon MP il suffit de lancer l'archetype suivant avec maven :

mvn -U archetype:generate -DinteractiveMode=false \ -DarchetypeGroupId=io.helidon.archetypes \ -DarchetypeArtifactId=helidon-quickstart-mp \ -DarchetypeVersion=2.1.0 \ -DgroupId=io.helidon.examples \ -DartifactId=helidon-quickstart-mp \ -Dpackage=io.helidon.examples.quickstart.mp

Le résultat est alors un projet simple qui montre les bases de la configuration du serveur Web et de l'implémentation des règles de routage de base.

Il faut ensuite entrer dans le dossier helidon-quickstart-mp et construire l'application avec maven, Helidon va alors lancer en interne un Netty web serveur très rapide et léger :

cd helidon-quickstart-mp mvn package

On se retrouve avec un Jar que l'on peut démarrer rapidement avec la commande suivante :

java -jar target/cd helidon-quickstart-mp.jar

Finalement on se retrouve avec un service une api qui dit Hello World en mettant un nom en paramètre. Si on appelle le service avec la requette suivante :

curl -X GET http://localhost:8080/greet/Joe

Le service retourne le message suivant : {"message":"Hello Joe!"}

Démonstration
Vous trouverez une explication et une démonstration du fonctionnement de Helidon SE ici.