-
Notifications
You must be signed in to change notification settings - Fork 0
Conception globale
Les diagrammes C4 sont mutualisés avec le wiki IHM et constituent la référence visuelle commune frontend/backend.


Chaque microservice applique le même modèle en couches :
api/ → Contrôleurs JAX-RS (REST), enums d'URL, surcharges sécurité/exceptions
business/ → Logique métier (@ApplicationScoped), interfaces de ports, modèles de domaine
spi/ → Adaptateurs base de données (MongoDB Panache), clients REST inter-µServices
config/ → Configuration Quarkus (OpenAPI, hints de réflexion GraalVM)
utils/ → Classes utilitaires métier
Les ressources REST injectent uniquement l'interface du port métier (IXxxAppProvider). Le service métier injecte uniquement l'interface du port de données (IXxxRepository). Aucun couplage direct entre les couches.
Bibliothèque partagée par tous les microservices, publiée sur GitHub Packages :
| Package | Rôle |
|---|---|
api/AbstractAPIResource |
Base des ressources REST – endpoint /info
|
api/AbstractAPIInterceptors |
Intercepteurs de logging des requêtes/réponses |
api/security/AbstractAPISecurityFilter |
Validation du JWT (issuer Google, signature JWKS) |
utils/security/JWTUtils, SecurityUtils
|
Parsing JWT, sanitisation des inputs |
utils/exceptions/ |
Exceptions typées : DataNotFoundException, UserNotAuthorizedException, BudgetNotFoundException, CompteClosedException, BadParametersException
|
data/trace/BusinessTraceContext |
Contexte de trace MDC (effacé après chaque réponse) |
aws-deploy/ |
Templates SAM et configuration API Gateway |
Reactive (Mutiny) – Toutes les méthodes de service et d'accès aux données retournent Uni<T> (valeur unique) ou Multi<T> (flux). Ne jamais bloquer avec .await().indefinitely() hors des tests.
Injection CDI – Uniquement @Inject et @ApplicationScoped. Pas d'annotations Spring.
Sécurité – Chaque µService surcharge AbstractAPISecurityFilter et déclare @RolesAllowed avec des constantes issues de son propre *APIEnum. Le rôle USER_OPERATIONS est défini dans OperationsAPIEnum.OPERATIONS_ROLE, etc.
Appels inter-µServices – Le µService operations appelle comptes et parametrages via des interfaces SPI (IComptesServiceProvider, IParametragesServiceProvider) implémentées par des clients REST MicroProfile.
gestion-budget-serverless/
├── pom.xml ← parent (packaging: pom), Quarkus BOM 3.37.1, Java 25 (Mandrel 25 natif — [ADR-003](https://github.com/vzwingma/gestion-budget-serverless/blob/master/docs/adr/003-upgrade-java25-mandrel25.md))
├── communs/ ← bibliothèque commune → publiée sur GitHub Packages
├── parametrages/ ← µService /parametres/v2/
├── utilisateurs/ ← µService /utilisateurs/v2/
├── comptes/ ← µService /comptes/v2/
└── operations/ ← µService /budgets/v2/ et /budgets/v2/admin/
communs doit être buildé et publié en premier ; les autres modules en dépendent. C'est l'ordre reflété dans le CI (job build-communs → jobs build-quarkus-*).
by Zed Corp