Le Touilleur ExpressLe Touilleur ExpressLe Touilleur ExpressLe Touilleur Express
  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express

Quarkus : le meilleur outil pour construire des applications Java pour le Cloud en 2021 ?

    Home Dev Web Quarkus : le meilleur outil pour construire des applications Java pour le Cloud en 2021 ?

    Quarkus : le meilleur outil pour construire des applications Java pour le Cloud en 2021 ?

    Par Nicolas Martignole | Dev Web, Java, Web 2.0 | Commentaires fermés | 24 décembre, 2020 | 1 | 1 644 affichages
         

    Nous sommes en avril 2019, lors de la 8ème édition de la conférence Devoxx France. Emmanuel Bernard accompagné de Clément Escoffier, présente pour la première fois le projet « Quarkus« . Ils déroulent une présentation pendant 3 heures le projet et son utilisation. La vidéo est sur YouTube. Et le souvenir de cette présentation c’était « wooowww« . Ou plutôt comme dirait Emmanuel : « cool ». Quelle claque ! Spring Boot et consors n’ont qu’à bien se tenir.

    Nous sommes en 2020 et Quarkus est un outil pensé dès le départ pour construire des applications à déployer sur du Cloud computing. Nous parlerons du développement tout à l’heure, mais parlons d’abord de la mise en production de votre future application.

    Quarkus permet de compiler et d’exécuter votre application avec GraalVM. Cette phase de compilation assez longue va construire un binaire natif pour une plate-forme donnée. Il ne sera plus nécessaire d’installer une JVM. Ce binaire démarre en quelques secondes, et nécessitera beaucoup moins de mémoire pour l’exécution. Gain de ressources, gain de mémoire, et rapidité de démarrage de l’application.

    Pourquoi la vitesse de démarrage est-elle importante ? Au lieu d’attendre 20 à 30 secondes pour que votre application soit prête, celle-ci sera prête à répondre en 80ms. Imaginez que votre société passe le dimanche soir à la télévision : vous pouvez alors démarrer une centaine d’instance en quelques instants, et arrêter ensuite celles-ci lorsque la demande sera moins importante. Ce côté elastique est l’une des caractéristiques des architectures dites réactives.

    Le développement avec Quarkus est aussi une très bonne expérience. En mode développement, Quarkus compile et recharge à chaud votre application en quelques centièmes de seconde. Pas besoin d’arrêter et de relancer votre application, tout en bénéficiant de la JVM. Cela permet aussi « à la play framework » de remonter les erreurs directement dans la page du navigateur Web.

    Quarkus arrive sur les bases d’un écosystème mature et puissant. Vous n’entendrez pas forcément parler de Java EE ou de Jakarta EE, alors que ces frameworks sont omni-présents et s’utilisent avec plaisir, via Quarkus. Je dirai que Jakarta EE est un ensemble d’appareils de bricolage, et que Quarkus représente l’électricité qui anime l’ensemble de ces outils.

    En comparaison avec Play2, on gagne énormément en boucle de retour. Entre la fin de la saisie, le changement de fenêtre pour aller chercher votre navigateur et le rafraichissement : Quarkus a déjà swappé et attend votre visite tranquillement. Il est aussi à noter que ce système est possible grâce à Vert.X. Je vous encourage à écouter Julien Ponge et Thomas Segismont dans l’épisode 50 du Podcast Electro Monkeys.

    Quarkus permet d’intégrer rapidement tout un ensemble de solutions, pour construire une application Web, un service REST ou un micro-service. Vous pouvez vous faire une idée rapide en visitant https://code.quarkus.io/. Quelques clics de souris et votre projet sera prêt, sera configuré et n’attendra plus que vous pour avancer.

    Quel est l’intérêt de démarrer TRÈS rapidement ?

    En dehors du plaisir de ne pas attendre, cela va nous permettre de tester différemment votre application. En effet, puisqu’elle démarre en 100ms, vous allez être en mesure de tester « réellement » votre application avec, par exemple, une base de données démarée via Docker.

    Quarkus rend les tests d’intégration ultra-rapide, et donc, plus facile à écrire. En fait, je ne vois pas comment nous faisions avant. Ah si… avec des Mocks. Ici pas de mock.

    Ajoutez Flyway avec une base PostgreSQL gérée via Docker par exemple, et vous aurez de quoi tester facilement votre application de bout en bout.

    Quarkus est super-sonique. Son temps de démarrage est presque instantané. Et c’est encore mieux avec la version native, où vous lancerez un binaire, qui se connectera sur votre base, pourra créer le schéma, et monter des données. Le tout en 80ms comme montré par Emmanuel durant sa présentation à Devoxx Belgique.

    Pourquoi Quarkus démarre rapidement ?

    Quarkus démarre rapidement, car une partie du travail habituel de Java est déporté de l’exécution vers la compilation. Les frameworks en général doivent lire de la configuration, résoudre des Proxy Java, parcourir le classpath (surtout en raison des annotations), résoudre des dépendances, faire de l’injection, utiliser la réflexion pour introspecter les classes… Tout ceci coûte du temps au démarrage de l’application. Dans l’idée de cibler le Cloud, Quarkus va donc tisser les liens et s’attaquer à regrouper et à brancher une grosse partie de votre application.

    Quarkus is a framework to start other frameworks at build time.

    Emmanuel Bernard, 6th november 2019, Devoxx Belgium

    Ce travail n’est fait qu’une seule fois : lors de la compilation. Que votre petit service soit ensuite démarré une fois ou 1000 fois : le gain est définitif. Moins de temps de démarrage mais aussi moins de mémoire nécessaire au démarrage. Bye bye le parser XML pour regarder le fichier persistence.xml par exemple…

    Cela demande donc un travail important du côté de Quarkus, qui doit analyser ce que font en général les frameworks, pour les accélérer. On peut dire que Quarkus est un accélérateur de particules (wooo celle-là elle est de moi)

    Crédit photo : https://www.pexels.com/photo/blue-and-purple-cosmic-sky-956999/ et Devoxx Belgium 2019

    La conclusion est intéressante. En allant vers plus de simplicité, et en supprimant le code inutile : nous obtenons un gain de productivité immédiat. Les tonnes de framework Java attendaient une nouvelle vision, c’est ce que Quarkus va vous offrir.

    Mes 2 projets 2020 autour de Quarkus

    L’année 2020 pour ma part a été marquée par 2 projets. Tout d’abord TimeKeeper, un projet open-source destiné à la saisie des heures d’activité des collaborateurs, et ensuite la relecture du livre d’Antonio Goncalves « Understanding Quarkus ». J’ai participé avec d’autres personnes à la lecture/correction du livre.

    Le fascicule « Understanding Quarkus » est un livre téléchargeable gratuitement sur le site Red Hat Developer. Il présente le fonctionnement de Quarkus, son utilisation et de nombreux frameworks intégrés avec Quarkus. Antonio a une superbe expérience Java EE, et cela permet de comprendre justement l’intégration fine des différentes technologies Java.

    Le fascicule présente GraalVM, l’intégration avec MicroProfile, la configuration, l’injection de dépendances, JPA, JTA, Panache ORM, l’observabilité, l’utilisation de Mutiny pour la programmation réactive, etc.

    Le livre est très complet, et vous serez à même de construire un micro-service ou une application REST en l’ayant sous le coude.

    Si vous souhaitez regarder un « vrai » projet, les équipes de Lunatech ont codé le projet Time Keeper pendant le premier confinement. Vous y trouverez une application Quarkus composée d’un frontend basé sur React, et d’un backend au dessus d’une base PostgreSQL. La sécurisation est assurée par Keycloak. Ce projet est open-source, le repository Github original est ici et une copie se trouve aussi sur ma page Github.

    Conclusion

    En alternative à la pile logicielle de Spring, Quarkus est un plaisir à utiliser. Le mode natif est la cerise sur le gâteau, à activer dans votre intégration continue, pour utiliser moins de ressources.

    Sans révolutionner le monde Java, nous avons une solution mature, puissante et facile à apprendre. Vous (re)découvrirez certainement l’ecosystème Java grâce à Quarkus. Micro-profile par exemple gagne à être connu. On oublie aussi que JPA est une brique très puissante et simple à utiliser.

    L’histoire semble nous dire que le monde Java a d’abord connu Java J2EE il y a quelques années. Puis Spring framework est arrivé, et a tout balayé sur son passage. On peut tout faire avec Spring. Et si Java EE ensuite a tenté un retour, cela reste plus timide. Les gens sont accrochés au cou de Spring à juste titre. Et bien au risque de me tromper, je pense que Quarkus va rebalancer les équilibres des forces dans le monde Java. De SpringSource vers RedHat, sachant qu’Oracle est inexistant dans le monde Java en 2020. IBM (propriétaire de RedHat) reste en gardien dans l’ombre.

    Pour une DSI c’est un choix très intéressant, lorsque son S.I se tourne vers le Cloud. Si vous avez déjà acté l’utilisation de Kubernetes entre autre, Quarkus est la suite logique. Il ne faudra pas oublier trop vite aussi Micronaut, une autre alternative à Quarkus dans le monde de la JVM.

    Sur ce, je vous prépare un article sur le retour du « server-side » en réponse à cette tendance du tout JS (ReactJS, AngularJS, VueJS, PouetJS, etc).

    A plus tard…

    Articles similaires:

    Default ThumbnailOutil d'optimisation mémoire Default ThumbnailBordeaux JUG, Cloud Foundry, Cloud Bees et eXpress-Board Default ThumbnailEt si le Cloud n'était qu'un nuage ? Default ThumbnailDocker, un outil simple et génial
    quarkus, web

    Chercher

    Derniers articles

    • Premier mois chez Doctolib
    • GitHub Actions : le tueur de Jenkins ?
    • Comment recréer du lien social dans l’Entreprise avec des outils numériques en 2021
    • FizzBuzz en Java et Scala (surtout Scala)
    • Scala Kata – 01

    Commentaires récents

    • Frédéric Camblor dans Comment recréer du lien social dans l’Entreprise avec des outils numériques en 2021
    • b dans FizzBuzz en Java et Scala (surtout Scala)
    • Fabien Lamarque dans Scala Kata – 01
    • Cédric Clavier dans Podcast à (re)découvrir
    • Cédric Clavier dans Podcast à (re)découvrir

    Les plus lus

    • Les revenus d’un informaticien indépendant en EURL - 85 657 affichage(s)
    • Changer la batterie d’un MacBook Pro de 2011 - 61 521 affichage(s)
    • Optional en Java 8 - 52 766 affichage(s)
    • Quelle est la différence entre volatile et synchronized ? - 50 678 affichage(s)
    • Un modèle de Product Backlog et de Sprint Backlog avec Excel - 49 228 affichage(s)
    • Redis, découverte d’un moteur clé-valeur simple et puissant - 46 644 affichage(s)
    • Comment simuler le navigateur de l'iphone avec Firefox ou Safari ? - 41 722 affichage(s)
    • serialVersionUID mythes et légendes - 36 409 affichage(s)
    • Faut-il gérer une équipe de développeurs ? - 34 776 affichage(s)
    • Développeur après 31 ans ? Ridé et chauve tu seras - 34 192 affichage(s)

    Mots clés

    agile ajax Apple architecture barcamp BarCampJavaParis ddd devoxx esb exo flex geek google grails groovy humeur humour independant iphone Java javascript jazoon jboss jboss seam jsf jug Linux mac mule parisjug paris jug pjug play playframework portlet recrutement ria Scala scrum spring Startup usi usi2010 web xebia

    Recent Posts

    • Doctolib developer

      Premier mois chez Doctolib

      Je vous propose de partager mon bilan après un mois chez Doctolib,

      11 avril, 2021
    • GitHub Actions : le tueur de Jenkins ?

      Avouez-le : ce titre de blog est super racoleur. J’avais aussi pensé

      15 février, 2021
    • Comment recréer du lien social dans l’Entreprise avec des outils numériques en 2021

      Nous sommes en février 2021 pendant le 3ème confinement lié à la

      10 février, 2021

    Recent Tweets

    • RT  @axellelemaire : ☑️Se faire réveiller par une matinale sur les vertus de l’#opendata et #opensource, qui ont permis de créer  @covidtracke …

      8 hours ago
    •  @Keruspe  🍿🍿🍿😎

      23 hours ago
    • RT  @fcamblor : Mercredi je parlais d'une webapp avec du lit-element/vitejs qui partirait en prod en moins de 48h ... https://t.co/cFJIwV7og…

      24 hours ago
    •  @fcamblor  Bravo Fred 👍🏻

      24 hours ago
    •  @jylls35   @ponceto91  Le 6128

      1 day ago

    Mots clés

    agile (18) ajax (11) Apple (11) architecture (6) barcamp (5) BarCampJavaParis (5) ddd (5) devoxx (33) esb (6) exo (6) flex (9) geek (5) google (11) grails (5) groovy (10) humeur (12) humour (7) independant (6) iphone (12) Java (77) javascript (7) jazoon (28) jboss (22) jboss seam (12) jsf (9) jug (16) Linux (11) mac (6) mule (5) parisjug (7) paris jug (22) pjug (6) play (8) playframework (6) portlet (5) recrutement (6) ria (8) Scala (21) scrum (44) spring (23) Startup (11) usi (21) usi2010 (9) web (16) xebia (7)

    Le Touilleur Express

    Contactez-moi : nicolas@touilleur-express.fr

    Suivez-moi sur Twitter : @nmartignole

    Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
    • A propos de l’auteur
    • A propos du Touilleur Express
    Le Touilleur Express