SlideShare une entreprise Scribd logo
1
2
Comment faire une
migration sur une
fonctionnalité critique ?
Mathieu DESNOUVEAUX
Développeur
@mdesnouveaux
3
Arnaud LAHAXE
Architecte applicatif
@arnaud_lahaxe
4
5
Boursorama Banque
Boursorama
▪ Leader de la banque en ligne en France
▪ 1er Portail d’information boursière en France
▪ La banque la moins chère depuis 11 ans
▪ 99% des démarches en ligne
▪ 2 millions de clients
▪ 20% de nouveaux clients par an
▪ Guichet unique pour toute l’activité client
6
Environnement technique (partie WEB)
▪ 1 brique du SI boursorama
▪ 3 sites web principaux
▪ 4 applications mobiles
▪ 8 barbus / 50 développeurs
▪ > 200 000 lignes de code modifiées par mois
▪ > 1400 pull request / mois
▪ > 100 livraisons / mois
7
À Nancy depuis 21 ans
Le virement chez Boursorama (partie WEB)
▪ Intermédiaire
▪ Entre le client et le partenaire qui transfert les fonds
▪ Orchestrateur entre plusieurs partenaires
▪ Fonctionnalité large
▪ > 10 types de virement
▪ Au coeur d’autres fonctionnalités
8
Volumétrie virement
▪ De 50 000 à 100 000 virements par jour
▪ > 1 virement par seconde
▪ Pics par période (week end, fin de mois)
9
Pourquoi migrer le virement ?
▪ Ajout du virement instantané
▪ Obligation réglementaire
▪ Évolution de l’offre clientèle
▪ Rembourser la dette technique
▪ Simplification des évolutions futures
10
11
Avant
Beaucoup d’historique
12
▪ Fonctionnalité ancienne
▪ Classe créée le 24 octobre 2006
▪ Partenaires disparus
▪ Code ancien, travers anciens
▪ Classes monstres (environ 4000 lignes)
▪ Code métier et contrôleur mélangés
Beaucoup de règles
13
▪ Règles métiers
▪ Compatibilités de comptes
▪ Offres commerciales
▪ Réglementations juridiques
▪ Fraude et sécurité
14
Méthodologies de migration
Les différentes méthodes pour faire une migration
15
1- Migration type “big bang"
Les différentes méthodes pour faire une migration
16
2- Migration progressive
Réécriture de code vieux de 17 ans - Anna Filina
Les différentes méthodes pour faire une migration
17
3- Migration type Friends & Family
Les migrations chez Boursorama
18
▪ Une méthodologie adaptée au projet
▪ Des cycles de dev courts
▪ Quelques règles :
▪ Pas de refacto dans une branche de projet
▪ 5 petites PRs c’est mieux que 1 grosse PR
▪ La rétro-compatibilité est obligatoire
▪ …
Les migrations chez Boursorama
19
▪ Pour les gros projets on mixe :
▪ Migration progressive
▪ Migration type Friends & Family
Duplication des jeux de tests
20
▪ Enrichissement des tests sur l’ancien code
▪ Création des tests sur le nouveau code
▪ Les cas normaux
▪ Les cas spécifiques
▪ La rétro-compatibilité
▪ 1 bug détecté = 1 nouveau test
21
La suite de tests
22
Migration du code
Analyse du legacy
23
Analyse du legacy
24
Refactorisation
25
▪ Indentation hell
▪ 6 niveaux et parfois plus
▪ Des répétitions dans les else
▪ Code illisible
▪ 1 ligne métier
▪ 18 lignes “inutiles”
▪ Détection et correction de bugs complexes
Refactorisation
26
▪ Refactorisation dans la méthode
▪ Exit early
▪ Détection et correction de bugs plus facile
▪ Apparition de blocs logiques
Refactorisation
27
▪ Extraction des blocs logiques
▪ Petites méthodes
▪ Facilement testables
▪ Responsabilité unique
▪ Pas de changement de signature
Évolution de l’architecture legacy
28
Action
Match
Action
Match
Action
Match
Action
Match
Action
Match
PRE-TRANSFER
Action
Match
Action
Match
Action
Match
Action
Match
Action
Match
TRANSFER
Action
Match
Action
Match
Action
Match
Action
Match
Action
Match
POST-TRANSFER
Architecture modulaire
29
Matching
Type A
Match Pre Post
Transfer
Type A
Process
Type B
Match Pre Post
Transfer
Type B
Type C
Match Pre Post
Transfer
Type C
Type D
Match Pre Post
Transfer
Type D
Type E
Match Pre Post
Transfer
Type E
Architecture modulaire
30
31
Livraison du code
Livraison continue
32
▪ Partage avec les autres projets en cours
▪ Livraison “au plus tôt”
▪ Code livré mais pas forcément encore utilisé en production
▪ Petites Pull request compréhensibles
▪ Impacts “limités” en cas de régression
Feature flags
33
Le pattern « feature flag » permet d’activer et désactiver des fonctionnalités
directement en production, avec ou sans re-livraison de code.
“ “
34
Client
Login: 96064416
Ville: Paris
IP: 109.190.253.15
...
Version A – Pour les
logins finissant en 6
Version B – Pour les
logins ne finissant pas
en 6
Feature flags
Client
Login: 46763419
Ville: Nancy
IP: 96.145.135.36
...
Version A – Pour les
logins finissant en 6
Version B – Pour les
logins ne finissant pas
en 6
36
Feature flags
Client
Login: 96064416
Ville: Paris
IP: 109.190.253.15
...
Client
Login: 46763419
Ville: Nancy
IP: 96.145.135.36
...
37
Prod-cachée et rétrocompatibilité
38
APIs du virement
Site client
App Android v6.3
Contrôleur
Ancienne
version
Nouvelle
version
App Android v6.2
App Android vX.x
App iOS v6.3
App iOS v6.2
App iOS vX.x
...
Pas de BC dans les inputs / outputs des API
FF
++
++
Ouverture par vagues
39
0,000025%
5 personnes du projet
J 0
Ouverture par vagues
40
1%
20k clients
J +3
Ouverture par vagues
41
10%
200k clients
J +4
Ouverture par vagues
42
100%
2m clients
pendant 5 minutes
J +7
Ouverture par vagues
43
20%
400k clients
J +7
Ouverture par vagues
44
50%
1m clients
J +8
Ouverture par vagues
45
70%
1.4m clients
J +9
Ouverture par vagues
46
100%
2m clients
définitivement
J +10
Ouverture par vagues
Monitoring avancé
48
▪ Volume global de virement
▪ Ancien et nouveau
▪ Volume par type de virement
▪ Pourcentage d’erreur par type
▪ Pourcentage d’erreurs des partenaires
▪ Comparaison à J-7
▪ Temps moyen nécessaire pour faire un virement
Monitoring avancé
49
▪ Affichage des dashboards dans l’open space
▪ Monitoring système (ping, ssl check, heartbeat…)
▪ Vérification systématique les matins par un humain
50
Travail post livraison
rm -fr *
51
▪ Suppression de code mort
▪ Livrer le plus vite possible du code remplacé
▪ Suivre les breaking change
▪ Suppression indépendante
Après migration
52
▪ Run
▪ Visualisation et suivi des différents virements
▪ Configuration plutôt que programmation
▪ Traitement facilité
▪ Évolution
▪ Ajout d’un nouveau type de virement en peu de temps
▪ Ajout de nouvelles règles et contraintes centralisées
▪ Plus simple à expliquer à un nouveau dev
Post-mortem
53
▪ Quelques anomalies facilement corrigées
▪ Rétrocompatibilité lourde à assurer
▪ Maintenance durant le temps de migration
▪ Code modulaire donc moins linéaire
▪ documentation / présentation / formation
▪ création d’outils
54
Questions ?
55

