Skip to content

Repository files navigation

Micro-services Budget

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 GitHub version
Services GitHub version

Statut

Build Status Build Status GitHub issues

Known Vulnerabilities Dépendences

Sonar Build Status Sonar Build Status Sonar Build Status Sonar Build Status

Frameworks utilisés

  • 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.

Structure du projet

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

Prérequis

  • Java 25 (Mandrel 25 pour le build natif)
  • Apache Maven 3.9+
  • MongoDB accessible (local sur localhost:27017 ou Atlas)
  • (Optionnel) VS Code avec les extensions Extension Pack for Java et Quarkus

Démarrage en mode développement

Via le terminal

# Un seul microservice
mvn quarkus:dev -f parametrages/pom.xml

# Ou depuis le répertoire du module
cd parametrages && mvn quarkus:dev

La Dev UI est disponible sur http://localhost:8091/q/dev.

Via VS Code (tâches préconfigurées)

Les tâches sont définies dans .vscode/tasks.json.

  1. 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>
  1. 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ébogage avec breakpoints

  1. Démarrer le microservice en mode debug :
mvn quarkus:dev -Ddebug -f parametrages/pom.xml
  1. Dans VS Code, créer .vscode/launch.json et 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
    }
  ]
}

Build

# 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

Tests

# 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#testGetComptes

Analyse qualité (SonarCloud)

mvn verify -Psonar

Déploiement AWS

Les 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=INFO

Voir le Wiki – Opérations sur AWS pour le détail complet.


Documentation

About

Services serverless de l'application Gestion de budget

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages