Aller au contenu principal

Modernisation legacy

Refonte progressive d'un monolithe de gestion des contrats

Modernisation par extraction de domaines, sans interruption de service

Groupe d'assurance mutualiste (exemple) - 2024-03 - 2024-11

Exemple de demonstration : cette realisation illustre la methode Codexway et ne correspond pas a un client reel.

Contexte

Application de gestion des contrats et des sinistres développée sur quinze ans, monolithique, avec une base de données unique de plus de quatre cents tables. Trois équipes se partageaient la même base de code, avec des mises en production trimestrielles et une couverture de tests limitée aux parcours les plus critiques.

Problematique

Chaque évolution réglementaire déclenchait des régressions en production et mobilisait deux à trois semaines de recette manuelle. Les règles de gestion n'étaient documentées que dans le code, et la montée en charge du portail client dégradait les traitements batch de fin de journée.

Objectifs

  • Rétablir une capacité de livraison mensuelle sans régression en production
  • Isoler les traitements batch des consultations du portail client
  • Documenter les règles de gestion critiques par des tests exécutables

Role tenu

Architecte et développeur principal sur le premier périmètre extrait, avec un objectif explicite de transfert de compétences vers les équipes internes à partir du troisième mois.

Solution retenue

La démarche a commencé par un filet de sécurité : deux cent quarante tests d'acceptation écrits sur le comportement observé des parcours les plus sensibles, exécutés à chaque livraison. Une couture technique a ensuite été introduite dans le monolithe pour router progressivement les appels vers de nouveaux composants, sans modifier le reste du code. Le premier domaine extrait a été la gestion des échéances de cotisation, choisi pour son faible couplage et sa criticité métier. Le nouveau service a fonctionné en parallèle de l'ancien traitement pendant six semaines, avec comparaison automatique des résultats sur les données réelles anonymisées. Cette période a révélé onze cas particuliers non documentés, tous traités et couverts par des tests avant la bascule. Le déploiement s'est fait service par service, avec un mécanisme de bascule réversible activé par configuration. À la fin de la mission, trois domaines étaient extraits et un quatrième en cours, avec une équipe interne autonome sur la démarche.

Architecture

Le monolithe existant reste en place comme socle de règles métier stables. Les domaines extraits sont des services Spring Boot autonomes, exposant une API REST interne et publiant des événements sur Kafka pour les autres modules. Chaque service possède son propre schéma PostgreSQL, migré par Flyway, et ne lit jamais directement les tables d'un autre service. Une passerelle applicative conserve les points d'entrée historiques pendant la transition et route progressivement le trafic. L'observabilité repose sur OpenTelemetry, avec un identifiant de corrélation propagé du portail jusqu'au traitement batch.

Resultats (exemples)

  • Trois domaines extraits et exploités en production, un quatrième en cours
  • Livraisons passées d'une cadence trimestrielle à une cadence mensuelle
  • Tests d'acceptation exécutés automatiquement à chaque livraison
  • Traitements batch isolés des pics de consultation du portail client

Indicateurs (exemples)

  • Durée de recette manuelle par livraison

    15 jours à 4 jours

    Estimation issue d'un exercice de simulation — exemple de démonstration

  • Tests d'acceptation automatisés

    240

    Volume illustratif sur un périmètre simulé — exemple de démonstration

  • Domaines extraits du monolithe

    3 sur 12

    Périmètre volontairement limité à un premier lot — exemple de démonstration

Technologies

  • Java
  • Spring Boot
  • Angular
  • PostgreSQL
  • Flyway
  • Apache Kafka
  • Docker
  • Kubernetes
  • OpenTelemetry

Temoignage (exemple)

« Le choix de commencer par un domaine secondaire nous a permis de valider la méthode sans exposer la production. Les tests écrits au début nous servent aujourd'hui à chaque livraison. »

- Direction des systèmes d'information, groupe d'assurance (exemple de démonstration)

Services mobilises

  • Architecture logicielle et cadrage technique

    Je conçois et j'évalue des architectures applicatives alignées sur vos contraintes réelles d'équipe, de délai et d'exploitation. Vous obtenez une cible argumentée, découpée en étapes livrables, pas un document de deux cents pages.

  • Modernisation d'applications legacy

    Je fais évoluer des applications historiques par étapes contrôlées, en maintenant la production en service. L'objectif n'est pas de tout réécrire, mais de reprendre la main sur un système que vous n'osez plus modifier.

  • Développement back-end Java et Spring Boot

    Je conçois et développe des services métier robustes avec Java et Spring Boot, testés et observables dès le premier jour. Le code livré est lisible, documenté et repris sans difficulté par votre équipe.

  • Observabilité et performance applicative

    Je rends vos applications diagnostiquables : traces corrélées, métriques utiles et alertes qui signalent un problème réel. Vous passez de l'interprétation des symptômes à l'identification de la cause.