Retour d’expérience sur ces 2 jours et résumé de 7 conférences du Forum PHP 2021.
Dans cette conférence, François tire avec humour un tableau d’un numérique qui ne cesse d’être énergivore au point de dépasser dans quelques années les taux de rejet de CO2 du transport mondial. Devant ce futur peu enviable pour la prochaine génération, où développeuses et développeurs ne sauraient pas gérer cette transition de sobriété numérique, François ne se soustrait pas et nous livre quelques clés pour avancer dans le bon sens. Dans un premier temps, François cible la source la plus polluante de nos sites internet qui est le front (la partie visible à l’écran). Que cela soit l’écran allumé pour afficher un site internet, l’architecture ou le langage utilisé, il nous livre un panel de conseils qui peuvent être mis en place pour limiter l’impact écologique de nos applications web :
Si ces pistes d’amélioration peuvent aider, François va plus loin avec des notions plus radicales :
Enfin, pour nous aider, François nous propose un outil de mesure des émissions en CO2 d’un site internet développé par Marmelab : https://greenframe.io/. S’il ne fallait retenir qu’une chose pour qu’une nouvelle fonctionnalité soit verte: si vous n’en avez pas vraiment besoin, ne la faites tout simplement pas !
Il existe des librairies bien pratiques qui permettent, avec peu d’effort, de créer rapidement des CRUD avec interfaces d’administration, comme ce que propose Symfony EasyAdmin. Mais que faire lorsqu’une application devient trop spécifique pour un simple CRUD ? C’est à ce problème que Charles répond dans sa conférence en l’illustrant d’un retour d’expérience. Pour ce faire, Charles nous propose une méthodologie de transition CRUD vers une vision plus métier avec le Domain Driven Design.
Dans un premier temps, il propose d’organiser un « Event Storming » avec l’équipe de production et le porteur du projet dont l’objectif est de définir ensemble le lexique et les cas d’usage de l’application. S’ensuit un état des lieux du code pour permettre de détecter les règles métier qui pourraient se cacher dans des annotations de validateurs ou dans des événements branchés sur le cycle de vie du framework Symfony. Ensuite, avant de passer à la phase de refonte, Charles nous initie à l’utilisation des tests qui auront pour objectif de survivre après la refonte d’une portion de code, que cela soit des tests de fonctionnalité (avec Behat, Cypress …) ou encore des « Approval tests » qui permettent de garantir que le résultat avant et après soit toujours le même. Pour finir, on peut passer à la refonte du code en elle-même, mais pas n’importe comment ! En effet, Charles nous donne une fois de plus de bons conseils de refonte :
Il nous donne également une bonne technique pour palier le souci des entités Doctrine difficiles à transformer en vision DDD avec l’utilisation du modèle CQRS (Command Query Responsibility Segregation). Dans son exemple, cela permet de découper. On découpe une table de données en plusieurs petites tables, auxquelles on peut interfacer des entités d’écriture métier. On crée ensuite une vue agrégeant les différentes tables. Ainsi, on ne casse pas l’interfaçage avec l’entité historique, qui devient simplement une entité d’affichage Malin et élégant !
ESA est une nouvelle architecture, à l’approche novatrice, qui permet de créer des API plus fiables, plus performantes et moins énergivores. Lors de cette conférence, Kévin Dunglas nous expose différents moyens d’optimiser les APIs web, le tout en utilisant plusieurs outils web comme les CDN. Les CDN peuvent être utilisés pour « soulager » le serveur web grâce à leurs caches. Ces caches retourneront la ressource demandée, si celle-ci n’est pas considérée comme trop ancienne. Kévin nous présente également différentes façons de générer nos pages web :
Voilà une conférence qui nous a particulièrement parlée chez Dedi ? car elle répond, entre autres, à un besoin que tout e-commerçant rencontre à un moment donné : comment synchroniser les différents services, avec leurs différentes façons de dialoguer, à son site e-commerce ?
Au travers de sa montée en compétence sur les sujets de flux entre services, Grégory nous présente comment, lui et son équipe, ont fini par développer un ETL (Extract-transform-load) complet permettant de répondre à toute la complexité que de tels échanges peuvent engendrer alors qu’il pensait naïvement que la tâche serait aisée. Du nom de Gyroscops (https://php-etl.Github.io/documentation/), leur outil permet la récupération, la transformation et la restitution de données entre services, que cela soit sous forme de fichier à plat, CSV, API ou échanges FTP, le tout avec gestion des erreurs et relance le cas échéant. A date, Gyroscops embarque un bon nombre de fonctionnalités et de connecteurs, dont les deux qui ont attiré notre attention : Sylius et Akeneo. Le tout sous licence Open-source, donnant toutes les clés aux e-commerçants pour brancher leur Sylius avec leur PIM préféré.
Lire aussi | Sylius, la solution qui s’adapte à vos besoins e-commerce
Lire aussi | Le PIM, gestionnaire de vos informations produits
Enfin, cerise sur le gâteau, Grégory se paie le luxe de nous présenter un aperçu d’une version « low-code » de son ETL, à base de blocs à glisser-déposer et de liens à connecter entre eux.
WorkAdventure est un outil ludique, proche d’un mini jeu vidéo, qui vous permet de recréer un espace de travail virtuel. C’est sur cette plateforme qu’avait eu lieu l’édition virtuelle du Forum PHP 2020. Utilisant le moteur graphique Phaser, WorkAdventure propose une carte sur laquelle les utilisateurs peuvent se créer un personnage et discuter via un chat vidéo intégré dans la plateforme.
David nous a montré comment il est passé d’un mini jeu, à une plateforme pouvant accueillir plusieurs dizaines de milliers d’utilisateurs simultanément. Il nous a raconté tout le chemin parcouru par WorkAdventure, depuis son premier prototype jusqu’au jeu complet qui s’enrichit de jour en jour grâce à une communauté active et croissante (ajout de fonctionnalités, de cartes et autres). Au départ, le jeu connectait directement deux navigateurs entre eux. Mais au fil du temps, le jeu a pris de l’ampleur et les limitations techniques de ces échanges Peer to Peer se sont fait ressentir. David a donc dû utiliser différents types de serveurs (STUN, TURN, SFW) pour assurer une compatibilité maximale entre tous les navigateurs.
Présentée par Pauline Vos, cette conférence présente plusieurs commandes pour maîtriser l’historique de son dépôt Git. Dans un premier temps, Pauline nous a parlé de la commande Rebase en mode interactif qui nous permet de réorganiser et d’appliquer des modifications sur l’historique des commits. Pour l’utiliser, il convient de préciser un numéro de commit de départ ; tous les commits depuis ce commit et notre HEAD courant pourront être modifiés git rebase -i <ref>. Utile lorsqu’un changement non versionné concerne un précédent commit ou lorsque l’on souhaite réorganiser l’ordre de ses commits ! De multiples actions sont possibles : reformuler le message d’un commit, le fusionner avec le commit précédent, etc.
Pauline nous a aussi présenté la commande Git bisect qui permet de chercher un commit par dichotomie, utile pour trouver un changement qui introduit un bug. Cette commande s’utilise en précisant un commit de départ et un commit d’arrivée. Git va ensuite nous placer sur un premier commit entre les deux précisés précédemment. Il convient alors de communiquer à Git si le commit est « bon” ou « mauvais ». Cette opération est répétée jusqu’à trouver le commit fautif. Pour que la recherche fonctionne de manière optimale, il faut que les commits soient atomiques. Pour cela, les trois règles suivantes doivent être respectées :
Finalement, la conférence s’est finie avec une présentation de Git bisect en mode automatique. Git est alors capable de déterminer seul si un commit est « bon » ou « mauvais ». Pour cela, il convient d’utiliser une commande qui sera exécutée à chaque changement de commit. Le retour de cette commande est utilisé pour déterminer le résultat du commit. Ainsi, on peut exécuter de manière automatique des tests automatisés pour retrouver un commit fautif. Pour en savoir plus : https://www.pauline-vos.nl/fix-bugs-⚡-fast-with-regression-tests-and-auto-bisect/
PHP 8.1 introduit une nouvelle fonctionnalité : les Fibers. Benoît Viguier nous présente comment exécuter du code asynchrone grâce à cette nouveauté. Un objet Fiber met à disposition plusieurs méthodes pour démarrer, suspendre et reprendre la fonction avec laquelle il a été construit. Fiber est donc, pour faire simple, une API qui permet de rendre une fonction interruptible.
Le langage PHP étant « single threaded » il est impossible d’exécuter plusieurs fonctions en même temps. Fiber propose plutôt un moyen de démarrer, d’arrêter et de reprendre des processus. Exemple : l’optimisation du temps lorsqu’on attend la réponse d’une API externe ; en effet, l’API Fiber permet de ne pas bloquer le code au moment d’attendre une réponse. Il est à noter que c’est les fonctions elles-mêmes qui s’auto-interrompent, encore une fois,. C’est dû à la nature « single threaded » de PHP. De plus, il convient d’avoir une « event loop » qui orchestre les Fiber à exécuter. Pour ça Revolt PHP propose une implémentation disponible sur GitHub https://Github.com/revoltphp/event-loop. Pour conclure, Fiber propose un concept intéressant qui permet d’exécuter du code PHP de manière asynchrone. PHP étant « single threaded », il ne s’agit donc pas d’exécuter plusieurs lignes de code en même temps.
Ces 2 journées de conférences, discussions et retrouvailles se terminent. Quelle édition ! Partage et convivialité auront été les maîtres-mots. L’AFUP l’avait promis, l’AFUP l’a fait. Un grand merci à toute l’équipe de bénévoles pour l’organisation formidable et la bonne ambiance.
La Dedi team est heureuse d’avoir participé à ce salon en tant que sponsor et visiteur, et vous donne RDV l’année prochaine pour le Forum PHP 2022 !
Envie de papoter tech avec l’équipe ?
Quel est l’état du marché du e-commerce en 2024 et quels horizons sont à prévoir…
Shopify offre un écosystème riche d'applications compatibles, conçues pour personnaliser et optimiser votre boutique en…
La montée en popularité du No code ces dernières années a permis de faciliter l’accès…