Date post: | 14-Jan-2017 |
Category: |
Technology |
Upload: | vincent-chalamon |
View: | 2,069 times |
Download: | 0 times |
Migration vers Symfony 3 d'une application B2B de LaFourchette
R2D2 to BB8
Paulo Coelho
Vincent Chalamon
Lead Developer chezLes-Tilleuls.coop
@vincentchalamon
github.com/vincentchalamon
Guillaume Voisin
Lead Developer chezLaFourchette
@guillaumvoisin
github.com/guillaumevoisin
450krésas par mois
12++ pays
32krestaurants
70++développeurs
Nombreux usages
Utilisateurs++
Internationalisation
R2D2La V2 actuelle
The ForkManager V2
R2D2 > La V2 actuelle
Contenu
Réservation
Plan de salleMarketing& CRM
Stats
8
● Application à destination des restaurateurs
● Gestion de services depuis le restaurant
● Outil de communication auprès des clients
The Fork Manager V2
R2D2 > La V2 actuelle
Dette techniqueconséquente
Difficultés demise à jour
Nombreux projets inter-dépendants
Fonctionnalités obsolètesnon ergonomiques
9
The Fork Manager V2
R2D2 > La V2 actuelle 10
BB8La V3
The ForkManager V3
BB8 > La V3
Contenu
Plan de salleMarketing& CRM
Stats
Réservation
Partir sur de bonnes pratiques
BB8 > La V3
Sémantique
Approche MVPPenser durable :refactos
Proposer des POC
Échouerc’est cool !
Qualité : TU, TF
13
BB8 > La V3
TwGit
14
API
SPA
Et pour les fronts…
BB8 > La V3
V2
APP
Loaders
Transformers
Double écriture
15
V3
LegacyBundle
BB8 > La V3
Isoler les développements
16
Désactivation du LegacyBundle
Mapping entités V2
BB8 > La V3 17
Données importées
Restaurant
RéservationsDescription
Horaires ouverture
Horaires fermeture
Clients
Loaders
● Commande Symfony● 1 loader par entité● Priorité définie pour
chaque loader
Loaders
Loaders
Registry Loader
19
V2
Loaders
INSERT INTO v3.restaurant…SELECT v2.restaurant…
Loaders
20
V3
Loaders
Loaders
Penser jetable MVP : importer uniquement le nécessaire
Savoir se passer de Doctrine
Refacto, vous avez dit refacto ?
Gestion des erreurs / doublons
21
Compliqué parfois le Loader peut être
Exécution des loaders en production
Loaders
● Charger l’intégralité des données = 9 jours
Migration progressive
24
Interruption de service
V2
Loaders
Client 3 Client 1Client 2
25
V3
Migration progressive
Transformers
Transformers
V2
V3
27
Transformers
Double écriture
Double écriture 31
V2
APP
TransformersV3
Double écriture
POST http://api.tfm3-lafourchette.com/restaurants PUT http://api.tfm3-lafourchette.com/restaurants/legacy/3
Bilan
Bilan
Bilan
> 300tests unitaires
> 80%couverturede code
1 an de dev
33
LegacyBundle :75% des devs
> 10 contributeurs
> 150tests fonctionnels
Conseils de Jedi
Bilan 34
“Une étude approfondie du Legacy tu feras”
“En conditions réelles tu testeras”
“Prudent tu seras”
@TheFork_tech
https://joind.in/talk/e08a1
Michiel VanWerkhovenProduct Owner
Olivier VersanneScrummaster
Mickael LabrutBackend lead developer
Guillaume VoisinBackend lead developer
@guillaumvoisin
Vincent ChalamonBackend lead developer
@vincentchalamon
Gregory CopinDirecteur technique @gregcop1
Dimitri HautotFrontend developer@Dhautot
Matteo ReinerioFrontend developer@zippymat
Alexis TondelierFrontend lead developer @AlexisTondelier
Cédric DéservilleBackend lead developer @talumn
#MayTheForkBeWithYou
@coopTilleuls