R2D2 to BB8

Post on 14-Jan-2017

2.070 views 0 download

Transcript of R2D2 to BB8

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