La parole est aux speakers : Mathieu Ferment

Publié le

Jusqu’à l’AFUP Day 2021, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Retour d’expérience: CQRS à la rescousse de PrestaShop pour migrer vers Symfony

Migrer une application d'un framework maison vers Symfony est devenu un classique dans le monde PHP. L'équipe PrestaShop a commencé une telle migration en 2016 avec la difficulté supplémentaire que l'application est un CMS open source PHP fondé en 2007.

Le chantier est immense, et nous procédons donc par étapes. C'est ici que l'introduction de CQRS dans notre architecture nous a grandement aidé à mettre en place une communication efficace entre les composants migrés et les composants legacy. Cette frontière est flexible et permet de remplacer un à un les composants legacy par des composants modernes avec une grande facilité.

Plutôt que de présenter CQRS qui a déjà été introduit, étudié et décrit par de nombreuses autre conférences, je propose d'aborder "le vif du sujet": les difficultés, les pièges, les erreurs que nous avons commises ... et (heureusement) les résultats positifs amenés par l'usage de CQRS.

Lille
28/05/2021
14:05-14:45

Au sein de Prestashop, vous avez choisi le modèle d’architecture CQRS pour votre refonte, pourquoi ce modèle en particulier et pas un autre ? Avez-vous évalué d’autres modèles pour vous conforter dans votre choix ?

PrestaShop est confronté à un challenge de taille: nous migrons l’architecture vers Symfony, ce qui implique de changer énormément de choses de manière non rétrocompatible, alors que c’est un enjeu majeur pour un projet open source. La migration introduit des Breaking Changes, qui doivent être gérés par tous les utilisateurs du projet qui s’appuient dessus : modules, thèmes, intégrateurs…

Nous savons que cela recommencera. PrestaShop aura encore besoin d’évoluer, et aura encore besoin de modifier des composants importants de son architecture après cette migration. Comment faire pour avancer sans systématiquement introduire d’importants Breaking Changes, mal accueillis par la communauté?

CQRS nous a apporté une solution élégante à ce challenge : il isole le domaine de l’application, ce qui permet de faire évoluer le domaine tout en gardant une promesse de compatibilité sur les commandes et les queries. Le domaine isolé peut être retravaillé sereinement : tant que le contrat des Commandes et Queries est respecté, les modules, thèmes, intégrateurs qui s’appuient dessus ne subissent aucun Breaking Change.

Et au passage les Commandes et Queries font office de SDK pour les utilisateurs.

C’est donc amusant : nous n’avons pas du tout choisi CQRS pour les raisons habituelles (introduire de l’asynchrone, séparer le modèle de données de lecture et le modèle de données d’écriture…) mais pour sa capacité à isoler une partie de la codebase derrière une interface claire et figée. Nous avons choisi CQRS pour ses bénéfices sur l’architecture, pas ses bénéfices sur la base de données.

Chez Prestashop, vous avez décidé de créer des ADR pour cadrer les développements à venir, et partager les intentions à la communauté. Récemment une discussion s’est ouverte pour donner encore plus de rigueur au système en le limitant dans le temps. Peux-tu nous en dire plus ?

Nous sommes convaincus que les ADR sont importants pour nous et la communauté afin de laisser une trace des décisions prises. Par contre nous n’avons pas encore trouvé un moyen efficace de les porter jusqu’à un vote. Un ADR chez PrestaShop, c’est une sorte de RFC avec à la clé une décision collégiale : il faut que chaque mainteneur prenne de son temps pour le consulter, donner son opinion, et finalement voter. Or le temps est ce qui manque le plus à un mainteneur PrestaShop ! Il y a tant à faire, nous avons du mal à réunir le temps de chacun sur un sujet commun.

La discussion que j’ai ouverte va finalement être close car après discussion avec les autres mainteneurs, nous pensons que les inconvénients d’une limite de temps sont plus grands que les bénéfices. Nous allons essayer un autre mode de fonctionnement où chaque ADR est assigné à un mainteneur qui doit le “porter” comme un projet, c’est-à-dire relancer ses pairs mainteneurs, pousser la réflexion, créer des réunions si nécessaire… on ne se limite finalement pas dans le temps ; par contre, quelqu’un est chargé de pousser le sujet pour qu’il ne stagne pas.

Comment s’est adapté Prestashop en tant qu’éditeur pour s’organiser en cette période de COVID ?

Nous avons eu de la chance : PrestaShop avait déjà adopté le télétravail bien avant le Covid, particulièrement dans les équipes techniques. Dans l’équipe Core, qui travaille sur le projet open source, deux tiers des effectifs étaient déjà des télétravailleurs à temps complet, nous n’avons eu aucune difficulté à sauter le pas. De toute façon travailler sur un projet open source impose de travailler avec des gens dans le monde entier, avec des fuseaux horaires variés, avec une culture de toujours documenter et écrire le fruit des discussions.

Les équipes de l’entreprise qui ne l’avaient pas encore expérimenté ont pu s’appuyer sur l’expérience des autres: tout le monde s’est mis à Slack, Miro, Meet et Zoom, et ça s’est fait très naturellement.

Une conférence présentée par

Mathieu FERMENT
Mathieu FERMENT
Développeur senior / mainteneur dans l'équipe Core du projet open source PrestaShop (CMS e-commerce).

Autres interviews

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :