Migration technique: un parcours du combattant
Arnaud LAHAXE - 13 juin 2025
Migration technique sur du legacy: un parcours du
combattant
Une migration technique
Document restreint C0 | 3
Une migration technique est le processus de transition d'un système, d'une
infrastructure ou d'une application d'un environnement technologique à un autre,
dans le but d'améliorer les performances, la maintenabilité, la sécurité ou l'évolutivité.
Etat initial
Document restreint C0 | 4
> Un code vieux de plus de 20 ans
> Beaucoup de magie
> Un crainte collective de modifier
> Peu de tests, tous indirects
Contraintes du moment
Document restreint C0 | 5
> Une entreprise en forte croissance
> Pas d'arrêt des développements
> Plusieurs fonctionnalités ultra-sensibles
> Un contexte économique très instable
Qui suis-je ?
Arnaud LAHAXE
Architecte Applicatif chez Boursobank
🎮🍺🤖
6
Boursobank
> Banque en ligne
> Portail d'informations
7
Contexte concernant le WEB
Document restreint C0 | 8
Notre API
Document restreint C0 | 9
> Unique point d'entrée dans le SI pour les clients
> Centrale pour nos applications et nos sites
> Plusieurs millions de lignes de code
> Un projet créé en 1998
Comment identifier une migration à prioriser ?
Document restreint C0 | 10
> Une obsolescence technique
> Un problème de performance/ scalabilité
> Un problème de résilience
> Une accumulation de dette technique
La dette technique
Document restreint C0 | 11
> Code abscons
> Manque de tests
> Documentation absente ou obsolète
> Fonctionnalités inutiles accumulées
> Technologies dépassées
Le besoin
> Réécriture des intéractions avec un
partenaire
> Modernisation du code métier
12
Quelques chiffres
Document restreint C0 | 13
> +/- 10 millions de transactions par jour
> +/- 100 transactions différentes
> +/- 300 classes PHP
Le code à migrer
Document restreint C0 | 14
À l'état de l'art
Le code à migrer
Document restreint C0 | 15
À l'état de l'art d'il y a 20 ans
Document restreint C0 | 16
Les problèmes identifiés
Document restreint C0 | 17
> Il n'y a que moi qui modifie ce code
> On parse/ génère le XML partiellement "à la main"
> Le code ne sera pas compatible PHP 9
> Pas de typage
> Il n'y a pas de tests directs
La migration
> Ma recette de cuisine
18
Identification des impacts
Document restreint C0 | 19
> Où est utilisé le code à migrer ?
> Quelle est la criticité des fonctionnalités l'utilisant ?
> Comment s'assurer de ne pas régresser ?
Communiquer avec l'équipe
Document restreint C0 | 20
> Pour collecter des informations
> Pour être mis au courant des nouveaux usages
> Pour faciliter la remontée de bugs potentiels
Identifier le code mort et le supprimer
Document restreint C0 | 21
> Utilisation de métriques existantes
> Création d'une liste de "trucs" à supprimer
> Discussion avec les pairs et le métier
> Suppression du code inutile
Ajouter des tests sur l'existant
Document restreint C0 | 22
> Rendre le code testable
> Créer un groupe de tests dédié
> Tester un ou plusieurs cas normaux
> Tester spécifiquement les cas atypiques
Nettoyer le code historique à modifier
Document restreint C0 | 23
> Objectif 0 anomalie dans l'IDE
> Phpstan
> PHP ECS
Identifier les besoins techniques
Document restreint C0 | 24
> Un client HTTP qui permet la parallélisation
> Un parseur de XML
> Les métriques nécessaires au suivi de la production
> Une bonne couverture de tests
Faire des POCs
Document restreint C0 | 25
> Sélectionner les outils pertinents
> Faire un POC pour chaque
> Faire les pour et les contre
> Faire un choix
Développer le socle technique
Document restreint C0 | 26
> Faire une implémentation minimale
> Tests d'architecture
> Mise en place d'une feature flag pour le Y
> Faire de la revue de code
Créer le kanban
Document restreint C0 | 27
> Découper la migration au maximum en micro-tâches
Créer le kanban
Document restreint C0 | 28
> Des tickets simples et accessibles
> Découper de manière à pouvoir paralléliser
> Toutes les informations dans un readme
Migrer une fonctionnalité complexe à la main
Document restreint C0 | 29
> Utiliser le code legacy comme source de vérité
> Documenter chaque étape pour aider à la reproductibilité
> Aller jusqu'à la production
Automatiser au maximum la migration
Document restreint C0 | 30
> Création d'une moulinette qui manipule l'AST du code
> Avec nette/php-generator
> Création/ Migration de code
> Génération de templates de tests
> Déployer sur les environnements hors prod
Automatiser au maximum la migration
Document restreint C0 | 31
Automatiser au maximum la migration
Document restreint C0 | 32
Les livraisons
Document restreint C0 | 33
> S'adapter au contexte
> Livraison par petits lots
> Uniquement de la configuration simple à revert
> Intégrer des feedback loops rapides pour ajuster en temps réel
Les incidents
Document restreint C0 | 34
> En cas d'incident
> On revert la configuration
> Arrêter les livraisons
> Corriger et ajouter un test automatisé de non-régression
Cercle vertueux
Document restreint C0 | 35
1 bug = 1 fix = 1 nouveau test
Le ménage
Document restreint C0 | 36
> Supprimer le vieux code
> Supprimer le code lié à la migration
> Supprimer les tests spécifiques à la migration
La communication
> Avoir des indicateurs publics
> Pour la migration
> Pour la livraison
37
Le bilan
> 100 jours/ homme
> 1 an calendaire
> 80+ pull requests
> 40+ livraisons
38
Le bilan
> 1 incident important
> 1 incident mineur
> Beaucoup d'anomalies en dev
39
A retenir
> Découper au maximum
> Faire des POCs
> Ajouter des tests
> Automatiser le plus possible
40
A retenir
> Livrer le code sans activer
> Activer petit à petit
> Communiquer/ Documenter
41
Votre avis ?​
42
Migration technique: un parcours du combattant
Arnaud LAHAXE - 13 juin 2025

