Modernisation legacy
Refonte progressive d'un monolithe de gestion des contrats
Modernisation par extraction de domaines, sans interruption de service
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. »
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.