Top Banner
Migration vers Symfony 3 d'une application B2B de LaFourchette R2D2 to BB8
35

R2D2 to BB8

Jan 14, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: R2D2 to BB8

Migration vers Symfony 3 d'une application B2B de LaFourchette

R2D2 to BB8

Page 2: R2D2 to BB8

Paulo Coelho

Page 3: R2D2 to BB8

Vincent Chalamon

Lead Developer chezLes-Tilleuls.coop

@vincentchalamon

github.com/vincentchalamon

Page 4: R2D2 to BB8

Guillaume Voisin

Lead Developer chezLaFourchette

@guillaumvoisin

github.com/guillaumevoisin

Page 5: R2D2 to BB8

450krésas par mois

12++ pays

32krestaurants

70++développeurs

Page 6: R2D2 to BB8

Nombreux usages

Utilisateurs++

Internationalisation

Page 7: R2D2 to BB8

R2D2La V2 actuelle

Page 8: R2D2 to BB8

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

Page 9: R2D2 to BB8

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

Page 10: R2D2 to BB8

The Fork Manager V2

R2D2 > La V2 actuelle 10

Page 11: R2D2 to BB8

BB8La V3

Page 12: R2D2 to BB8

The ForkManager V3

BB8 > La V3

Contenu

Plan de salleMarketing& CRM

Stats

Réservation

Page 13: R2D2 to BB8

Partir sur de bonnes pratiques

BB8 > La V3

Sémantique

Approche MVPPenser durable :refactos

Proposer des POC

Échouerc’est cool !

Qualité : TU, TF

13

Page 14: R2D2 to BB8

BB8 > La V3

TwGit

14

API

SPA

Et pour les fronts…

Page 15: R2D2 to BB8

BB8 > La V3

V2

APP

Loaders

Transformers

Double écriture

15

V3

Page 16: R2D2 to BB8

LegacyBundle

BB8 > La V3

Isoler les développements

16

Désactivation du LegacyBundle

Mapping entités V2

Page 17: R2D2 to BB8

BB8 > La V3 17

Données importées

Restaurant

RéservationsDescription

Horaires ouverture

Horaires fermeture

Clients

Page 18: R2D2 to BB8

Loaders

Page 19: R2D2 to BB8

● Commande Symfony● 1 loader par entité● Priorité définie pour

chaque loader

Loaders

Loaders

Registry Loader

19

Page 20: R2D2 to BB8

V2

Loaders

INSERT INTO v3.restaurant…SELECT v2.restaurant…

Loaders

20

V3

Page 21: R2D2 to BB8

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

Page 22: R2D2 to BB8
Page 23: R2D2 to BB8

Compliqué parfois le Loader peut être

Page 24: R2D2 to BB8

Exécution des loaders en production

Loaders

● Charger l’intégralité des données = 9 jours

Migration progressive

24

Interruption de service

Page 25: R2D2 to BB8

V2

Loaders

Client 3 Client 1Client 2

25

V3

Migration progressive

Page 26: R2D2 to BB8

Transformers

Page 27: R2D2 to BB8

Transformers

V2

V3

27

Transformers

Page 28: R2D2 to BB8
Page 29: R2D2 to BB8
Page 30: R2D2 to BB8

Double écriture

Page 31: R2D2 to BB8

Double écriture 31

V2

APP

TransformersV3

Double écriture

POST http://api.tfm3-lafourchette.com/restaurants PUT http://api.tfm3-lafourchette.com/restaurants/legacy/3

Page 32: R2D2 to BB8

Bilan

Page 33: R2D2 to BB8

Bilan

Bilan

> 300tests unitaires

> 80%couverturede code

1 an de dev

33

LegacyBundle :75% des devs

> 10 contributeurs

> 150tests fonctionnels

Page 34: R2D2 to BB8

Conseils de Jedi

Bilan 34

“Une étude approfondie du Legacy tu feras”

“En conditions réelles tu testeras”

“Prudent tu seras”

Page 35: R2D2 to BB8

@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