Migration vers Symfony 3
d'une application B2B de
LaFourchette
R2D2 to BB8
Paulo Coelho
Vincent
Chalamon
Lead Developer chez
Les-Tilleuls.coop
@vincentchalamon
github.com/vincentchalamon
Guillaume
Voisin
Lead Developer chez
LaFourchette
@guillaumvoisin
github.com/guillaumevoisin
450k
résas par mois
12++
pays
32k
restaurants
70++
développeurs
Nombreux usages
Utilisateurs++
Internationalisation
R2D2
La V2 actuelle
The Fork
Manager V2
R2D2 > La V2 actuelle
Contenu
Réservation
Plan de salleMarketing
& CRM
Stats
8
● Application à destina...
The Fork Manager V2
R2D2 > La V2 actuelle
Dette technique
conséquente
Difficultés de
mise à jour
Nombreux projets
inter-dé...
The Fork Manager V2
R2D2 > La V2 actuelle 10
BB8
La V3
The Fork
Manager 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
Échouer
c’est...
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éservations
Description
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...
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
Interru...
V2
Loaders
Client 3 Client 1
Client 2
25
V3
Migration progressive
Transformers
Transformers
V2
V3
27
Transformers
Double
écriture
Double écriture 31
V2
APP
Transformers
V3
Double écriture
POST http://api.tfm3-lafourchette.com/restaurantsPUT http://api....
Bilan
Bilan
Bilan
> 300
tests unitaires
> 80%
couverture
de code
1 an de dev
33
LegacyBundle :
75% des devs
> 10 contributeurs
>...
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 VanWerkhoven
Product Owner
Olivier Versanne
Scrummaster
Mickael Labrut
B...
R2D2 to BB8
R2D2 to BB8
R2D2 to BB8
Prochain SlideShare
Chargement dans…5
×

R2D2 to BB8

2 435 vues

Publié le

La migration continue d'un vieux projet n’est pas une mince affaire. En premier lieu, il faut définir un périmètre minimal de fonctionnalités à transférer de l'ancien projet au nouveau, et mettre de côté celles qui s'avèrent obsolètes pour enfin intégrer les nouveaux besoins.

Mais dans ce processus déjà complexe, que faire des données existantes et comment les adapter à la nouvelle structure ? Comment conserver la synchronisation des données entre les deux projets ?

Nous verrons ensemble comment LaFourchette a choisi de répondre à ces problématiques dans le cadre de la refonte d’une de leur principale application de Symfony 2.0 vers Symfony 3.

Publié dans : Technologie
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 435
Sur SlideShare
0
Issues des intégrations
0
Intégrations
475
Actions
Partages
0
Téléchargements
18
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

R2D2 to BB8

  1. 1. Migration vers Symfony 3 d'une application B2B de LaFourchette R2D2 to BB8
  2. 2. Paulo Coelho
  3. 3. Vincent Chalamon Lead Developer chez Les-Tilleuls.coop @vincentchalamon github.com/vincentchalamon
  4. 4. Guillaume Voisin Lead Developer chez LaFourchette @guillaumvoisin github.com/guillaumevoisin
  5. 5. 450k résas par mois 12++ pays 32k restaurants 70++ développeurs
  6. 6. Nombreux usages Utilisateurs++ Internationalisation
  7. 7. R2D2 La V2 actuelle
  8. 8. The Fork Manager 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
  9. 9. The Fork Manager V2 R2D2 > La V2 actuelle Dette technique conséquente Difficultés de mise à jour Nombreux projets inter-dépendants Fonctionnalités obsolètes non ergonomiques 9
  10. 10. The Fork Manager V2 R2D2 > La V2 actuelle 10
  11. 11. BB8 La V3
  12. 12. The Fork Manager V3 BB8 > La V3 Contenu Plan de salleMarketing & CRM Stats Réservation
  13. 13. Partir sur de bonnes pratiques BB8 > La V3 Sémantique Approche MVPPenser durable : refactos Proposer des POC Échouer c’est cool ! Qualité : TU, TF 13
  14. 14. BB8 > La V3 TwGit 14 API SPA Et pour les fronts…
  15. 15. BB8 > La V3 V2 APP Loaders Transformers Double écriture 15 V3
  16. 16. LegacyBundle BB8 > La V3 Isoler les développements 16 Désactivation du LegacyBundle Mapping entités V2
  17. 17. BB8 > La V3 17 Données importées Restaurant Réservations Description Horaires ouverture Horaires fermeture Clients
  18. 18. Loaders
  19. 19. ● Commande Symfony ● 1 loader par entité ● Priorité définie pour chaque loader Loaders Loaders Registry Loader 19
  20. 20. V2 Loaders INSERT INTO v3.restaurant… SELECT v2.restaurant… Loaders 20 V3
  21. 21. 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
  22. 22. Compliqué parfois le Loader peut être
  23. 23. Exécution des loaders en production Loaders ● Charger l’intégralité des données = 9 jours Migration progressive 24 Interruption de service
  24. 24. V2 Loaders Client 3 Client 1 Client 2 25 V3 Migration progressive
  25. 25. Transformers
  26. 26. Transformers V2 V3 27 Transformers
  27. 27. Double écriture
  28. 28. Double écriture 31 V2 APP Transformers V3 Double écriture POST http://api.tfm3-lafourchette.com/restaurantsPUT http://api.tfm3-lafourchette.com/restaurants/legacy/3
  29. 29. Bilan
  30. 30. Bilan Bilan > 300 tests unitaires > 80% couverture de code 1 an de dev 33 LegacyBundle : 75% des devs > 10 contributeurs > 150 tests fonctionnels
  31. 31. Conseils de Jedi Bilan 34 “Une étude approfondie du Legacy tu feras” “En conditions réelles tu testeras” “Prudent tu seras”
  32. 32. @TheFork_tech https://joind.in/talk/e08a1 Michiel VanWerkhoven Product Owner Olivier Versanne Scrummaster Mickael Labrut Backend lead developer Guillaume Voisin Backend lead developer @guillaumvoisin Vincent Chalamon Backend lead developer @vincentchalamon Gregory Copin Directeur technique @gregcop1 Dimitri Hautot Frontend developer @Dhautot Matteo Reinerio Frontend developer @zippymat Alexis Tondelier Frontend lead developer @AlexisTondelier Cédric Déserville Backend lead developer @talumn #MayTheForkBeWithYou @coopTilleuls

×