Aller au contenu
AFUP AFUP Day 2025 Baromètre Planète PHP PUFA
 

Retour d'expérience : La migration d'un Zend Framework 1.12 vers Symfony

Description

MorningCroissant.fr est un site de location de logement longue durée. La première version du site, faite en ZF 1.12 commençait à être de moins en moins maintenable : non testée, code non optimisé, bugs... La refonte devient nécessaire, et le choix s'est dirigé vers Symfony 3 (dernière version majeure au moment du démarrage de la refonte). Nous verrons ensemble quelles sont les étapes qui ont fait de cette migration un succès, presque sans douleur.

Conférence donnée lors du AFUP Day 2019 Lille, ayant eu lieu le 17 mai 2019.

Informations complémentaires

Le speaker

Kevin VERSCHAEVE

Kevin est développeur Symfony chez SensioLabs depuis plus de 3 ans. Sur son temps libre, il développe des outils aussi bien inutiles qu'amusants ! Il aime les raccourcis clavier, le joli code (aucun lien fils unique), les références pourries et la bière belge.

Commentaires

Retour intéressant
Nicolas F., le 17/05/2019
Très bonne prez ? Il manquait peut être quelques explications un peu plus détaillées mais le temps imparti était court
Nicolas Dewez, le 17/05/2019
Il faut du courage pour venir présenter un sujet et surtout un retour d'expérience. Bravo pour ça. Toutefois, je le dois d'être honnête et de partager mon avis qui est très négatif. Beaucoup de choses approximatives, non justifiées ou fausses ont été dites. Indiquer que ZF1 n'est pas un framework qui gère les bases relationnelles est assez surprenant. Ça montre une méconnaissance de l'outils mais surtout de ce qu'est un framework PHP. C'est surtout faux et c'est vraiment dommage pour les jeunes qui se feront une fausse idée de se framework a cause de ça. Dire que ZF1 n'est pas compatible avec PHP7 est également faux. Et quand un visiteur indique durant les questions qu'il n'a jamais eu de problème, le speaker corrige en indiquant que ce n'était pas vraiment ZF mais une lib redis qui n'a concrètement rien a voir. Dommage. Indiquer que gérer un formulaire en ZF prends 3000 lignes de code alors que c'est quelques lignes en Symfony, c'est aussi faux. Tout comme Symfony, il existe Zend_Form depuis ZF1 pour gérer cela. En plus, le code n'est plus dans le contrôleur mais il existe toujours. Indiquer que l'on ne fait pas du scrum pour un projet de refonte iso-fonctionnelle sans justifier. Pourquoi ? Indiquer que le projet a été gelé durant 2 ans pour cette refonte et laisser penser aux développeurs de la salle que c'est normal est pour moi une aberration. Une refonte ne devrait pas se faire au détriment du développement de l'entreprise. On ne refont pas une application parce que l'on préfère Symfony a Zend mais parce qu'il y a un intérêt conséquent pour l'entreprise 2 ans a 2 développeurs, j'aurais aimer voir le gain (chiffré) de cette refonte sachant que tout était possible avec ZF1. Disponible pour échanger si tu le souhaites.
arnolem, le 17/05/2019
Je me spécialise en refonte et en legacy et j'ai, ainsi, eu pas mal de refonte à étudier et à mener. Les arguments n'étaient d'après moi pas pertinent et pourraient donner de mauvaises habitudes aux "jeunes" publics : - Le mieux est de tout refaire et utiliser des technos d'aujourd'hui - Le mieux est de bosser "tranquille" et demander au client de géler son activité, au moins, comme ça c'est plus simple. - Scrum ? pas besoin on est iso-prod - On fait certains copier/coller par manque de temps, mais de toute façon ca fait la même chose (une explication aurait été la bienvenue) Je connais peu ZF1, mais d'après certaines discussions par le suite de ce talk, je crois qu'il y a eu certaines erreurs d'analyse de ce framework. Mais sinon, en ce qui concerne le speaker, bonne aisance à l'oral, c'est jamais facile.
Dominique THOMAS, le 20/05/2019
Bonjour, Tout d'abord, merci pour vos retours. Je pense qu'il est nécessaire pour moi de clarifier certains points. - En effet, lorsque j'ai dit que ZF1 n'était pas compatible PHP7, j'ai oublié de préciser que c'était dû à une librairie que l'on utilisait. Étant arrivé sur le projet après son départ, je n'ai pas toutes les infos qui ont fait penser au client que passer sur PHP7 devenait impossible à cause de cette librairie. Quoi qu'il en soit, ils avaient déjà démarré la migration. - Je ne dis pas qu'un formulaire sous ZF prend 3000 lignes (d'ailleurs, j'ai bien précisé 200 pendant la conférence) mais bien que c'est ce que nous avions dans ce projet là, cf le disclaimer que j'ai fait au début, précisant que c'est "ce que nous avons eu, ça concerne ce projet dans ce contexte" etc... - Pour le scrum, j'ai dit que l'on n'en avait pas ressenti le besoin et insisté sur le fait que ce n'était pas une critique. Il n'y a aucun mal à faire du scrum, et aucun mal à ne pas en faire non plus. Aussi, j'ai bien dit durant le talk que cela ne nous était pas nécessaire car, le client savait comment prioriser les tickets et on savait les reproduire car on "ne fait que migrer", notamment en suivant le processus de réservation. - Concernant le gel du projet, j'ai là aussi insisté (peut être pas assez) sur le fait que c'était exceptionnel. Et que c'est pour moi un énorme avantage, car avoir à faire évoluer deux sites en même temps pourrait vite devenir ingérable. Aussi bien le patron que les commerciaux étaient conscients des enjeux, ça ne les a pas empêcher de se lancer. Encore une fois, l’intérêt était de pouvoir maintenir l'application plus facilement, ne plus avoir peur de tout casser à chaque nouveau développement, et aussi de recruter. - Dans tous les cas, l'application se devait de se refaire une beauté. Je ne vois pas l'intérêt de réécrire du ZF1 mal codé et ajouter des tests tout en restant dans un framework qui commence à dater, et qui n'est plus maintenu. On devait donc réécrire dans une nouvelle version, et le choix s'est porté vers Symfony comme expliqué durant la conférence. - "Le mieux est de tout refaire et utiliser des technos d'aujourd'hui" : Quand le site devient vieux, non maintenable, qu'on a du code mort à plusieurs endroits, je pense et je maintiens que oui en effet, c'est une très bonne solution. - Le copier/coller, c'est surtout pour l'anecdote et montrer qu'on n'à pas voulu perdre de temps sur des morceaux de code avec peu de valeur ajoutée, qui sont très facilement récupérable après la mise en prod. J'aurais peut être dû appuyer ce point là. Enfin, j'admet que j'ai commis une erreur concernant les relations entres les tables dans ZF1. Cela est bien possible, je ne me suis pas assez renseigné, je suis désolé si j'ai transmis de mauvaises informations. J’espère que ma réponse aura éclairci vos différents commentaires, et que vous comprenez bien que mon but n'était pas du tout de dénigrer ZF en faveur de Symfony, mais bel et bien de faire un retour d'expérience sur comment nous avons vécu et géré cette migration. C'était ma deuxième conférence, je suis conscient qu'il y a des choses à améliorer, mais le format de 20 minutes étant très court pour un tel projet sur lequel j'avais encore bien d'autres choses à dire, j'ai essayé de faire de mon mieux. Je me serais fait un plaisir d'éclaircir ces points après la conférence, si vous étiez venu en discuter avec moi, comme certains l'ont fait pour avoir plus de détails sur le déroulement. Merci encore, Kevin Verschaeve
Kevin Verschaeve, le 21/05/2019