VT2020-Quarkus-Fiche

From air
Revision as of 12:58, 30 November 2020 by Killian.Pareilleux (talk | contribs)
Jump to navigation Jump to search

Introduction

Quarkus est un framework Java Kubernetes-native, qui a pour but de permettre la production d'applicaiton Java très peu couteuse, que ça soit en temps de démarrage, ou un espace mémoire, entre autre pour les applications tournant sur des containers

Abstract

Quarkus is a Java framework oriented on containerized applications. This framework wants to reduce memory cost and boot time for these applications, in order to create quick and efficient services, and in particular serverless microservices. The main specificity of Quarkus is the generation of native image of the applicaiton.

Objectifs

Mise en place en 2019 par RedHat, Quarkus est donc un framework récent, qui essaye de remettre au gout du jour Java. Le postulat de départ de ce framework est que Java reste encore aujourd'hui un des langages les plus utilisés au monde, et que l'adapter aux modes de développement actuelles, en particulier les applications serverless, est plus simple pour une entreprise que d'embaucher ou de former des developpeurs à des langages plus spécifiques et moins courants. Quarkus à donc pour but de régler les deux problemes principaux, qui freine l'utilisation de Java dans ces nouveux genre d'application :

  • un démarrage assez long
  • une utilisation importante de la mémoire.

Ces deux critères sont sources de couts lors de l'utilisation d'application serverless, et veulent absolument etre éviter.

Génération d'images natives

Génération d'un fichier executable natif

La principale solution apporter par Quarkus est la génération d'images natives. En compilant l'application en y ajoutant des métadonnées, Quarkus est capable de réduire drastiquement les couts de démarrages, en factorisant les objets très peu utilisé par exemple. De plus la création de fichier executable natifs, c'est à dire des fichiers binaires EFI Linux, permet de lancer le programme rapidement, sans avoir besoin de faire appel à une JVM, qui est elle aussi une source de surcout lors de l'execution. On peut ainsi écrire un programme en Java, executable sur n'importe quel support disposant d'une JVM, puis généré une image native utilisé dans un container comme docker, qui est simple à mettre en production grace a Kubernetes, et qui dispose de couts de lancement grandement réduit.

Framework simple d'utilisation

Bien conscient du vaste panel de gens utilisant Java, RedHat a voulu créer un framework avec une prise en main facile, en permettant entre autre aux developpeurs de garder leur habitudes lors de la création de projets. On peut ainsi utilisé soit gradle soit maven , deux outils très connu pour la construction automatisé, lors de l'élaboraiton d'un projet. L'arborescence générée pour quarkus sera la meme pour les deux outils, permettant une uniformisation des projets, et une plus grandes simplicités. Un autre outil fourni par Quarkus est le hot reload (ou live reload). Cet outil qui permetla mise à jour d'une applicaiton en train de tourner, sans avoir à recompiler l'intégralité du projet, avait presque disparu pour Java depuis l'arrivée de Spring Boot. Il est cependant de retour avec Quarkus, et meme s'il n'apporte pas un gain enorme en terme d'efficacité de travail, il constitue un réel ajout de confort de travail

Bibliographie

https://quarkus.io/ https://github.com/quarkusio/quarkus https://www.redhat.com/en/topics/cloud-native-apps/what-is-quarkus https://en.wikipedia.org/wiki/Quarkus

Veille Technologique 2020

  • Année : VT2020
  • Sujet : Quarkus
  • Slides : [ Slides]
  • Démonstration : [ Démonstration]
  • Auteurs : Killian Pareilleux