Quarkus : Red Hat veut faciliter le passage des développeurs Java à l'ère du cloud natif
En mars dernier, Red Hat présentait Quarkus, un framework open source pour le développement en Java de microservices containerisés sur Kubernetes et OpenShift. Il vise à accélérer leur déploiement en exploitant les capacités de GraalVM et Hotspot, les outils de machine virtuelle de l’OpenJDK. Il est disponible en version 1.0 depuis le mois de novembre.
Quarkus, c’est une stack open source sous licence Apache 2.0 pour déployer des applications Java cloud natives à l’aide de microservices dans des containers. Son principal avantage selon ses créateurs ? Accélérer les déploiements dans les environnements Kubernetes et Function as a Service. Pour cela, elle utilise les librairies et les standards via APIs comme Eclipse Vert.x, RESTEasy (JAX-RS), SmallRye, Hibernate, ou encore Apache Camel.
Selon Emmanuel Bernard, ingénieur chez Red Hat et co-fondateur de Quarkus, le framework règle en premier lieu des problématiques de densité mémoire. « Par rapport à d’autres technologies comme Go [un langage de programmation soutenu par Google N.D.L.R.], il a un retard à l’allumage. [...] De plus, Java est consommateur en mémoire », explique-t-il.
Ce retard est dû à la nécessité d’utiliser un compilateur qui conserve des informations et des statistiques sur le code en mémoire, mais qui isole l’application du système d’exploitation.
Pour pallier les désavantages du langage dans des environnements containerisés, Quarkus adopte une compilation Ahead of Time (AOT). « Comme une application Go, nous allons entièrement la compiler au moment du build, cela prend moins d’espace mémoire. C’est un changement de paradigme de l’écosystème Java », assure Emmanuel Bernard.
Accélérer le déploiement des microservices écrits en Java dans Kubernetes
Concrètement, la technologie réduit la taille des Java Virtual Machines (JVM), ce qui permet d’en exécuter davantage. Sur le site Web dédié au projet, les porteurs de celui-ci assurent que le temps de démarrage des microservices s’en retrouve largement accéléré par rapport à un environnement Cloud Native traditionnel. Dans certains cas, celui-ci passe sous la barre de la seconde. Afin d’obtenir ce résultat, seul les classes nécessaires d’une application sont appelées au moment de l’exécution. Par ailleurs, cette technologie évite au maximum l’utilisation de la réflexion, c’est-à-dire l’inspection de la structure des objets. Cette fonction est habituellement très utilisée dans le développement en Java.
Les ingénieurs de Red Hat proposent avec Quarkus un modèle de programmation unifié, impératif et réactif. Toutefois, le second s’impose dans le cadre de déploiement de microservices. « Dans la plupart des cas, il faut que le système soit résilient, parce que les entreprises adoptent des architectures orientées événements, par exemple pour des cas d’usage Big Data et IoT. La programmation réactive est alors intéressante », estime Emmanuel Bernard.
Par ailleurs, les personnes à l’origine du projet veulent faciliter le travail des développeurs. Quarkus embarque une fonctionnalité pour coder, puis voir l’application du code en quelques millisecondes après modification. « Cela raccourcit énormément le temps de développement. Derrière, quand la personne rafraîchit son navigateur, nous détectons les fichiers modifiés et les compilés, puis Quarkus s’arrête et redémarre en moins de 100 millisecondes », déclare l’ingénieur de chez Red Hat.
« Un virage technologique pour Java » selon le co-fondateur de Quarkus
Il s’agit « d’accompagner le développeur du moment où il code l’application jusqu’à son déploiement » dans Kubernetes ou OpenShift.
Après 30 mises à jour en 36 semaines (une tous les 9 jours environ), la version 1.0 de Quarkus est disponible depuis le 6 novembre 2019. Depuis mars, le projet a bénéficié de plus de 180 contributions. Le responsable du projet estime « qu’il y a un énorme engouement pour ce virage technologique de Java ».
Celui-ci est principalement dû à l’importance de la communauté qui connaît ce langage et les environnements associés.
Par exemple, Vodafone Grèce a remplacé Spring Boot, un autre framework de démarrage de microservices, par Quarkus pour 15 microservices basés sur des JVM interfacés à MongoDB, dont 5 sont en production depuis septembre 2019. À noter que le framework est compatible avec MySQL, MariaDB, IBM DB2, ou encore SQL Server.
« La grande force des environnements Java réside dans le nombre de développeurs formés. À ceux-là, certains éditeurs leur disent de changer de technologies pour s’adapter aux microservices et aux containers. Le coût de migration pour les entreprises est loin d’être viable. Les humains ne veulent pas tout réapprendre. Si nous arrivons à ramener Java sur le devant de la scène et à le rendre critique dans le nouvel environnement cloud natif, nous répondons aux besoins de beaucoup de gens », affirme Emmanuel Bernard.
Les responsables prévoient d’améliorer l’expérience de bout en bout. Quarkus bénéficiera d’un framework pour écrire des applications lignes de commande (CLI), ainsi que d’un moteur de templating (utilisé pour les documents générés par les applications : mails, pages web, etc.) compatible avec la compilation AOT et les temps de démarrage optimisés. Par ailleurs, ils veulent faciliter le développement et déploiement de fonctions sur les différents FaaS du marché, tel qu’AWS Lambda ou Azure Functions.
Une version distribuée bientôt proposée par Red Hat
Quarkus est également utilisé dans des produits middleware Red Hat et dans certains services. « C’est assez antinomique pour Red Hat, mais Quarkus a été pensé en interne, voire en secret au début. Le plus tôt possible, nous l’avons ouvert en interne, puis à la communauté. Les projets open source sont assez compétitifs, nous voulions montrer la voie avec une solution robuste et en essayant de trouver l’équilibre pour laisser la place à la contribution », s’explique l’ingénieur de Red Hat, co-fondateur du projet.
L’entreprise rachetée par IBM souhaite par la suite fournir une version stable et prise en charge du framework open source, dotée « d’un cycle défini et d’un support 24/7 » au sein de Red Hat Runtimes. « Cela veut dire que les clients Red Hat Runtimes n'auront pas à payer de souscriptions supplémentaires pour migrer des applications de piles traditionnelles (Thorntail, JBoss EAP, Spring Boot, etc.) vers Quarkus », déclare Emmanuel Bernard. Cette version avec support est prévue pour la première moitié de 2020. Pour l’instant, c’est le seul éditeur ayant prévu de distribuer la solution.