Contenu connexe

PDF
La migration continue vers Symfony
PPTX
Migrer de framework : de la réflexion à l'action
PDF
De 0 à 10 millions de visiteurs uniques avec les moyens d'une startup
PDF
Yannick DUPUIS
PDF
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
PDF
Forum PHP 2007 - Methodes Agiles
ODP
Industrialisez vos projets Php
PPT
Conférence AFUP 20minutes.Fr
La migration continue vers Symfony
Migrer de framework : de la réflexion à l'action
De 0 à 10 millions de visiteurs uniques avec les moyens d'une startup
Yannick DUPUIS
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Forum PHP 2007 - Methodes Agiles
Industrialisez vos projets Php
Conférence AFUP 20minutes.Fr

Similaire à [2025] Migration technique: un parcours du combattant (20)

PDF
Synchroniser ses applications (plus) simplement
PDF
Solutions Linux 2010 - Maîtrise du développement PHP
PPTX
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
PPT
Choisir Deployer Collaboratif 21640 23333
PPTX
AFUP 2010 : Industrialisation de PHP, l'exemple de CANAL+
PDF
Industrialisation de PHP - Be Zend 2010
KEY
Techdays2011
PDF
Gestion de projet
PPTX
Rédiger un bon cahier des charge pour développer son site Web, conférence Avi...
PDF
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
PDF
dev et admin sys : une cohabitation simplifiée
PPTX
Objectif fluid<fab />
PDF
4 Etude De Faisabilite
PDF
L'industriel n'est pas là ou le croit !
PPT
Migration VB6 > .Net
PDF
Agile lille 2015 devops etapres
PDF
Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...
PDF
Presentation Adi 14052009
PDF
Les clés d’une refonte e-commerce réussie
PDF
Drupal Factory kézako ?
Synchroniser ses applications (plus) simplement
Solutions Linux 2010 - Maîtrise du développement PHP
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
Choisir Deployer Collaboratif 21640 23333
AFUP 2010 : Industrialisation de PHP, l'exemple de CANAL+
Industrialisation de PHP - Be Zend 2010
Techdays2011
Gestion de projet
Rédiger un bon cahier des charge pour développer son site Web, conférence Avi...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
dev et admin sys : une cohabitation simplifiée
Objectif fluid<fab />
4 Etude De Faisabilite
L'industriel n'est pas là ou le croit !
Migration VB6 > .Net
Agile lille 2015 devops etapres
Comment Bien Choisir un CMS pour les Administrations et Collectivites Locales...
Presentation Adi 14052009
Les clés d’une refonte e-commerce réussie
Drupal Factory kézako ?
Publicité

