adb (parent Maven + proxy)
Rôle
adb/ est le projet parent du backend Java. Il fournit :
- Un POM parent qui centralise les versions de Spring Boot, Spring Cloud, des dépendances communes (MapStruct, Lombok, Apache POI, etc.), et des plugins Maven.
- Huit modules partagés consommés par tous les microservices :
adb-common,adb-model,adb-test,adb-actions,adb-action-logs,adb-descriptor,adb-messaging,adb-openapi,adb-communication. - Le reverse proxy Nginx (
proxy/) qui sert d'API gateway pour la plateforme.
Aucun service exécutable n'est défini ici : c'est exclusivement de la librairie partagée et de la configuration.
Stack
| Élément | Version |
|---|---|
| Java | 18 |
| Spring Boot | 3.1.3 |
| Spring Cloud | 2022.0.4 |
| Maven | 3.6+ |
| MapStruct | 1.5.5.Final |
| Lombok | 1.18.28 |
| Logstash Logback | 6.6 |
| SpringDoc OpenAPI | 2.2.0 |
| Apache POI | 5.2.3 |
| Commons Validator | 1.8.0 |
| Spring Cloud AWS | 3.0.4 |
Version actuelle du parent : 0.3.107-SNAPSHOT.
Architecture des modules
flowchart TB
parent[adb<br/>parent POM]
subgraph Modules
common[adb-common<br/>FQDN, RequestContext]
model[adb-model<br/>DTOs partagés]
test[adb-test<br/>helpers tests]
actions[adb-actions<br/>action processor]
actionlogs[adb-action-logs<br/>traçabilité]
descriptor[adb-descriptor<br/>métadonnées]
messaging[adb-messaging<br/>SQS/SNS abstractions]
openapi[adb-openapi<br/>specs + codegen]
communication[adb-communication<br/>WebClient helpers]
end
proxy[proxy<br/>Nginx]
parent --> Modules
parent --> proxy
Services[adb-persons<br/>adb-parts<br/>adb-contracts<br/>...]
common -.dependency.-> Services
model -.dependency.-> Services
messaging -.dependency.-> Services
actions -.dependency.-> Services
actionlogs -.dependency.-> Services
adb-common
Cœur du module : l'enum FQDN (fr.lifeconnect.adb.client.FQDN), annuaire de tous les services internes :
| Constante | URL |
|---|---|
PERSONS | http://adb-persons |
ORGANIZATIONS | http://adb-persons |
PARTS | http://adb-parts |
CONTRACTS | http://adb-contracts |
ACCOUNTING | http://adb-accounting |
FILES | http://adb-files |
UTILITIES | http://adb-utilities |
AGGREGATES | http://adb-aggregates |
VIEWS | http://adb-views |
REPORTS | http://adb-reports |
TICKETS | http://adb-tickets |
NOTES | http://adb-notes |
GRAPH | http://adb-graph |
NOTIFICATIONS | http://adb-notifications |
UI | http://adb-ui |
UI_EXT | http://adb-ui-ext |
Contient également : RequestContextData (propagation du contexte utilisateur), interfaces clients (NotesClient, TicketsClient …), utilitaires divers.
adb-model
DTOs partagés entre services pour éviter la duplication des structures de données métier.
adb-messaging
Abstractions au-dessus de Spring Cloud AWS pour publier (SnsTemplate) et consommer (@SqsListener) des événements. Configure les region, les serializers JSON, les DLQ.
adb-actions / adb-action-logs
adb-actions: framework pour déclencher et tracer des actions métier (modifications, validations).adb-action-logs: persistance des logs d'actions dans MongoDB (collection dédiée par service).
Utilisés par adb-persons, adb-parts, adb-contracts, adb-accounting, adb-utilities.
adb-openapi
Génère les specs OpenAPI à partir des annotations Spring (SpringDoc). Sert de source pour le client TypeScript de adb-web/packages/api-client.
adb-test, adb-descriptor, adb-communication
adb-test: helpers pour les tests d'intégration (TestContainers, fixtures Mongo).adb-descriptor: métadonnées de modules (version, dépendances).adb-communication: helpersWebClientréactifs (RestClientImpl, retry, error mapping).
proxy/ — Nginx gateway
Configuration Nginx (proxy/default.conf) qui route les requêtes externes vers les services internes :
| Path | Cible |
|---|---|
/persons/* | adb-persons |
/parts/* | adb-parts |
/contracts/* | adb-contracts |
/accounting/* | adb-accounting |
/files/* | adb-files |
/utilities/* | adb-utilities |
/aggregates/* | adb-aggregates |
/view/* | adb-views |
/reports/* | adb-reports |
/tickets/* | adb-tickets |
/notes/* | adb-tickets (redirige — adb-notes déprécié) |
Configuration & déploiement
- Build :
mvn clean install -pl adb-common,adb-model,adb-messaging,...oumvn installà la racine. - Versionnement : SNAPSHOT pendant développement, release via le script
adb/doc/release.md. - Déploiement du proxy : chart Helm
adb-charts/charts/ingress-route/et image Docker construite depuisproxy/Dockerfile.
Liens
- Code :
adb/ - POM parent :
adb/pom.xml - Enum FQDN :
adb/adb-common/src/main/java/fr/lifeconnect/adb/client/FQDN.java