Contenu connexe

Similaire à [2019] Comment faire une migration sur une fonctionnalité critique ?

F5 ltm administering big ip v11
F5 ltm administering big ip v11F5 ltm administering big ip v11
F5 ltm administering big ip v11
Amine Haddanou
 
Présentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobilePrésentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobile
Nader Somrani
 
La vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploitéLa vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploité
Fasterize
 
prsentationpfe-170608044242.pdf
prsentationpfe-170608044242.pdfprsentationpfe-170608044242.pdf
prsentationpfe-170608044242.pdf
NoureddineAddazi
 
Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020
Sébastien Le Marchand
 
Le Lean 6 Sigma dans une démarche de transformation
Le Lean 6 Sigma dans une démarche de transformationLe Lean 6 Sigma dans une démarche de transformation
Le Lean 6 Sigma dans une démarche de transformation
XL Groupe
 
L'approche par regles metier
L'approche par regles metierL'approche par regles metier
L'approche par regles metier
senejug
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
SEO CAMP
 
Rapid ou la modernisation automatisée d'application métier
Rapid ou la modernisation automatisée d'application métierRapid ou la modernisation automatisée d'application métier
Rapid ou la modernisation automatisée d'application métier
Romain Hinfray
 
Rapid ou l'automatisation de la modernisation des applications
Rapid ou l'automatisation de la modernisation des applicationsRapid ou l'automatisation de la modernisation des applications
Rapid ou l'automatisation de la modernisation des applications
Romain Hinfray
 