Dernier (9)

PDF
Classification en apprentissage supervisé : Les Arbres de Décision
PPTX
Slide Steve2 optimatisation sur les engrainage .pptx
PDF
Apprentissage supervisé : La Classification.pdf
PDF
Controle-and-Assurance-Qualite-logicielle-Developpement-du-tableau-de-bord-de...
PPTX
template SR.pptx pour les présentations de soutenances
PPTX
PhD Thesis Defence Presentation in PPT formatcandidateAhmedBOUHOUTA.pptx
PDF
UX DESIGN presentation canva plan et slides
PPTX
chap 2 EA pptx.pptx modele relationnele de d
PPTX
Cours_IoT.pptx k
Classification en apprentissage supervisé : Les Arbres de Décision
Slide Steve2 optimatisation sur les engrainage .pptx
Apprentissage supervisé : La Classification.pdf
Controle-and-Assurance-Qualite-logicielle-Developpement-du-tableau-de-bord-de...
template SR.pptx pour les présentations de soutenances
PhD Thesis Defence Presentation in PPT formatcandidateAhmedBOUHOUTA.pptx
UX DESIGN presentation canva plan et slides
chap 2 EA pptx.pptx modele relationnele de d
Cours_IoT.pptx k
Publicité

[2025] Migration technique: un parcours du combattant

  • 1. Migration technique: un parcours du combattant Arnaud LAHAXE - 13 juin 2025
  • 2. Migration technique sur du legacy: un parcours du combattant
  • 3. Une migration technique Document restreint C0 | 3 Une migration technique est le processus de transition d'un système, d'une infrastructure ou d'une application d'un environnement technologique à un autre, dans le but d'améliorer les performances, la maintenabilité, la sécurité ou l'évolutivité.
  • 4. Etat initial Document restreint C0 | 4 > Un code vieux de plus de 20 ans > Beaucoup de magie > Un crainte collective de modifier > Peu de tests, tous indirects
  • 5. Contraintes du moment Document restreint C0 | 5 > Une entreprise en forte croissance > Pas d'arrêt des développements > Plusieurs fonctionnalités ultra-sensibles > Un contexte économique très instable
  • 6. Qui suis-je ? Arnaud LAHAXE Architecte Applicatif chez Boursobank 🎮🍺🤖 6
  • 7. Boursobank > Banque en ligne > Portail d'informations 7
  • 8. Contexte concernant le WEB Document restreint C0 | 8
  • 9. Notre API Document restreint C0 | 9 > Unique point d'entrée dans le SI pour les clients > Centrale pour nos applications et nos sites > Plusieurs millions de lignes de code > Un projet créé en 1998
  • 10. Comment identifier une migration à prioriser ? Document restreint C0 | 10 > Une obsolescence technique > Un problème de performance/ scalabilité > Un problème de résilience > Une accumulation de dette technique
  • 11. La dette technique Document restreint C0 | 11 > Code abscons > Manque de tests > Documentation absente ou obsolète > Fonctionnalités inutiles accumulées > Technologies dépassées
  • 12. Le besoin > Réécriture des intéractions avec un partenaire > Modernisation du code métier 12
  • 13. Quelques chiffres Document restreint C0 | 13 > +/- 10 millions de transactions par jour > +/- 100 transactions différentes > +/- 300 classes PHP
  • 14. Le code à migrer Document restreint C0 | 14 À l'état de l'art
  • 15. Le code à migrer Document restreint C0 | 15 À l'état de l'art d'il y a 20 ans
  • 17. Les problèmes identifiés Document restreint C0 | 17 > Il n'y a que moi qui modifie ce code > On parse/ génère le XML partiellement "à la main" > Le code ne sera pas compatible PHP 9 > Pas de typage > Il n'y a pas de tests directs
  • 18. La migration > Ma recette de cuisine 18
  • 19. Identification des impacts Document restreint C0 | 19 > Où est utilisé le code à migrer ? > Quelle est la criticité des fonctionnalités l'utilisant ? > Comment s'assurer de ne pas régresser ?
  • 20. Communiquer avec l'équipe Document restreint C0 | 20 > Pour collecter des informations > Pour être mis au courant des nouveaux usages > Pour faciliter la remontée de bugs potentiels
  • 21. Identifier le code mort et le supprimer Document restreint C0 | 21 > Utilisation de métriques existantes > Création d'une liste de "trucs" à supprimer > Discussion avec les pairs et le métier > Suppression du code inutile
  • 22. Ajouter des tests sur l'existant Document restreint C0 | 22 > Rendre le code testable > Créer un groupe de tests dédié > Tester un ou plusieurs cas normaux > Tester spécifiquement les cas atypiques
  • 23. Nettoyer le code historique à modifier Document restreint C0 | 23 > Objectif 0 anomalie dans l'IDE > Phpstan > PHP ECS
  • 24. Identifier les besoins techniques Document restreint C0 | 24 > Un client HTTP qui permet la parallélisation > Un parseur de XML > Les métriques nécessaires au suivi de la production > Une bonne couverture de tests
  • 25. Faire des POCs Document restreint C0 | 25 > Sélectionner les outils pertinents > Faire un POC pour chaque > Faire les pour et les contre > Faire un choix
  • 26. Développer le socle technique Document restreint C0 | 26 > Faire une implémentation minimale > Tests d'architecture > Mise en place d'une feature flag pour le Y > Faire de la revue de code
  • 27. Créer le kanban Document restreint C0 | 27 > Découper la migration au maximum en micro-tâches
  • 28. Créer le kanban Document restreint C0 | 28 > Des tickets simples et accessibles > Découper de manière à pouvoir paralléliser > Toutes les informations dans un readme
  • 29. Migrer une fonctionnalité complexe à la main Document restreint C0 | 29 > Utiliser le code legacy comme source de vérité > Documenter chaque étape pour aider à la reproductibilité > Aller jusqu'à la production
  • 30. Automatiser au maximum la migration Document restreint C0 | 30 > Création d'une moulinette qui manipule l'AST du code > Avec nette/php-generator > Création/ Migration de code > Génération de templates de tests > Déployer sur les environnements hors prod
  • 31. Automatiser au maximum la migration Document restreint C0 | 31
  • 32. Automatiser au maximum la migration Document restreint C0 | 32
  • 33. Les livraisons Document restreint C0 | 33 > S'adapter au contexte > Livraison par petits lots > Uniquement de la configuration simple à revert > Intégrer des feedback loops rapides pour ajuster en temps réel
  • 34. Les incidents Document restreint C0 | 34 > En cas d'incident > On revert la configuration > Arrêter les livraisons > Corriger et ajouter un test automatisé de non-régression
  • 35. Cercle vertueux Document restreint C0 | 35 1 bug = 1 fix = 1 nouveau test
  • 36. Le ménage Document restreint C0 | 36 > Supprimer le vieux code > Supprimer le code lié à la migration > Supprimer les tests spécifiques à la migration
  • 37. La communication > Avoir des indicateurs publics > Pour la migration > Pour la livraison 37
  • 38. Le bilan > 100 jours/ homme > 1 an calendaire > 80+ pull requests > 40+ livraisons 38
  • 39. Le bilan > 1 incident important > 1 incident mineur > Beaucoup d'anomalies en dev 39
  • 40. A retenir > Découper au maximum > Faire des POCs > Ajouter des tests > Automatiser le plus possible 40
  • 41. A retenir > Livrer le code sans activer > Activer petit à petit > Communiquer/ Documenter 41
  • 43. Migration technique: un parcours du combattant Arnaud LAHAXE - 13 juin 2025