Chapitre Déploiement d'Applications Quarkus
Construction et déploiement d'une application Quarkus
Cette leçon présente les différentes méthodes de construction et de déploiement pour Quarkus.
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
- Rendez-vous sur start.quarkus.io.
- Configurez votre projet (nom du groupe, nom de l'artifact, etc.).
- Sélectionnez les extensions nécessaires (par exemple, RESTEasy, Hibernate, etc.).
- Téléchargez le projet généré et décompressez-le.
Qu'est-ce que Quarkus ?
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
/filters:no_upscale()/articles/native-java-quarkus/en/resources/1quarkus-application-startup-steps-1649245566060.jpg)
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
- Initialisez un environnement Elastic Beanstalk :
eb init -p java-11 quarkus-app --region us-west-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
- Construisez l'application en mode natif :
./mvnw package -Pnative -Dnative-image.docker-build=true
- Créez un package ZIP pour Lambda :
zip function.zip target/function.zip
- 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
- Construisez l'image Docker :
./mvnw package -Dquarkus.container-image.build=true
- 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
- 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
- Construisez et poussez l'image Docker (comme pour GKE).
- Déployez l'application sur Cloud Run :
gcloud run deploy quarkus-app --image=gcr.io/PROJECT_ID/my-quarkus-app --platform managed