Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

R2D2 to BB8

2 725 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
  • Soyez le premier à commenter

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

×