Backend serverless de gestion du budget. Les microservices Quarkus exposent une API REST JSON et sont déployes sous forme de fonctions AWS Lambda natives.
| Module | Version |
|---|---|
| IHM | |
| Services |
- Quarkus 3.37.1 / Java 21
- Mutiny (guide): A reactive programming framework for Java.
- MongoDB with Panache (guide): Simplify your persistence code for MongoDB via the active record or the repository pattern
- RESTEasy JAX-RS (guide): REST endpoint framework implementing JAX-RS and more
- Micrometer metrics (guide): Instrument the runtime and your application with dimensional metrics using Micrometer.
Projet Maven multi-modules :
| Module | Description | Port dev |
|---|---|---|
communs |
Bibliothèque partagée (modèles, sécurité, exceptions) | – |
parametrages |
Paramètres système → /parametres/v2/ |
8091 |
utilisateurs |
Auth / profils utilisateur → /utilisateurs/v2/ |
8092 |
comptes |
Comptes bancaires → /comptes/v2/ |
8093 |
operations |
Budgets et opérations → /budgets/v2/ |
8094 |
- Java 25 (Mandrel 25 pour le build natif)
- Apache Maven 3.9+
- MongoDB accessible (local sur
localhost:27017ou Atlas) - (Optionnel) VS Code avec les extensions Extension Pack for Java et Quarkus
# Un seul microservice
mvn quarkus:dev -f parametrages/pom.xml
# Ou depuis le répertoire du module
cd parametrages && mvn quarkus:devLa Dev UI est disponible sur http://localhost:8091/q/dev.
Les tâches sont définies dans .vscode/tasks.json.
- Créez un fichier
.envà la racine du projet (ignoré par git) avec les variables d'environnement :
QUARKUS_MONGODB_CONNECTION_STRING=mongodb+srv://<login>:<mdp>@<cluster>.mongodb.net/
QUARKUS_MONGODB_DATABASE=<database>- Lancez via Terminal → Run Task :
| Tâche | Description |
|---|---|
Quarkus Dev - ALL |
Lance les 4 microservices en parallèle |
Quarkus Dev - parametrages |
Démarre uniquement parametrages |
Quarkus Dev - comptes |
Démarre uniquement comptes |
Quarkus Dev - operations |
Démarre uniquement operations |
Quarkus Dev - utilisateurs |
Démarre uniquement utilisateurs |
- Démarrer le microservice en mode debug :
mvn quarkus:dev -Ddebug -f parametrages/pom.xml- Dans VS Code, créer
.vscode/launch.jsonet attacher le débogueur sur le port 5005 :
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug Quarkus (attach)",
"request": "attach",
"hostName": "localhost",
"port": 5005
}
]
}# Construire tous les modules (mode JVM)
mvn clean package
# Construire un seul module
mvn clean package -f comptes/pom.xml
# Construire l'exécutable natif Linux pour Lambda (nécessite GraalVM/Mandrel)
mvn clean package -Pnative -Dquarkus.native.container-build=true# Tous les tests
mvn clean test
# Tests d'un seul module
mvn clean test -f operations/pom.xml
# Une classe de test spécifique
mvn clean test -Dtest=ComptesServiceTest
# Une méthode de test spécifique
mvn clean test -Dtest=ComptesServiceTest#testGetComptesmvn verify -PsonarLes microservices sont déployés sur AWS Lambda (256 Mo, natif GraalVM) via SAM. Les templates sont dans communs/src/aws-deploy/. Le paramétrage (URL base, secrets OIDC, niveaux de log...) passe par des Parameters SAM injectés au déploiement via --parameter-overrides (voir docs/ARCHITECTURE.md), plus de placeholders texte remplacés par sed.
# Déploiement (depuis communs/src/aws-deploy/)
sam deploy --config-file samconfig.template.toml --parameter-overrides \
Env=QUA Version=<version> DatabaseUrl=<url> DatabaseName=<db> \
AppConfigUrlIhm=<url> AppConfigUrlBackends=<url> \
OidcJwtIdAppUserContent=<id> QuarkusLogLevel=INFO MongodbLogLevel=INFOVoir le Wiki – Opérations sur AWS pour le détail complet.