Automatisation intelligente (IA) du traitement des encaissements clients : re...
Automatisation intelligente (IA) du traitement des encaissements clients : re...Automatisation intelligente (IA) du traitement des encaissements clients : re...
Automatisation intelligente (IA) du traitement des encaissements clients : re...
Axys
 
Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013
Artusamak
 
REX : la webperf chez RueDuCommerce
REX : la webperf chez RueDuCommerceREX : la webperf chez RueDuCommerce
REX : la webperf chez RueDuCommerce
Web Performance Paris
 
PrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShopPrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShop
PrestaShop
 
La Duck Conf - "L'API Management : au-délà des promesses"
La Duck Conf - "L'API Management : au-délà des promesses" La Duck Conf - "L'API Management : au-délà des promesses"
La Duck Conf - "L'API Management : au-délà des promesses"
OCTO Technology
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQube
Pierre-Henri Gache
 
5 ans de openerp au maroc : retour d'expériences
5 ans de openerp au maroc : retour d'expériences5 ans de openerp au maroc : retour d'expériences
5 ans de openerp au maroc : retour d'expériences
HORIYASOFT
 
Discover Salesforce : world's #1 cloud CRM solution (Meetup 14/12/2017)
Discover Salesforce : world's #1 cloud CRM solution (Meetup 14/12/2017)Discover Salesforce : world's #1 cloud CRM solution (Meetup 14/12/2017)
Discover Salesforce : world's #1 cloud CRM solution (Meetup 14/12/2017)
Casablanca Salesforce Developer Group
 
Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4
Simplicité Software
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
WeLoveSEO
 

Similaire à [2019] Comment faire une migration sur une fonctionnalité critique ? (20)

F5 ltm administering big ip v11
F5 ltm administering big ip v11F5 ltm administering big ip v11
F5 ltm administering big ip v11
 
Présentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobilePrésentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobile
 
La vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploitéLa vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploité
 
prsentationpfe-170608044242.pdf
prsentationpfe-170608044242.pdfprsentationpfe-170608044242.pdf
prsentationpfe-170608044242.pdf
 
Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020
 
Le Lean 6 Sigma dans une démarche de transformation
Le Lean 6 Sigma dans une démarche de transformationLe Lean 6 Sigma dans une démarche de transformation
Le Lean 6 Sigma dans une démarche de transformation
 
L'approche par regles metier
L'approche par regles metierL'approche par regles metier
L'approche par regles metier
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
 
Rapid ou la modernisation automatisée d'application métier
Rapid ou la modernisation automatisée d'application métierRapid ou la modernisation automatisée d'application métier
Rapid ou la modernisation automatisée d'application métier
 
Rapid ou l'automatisation de la modernisation des applications
Rapid ou l'automatisation de la modernisation des applicationsRapid ou l'automatisation de la modernisation des applications
Rapid ou l'automatisation de la modernisation des applications
 
Automatisation intelligente (IA) du traitement des encaissements clients : re...
Automatisation intelligente (IA) du traitement des encaissements clients : re...Automatisation intelligente (IA) du traitement des encaissements clients : re...
Automatisation intelligente (IA) du traitement des encaissements clients : re...
 
Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013
 
REX : la webperf chez RueDuCommerce
REX : la webperf chez RueDuCommerceREX : la webperf chez RueDuCommerce
REX : la webperf chez RueDuCommerce
 
PrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShopPrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShop
 
La Duck Conf - "L'API Management : au-délà des promesses"
La Duck Conf - "L'API Management : au-délà des promesses" La Duck Conf - "L'API Management : au-délà des promesses"
La Duck Conf - "L'API Management : au-délà des promesses"
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQube
 
5 ans de openerp au maroc : retour d'expériences
5 ans de openerp au maroc : retour d'expériences5 ans de openerp au maroc : retour d'expériences
5 ans de openerp au maroc : retour d'expériences
 
Discover Salesforce : world's #1 cloud CRM solution (Meetup 14/12/2017)
Discover Salesforce : world's #1 cloud CRM solution (Meetup 14/12/2017)Discover Salesforce : world's #1 cloud CRM solution (Meetup 14/12/2017)
Discover Salesforce : world's #1 cloud CRM solution (Meetup 14/12/2017)
 
Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
 

[2019] Comment faire une migration sur une fonctionnalité critique ?