Modélisation
· Anatomie d'un service Quarkus
Anatomie d'un service Quarkus
Structure hexagonale d'un microservice type ·
télécharger le SVG
Architecture détaillée · bloc service métier
Anatomie type d'un service Quarkus · exemple : indemnisation (PR2) · patron reproduit par les quatre services et l'adaptateur ERP
Traefik (Ingress)
· route /pr2/**, jeton OIDC vérifié (Keycloak), quotas
Service indemnisation (PR2) · Quarkus
· un dépôt Git, une image, un déploiement
EXPOSITION
DOMAINE
PERSISTANCE
Ressources REST
RESTEasy Reactive · contrat OpenAPI publié
Sécurité
jeton OIDC, rôles, droits par dossier
Validation · mapping DTO
Bean Validation · MapStruct
Consommateur d'événements
idempotence par clé de dossier,
DLQ après épuisement des tentatives
Cas d'usage
orchestration, limites de transaction
Moteur de calcul d'indemnité
barèmes versionnés (CIMA) · exécution déterministe
journal de calcul conservé pour l'audit
bibliothèque pure, sans IO :
validée par les jeux de cas de la DJGS
Entités et invariants
état du dossier, transitions contrôlées
Machine à états · tâches
transitions en config versionnée,
corbeilles par rôle, échéances (60 j)
Génération documentaire
gabarits versionnés → PDF,
dépôt GED, demande de signature
Repositories Panache
lecture / écriture du modèle
Outbox
événement écrit en base,
même transaction que les données
Relai d'outbox
publie vers Kafka,
livraison au moins une fois
Liquibase (SQL formaté)
changesets SQL versionnés (ADR-0002)
Journal d'audit métier
transitions et consultations sensibles, immuable
Socle embarqué dans chaque service
config YAML par profil (dev · recette · prod) · sondes health / readiness (K8s) · OpenTelemetry : traces, métriques, logs JSON · erreurs Problem Details · retry, circuit breaker
« une requête, une transaction, un événement »
PostgreSQL dédié
schéma du service,
migré par Liquibase au démarrage
appels sortants · retry, circuit breaker
SharePoint (GED)
dépôt des pièces du dossier
Signature (PSC)
PV de transaction à signer
Règle d'or
les FAITS métier passent par Kafka
(découplage, rejeu) ; les requêtes de
lecture passent par REST via les ports
(RULES §3.3, jamais adapter à adapter)
Apache Kafka
· topics du domaine : pr2.dossier, pr2.offre, pr2.paiement · DLQ : pr2.dlq
« consommer, calculer, publier »
1
2
3
4
5
6
E
1
2
3
E
4
5
6
requête REST authentifiée, transmise par Traefik avec le jeton OIDC
contrôles : autorisations (rôles, droit sur le dossier) puis validation des données
cas d'usage : orchestration et ouverture de la transaction
consommateur : traite les événements entrants, idempotent, DLQ
moteur de calcul : barèmes versionnés, journal d'audit du calcul
écriture atomique : données et événement (outbox) dans la même transaction
relai d'outbox : publication vers Kafka, livraison au moins une fois