Dernière modification : Dec 08 , 2024

Construction et Déploiement d'Applications Quarkus

Introduction à Quarkus

Qu'est-ce que Quarkus ?

Quarkus est un framework Java conçu pour les environnements natifs du cloud et les architectures de microservices. Il vise à fournir un temps de démarrage rapide et une utilisation réduite de la mémoire.

Qu'est-ce que Quarkus ?

Avantages de Quarkus

  • Temps de démarrage ultra-rapide
  • Faible consommation de mémoire
  • Optimisé pour les conteneurs
  • Support natif de GraalVM pour les exécutions natives
  • Large écosystème d'extensions

Méthodes de Construction d'une Application Quarkus

Initialisation du Projet

Il existe plusieurs façons de démarrer un projet Quarkus :

Utilisation du Site de Démarrage

  1. Rendez-vous sur start.quarkus.io.
  2. Configurez votre projet (nom du groupe, nom de l'artifact, etc.).
  3. Sélectionnez les extensions nécessaires (par exemple, RESTEasy, Hibernate, etc.).
  4. Téléchargez le projet généré et décompressez-le.

Qu'est-ce que Quarkus ?

Quarkus Initializer

Utilisation de l'outil CLI

mvn io.quarkus:quarkus-maven-plugin:2.0.0.Final:create \
    -DprojectGroupId=com.example \
    -DprojectArtifactId=my-quarkus-app \
    -DclassName="com.example.GreetingResource" \
    -Dpath="/hello"

Utilisation de Quarkus Dev Mode

Le mode développement de Quarkus permet de démarrer un serveur avec rechargement à chaud :

cd my-quarkus-app
./mvnw compile quarkus:dev

Structure d'un Projet Quarkus

  • src/main/java : Contient le code source de l'application.
  • src/main/resources : Contient les fichiers de configuration et autres ressources.
  • src/test : Contient les tests unitaires et d'intégration.

Configuration

La configuration de Quarkus est généralement définie dans application.properties ou application.yml situé dans src/main/resources.

quarkus.http.port=8080
quarkus.datasource.db-kind=h2
quarkus.datasource.username=sa
quarkus.datasource.password=sa
quarkus.datasource.jdbc.url=jdbc:h2:mem:test

Types de Déploiement d'une Application Quarkus

Déploiement JVM

Le déploiement JVM est le mode par défaut pour les applications Quarkus.

Construction de l'Application

./mvnw package

Le fichier JAR généré se trouve dans target/.

Exécution de l'Application

java -jar target/my-quarkus-app-1.0.0-SNAPSHOT-runner.jar

Déploiement Natif

Le déploiement natif compile l'application en un binaire natif en utilisant GraalVM.

Installation de GraalVM

Suivez les instructions sur le site de GraalVM pour installer GraalVM et le package native-image.

Construction du Binaire Natif

./mvnw package -Pnative

Le binaire natif se trouve dans target/.

Exécution du Binaire Natif

./target/my-quarkus-app-1.0.0-SNAPSHOT-runner

Hébergement d'une Application Quarkus sur AWS

Utilisation d'Elastic Beanstalk

Elastic Beanstalk facilite le déploiement et la gestion des applications dans le cloud AWS.

Prérequis

  • AWS CLI installé et configuré
  • Application Quarkus packagée

Déploiement

  1. Initialisez un environnement Elastic Beanstalk :
    eb init -p java-11 quarkus-app --region us-west-2
    
  2. Déployez l'application :
    eb create quarkus-env
    eb deploy
    

Utilisation d'AWS Lambda avec Quarkus

Quarkus peut être déployé sur AWS Lambda pour des applications serverless.

Extension AWS Lambda

Ajoutez l'extension Lambda au projet :

./mvnw quarkus:add-extension -Dextensions="amazon-lambda"

Déploiement

  1. Construisez l'application en mode natif :
    ./mvnw package -Pnative -Dnative-image.docker-build=true
    
  2. Créez un package ZIP pour Lambda :
    zip function.zip target/function.zip
    
  3. Déployez sur Lambda :
    aws lambda create-function --function-name quarkus-function \
        --handler io.quarkus.amazon.lambda.runtime.QuarkusStreamHandler::handleRequest \
        --runtime provided.al2 --zip-file fileb://function.zip \
        --role arn:aws:iam::ACCOUNT_ID:role/execution_role
    

Hébergement d'une Application Quarkus sur GCP

Utilisation de Google Kubernetes Engine (GKE)

GKE permet de déployer des conteneurs Docker sur des clusters Kubernetes gérés.

Prérequis

  • gcloud CLI installé et configuré
  • Docker installé

Construction et Déploiement

  1. Construisez l'image Docker :
    ./mvnw package -Dquarkus.container-image.build=true
    
  2. Poussez l'image vers Google Container Registry :
    docker tag my-quarkus-app gcr.io/PROJECT_ID/my-quarkus-app
    docker push gcr.io/PROJECT_ID/my-quarkus-app
    
  3. Déployez l'application sur GKE :
    kubectl create deployment quarkus-app --image=gcr.io/PROJECT_ID/my-quarkus-app
    kubectl expose deployment quarkus-app --type=LoadBalancer --port 80 --target-port 8080
    

Utilisation de Google Cloud Run

Google Cloud Run permet de déployer des conteneurs sans gérer l'infrastructure.

Prérequis

  • gcloud CLI installé et configuré

Construction et Déploiement

  1. Construisez et poussez l'image Docker (comme pour GKE).
  2. Déployez l'application sur Cloud Run :
    gcloud run deploy quarkus-app --image=gcr.io/PROJECT_ID/my-quarkus-app --platform managed
    

Construction et Déploiement d'Applications Quarkus

Created by Sylvain Leroy