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