Forum PHP 2021

Suite à une année 2020 pleine de visioconférences, nous avions plaisir à nous retrouver en présentiel pour cette édition 2021 du Forum PHP au Centre des Congrès Novotel Paris-Est.  Pour cet évènement organisé par l’AFUP, l’équipe est enthousiaste de vous présenter notre retour d’expérience et les différents sujets qui nous ont marqués.

JOUR 1

Vers la sobriété numérique

Nous avons commencé cette première journée de conférences avec celle de François Zaninotto qui nous parle de l’enjeu écologique dans la conception de solution numérique. Il nous a présenté plusieurs bonnes pratiques pour réduire l’impact environnemental ainsi qu’un outil qui nous permet de mesurer pour chaque site la production de CO2, GreenFrame : https://greenframe.io/

Symfony 6 : le choix de l’innovation et de la performance

Nous enchaînons ensuite avec la traditionnelle conférence sur Symfony présentée par Nicolas Grekas où nous avons pu découvrir la dernière version.

Symfony 6.0 sortira au mois de Novembre 2021 :

Symfony releases calendar

Le plus gros changement dans cette version est la compatibilité avec php 8 et donc l’ajout des types dans les propriétés, arguments et valeurs de retours des méthodes à chaque fois que c’est possible.

Et une des nouveautés très appréciée par les développeurs sera l’arrivée de l’auto-complétion dans le terminal pour les commandes Symfony :

Kairoi, et PHP se réconcilie avec les tâches planifiées

Julien nous fait un retour sur la présentation d’Emeric Kasbarian et Jérémy James, qui sont venus nous présenter un outil de planification de tâches qu’ils ont développé ensemble.

Ils nous ont présenté la genèse du projet, leurs débuts dans le développement de l’outil jusqu’à la mise en production.
Tout a commencé lorsqu’un de leurs projets avait besoin de planifier des tâches de différentes manières sur leur site web écrit en PHP, par exemple l’expiration des coupons au bout d’un certain temps. C’est depuis ce jour qu’Emeric et Jérémy se sont interrogés sur les différents systèmes de planification de tâches qui existent à ce jour.

Quasiment tous les développeurs connaissent le fameux CRON qui est un outil qui, je cite, « permet aux utilisateurs des systèmes Unix d’exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l’avance ou selon un cycle défini à l’avance ». Le problème de celui-ci est qu’il n’est pas assez configurable facilement.

C’est pour cela que les deux développeurs ont créé un serveur écrit avec le langage Rust qui s’occupe de gérer l’exécution des tâches ainsi qu’un client PHP très léger qui permet d’envoyer des requêtes à ce serveur. D’une part il est possible de créer plusieurs clients, de langages différents, car le serveur communique à travers un protocole bien défini. Les jobs exécutés sur le serveur ont la garantie d’être exécutés au moins une fois après la date souhaitée. Il est possible d’avoir plusieurs runners avec RabbitMQ, de plus le serveur Kairoi assure que le traitement soit réalisé de manière atomique.
Pour ce qui est du client, le projet kaoiri-php disponible sur Github, permet de créer des jobs/rules très simplement en utilisant peu de classes.
En conclusion, Kairoi est une bonne nouvelle pour l’écosystème PHP puisqu’il apporte un nouvel outil robuste, efficace et simple d’utilisation pour de la planification.

Du Domain-Driven-Design avec API Platform

Sébastien a choisi de nous parler de la conférence sur le DDD avec API Platform, présentée par Mathias A. et Robin C. de la scoop Les-Tilleuls.

Les conférenciers ont commencé par nous expliquer ce qu’est ce Domain Driven Design et nous ont ensuite montré comment intégrer cette approche à API Platform qui est un framework orienté RAD.
 Le but de cette approche est de mettre le métier au centre de l’application. Ils ont continué par nous parler de l’architecture hexagonale et de comment organiser son code et l’architecture du projet.

L’architecture Hexagonale est composée de 3 couches :


  • Domain : La couche domain représente les informations relatives au métier et dont le but est d’isoler le domaine métier de l’extérieur (Models, Repositories, Events).
  • Application : La couche application sépare le monde extérieur du métier et c’est elle qui coordonne les interactions avec la couche domaine (DTOs, Commands, Queries).
  • Infrastructure : La couche infrastructure sert principalement à fournir des outils pour établir des liens entre les différentes couches (Controllers, Caches, Databases).


En mettant en place ce type d’architecture, l’intégrité du domaine est préservée, le code est plus testable et le domaine est séparé du monde extérieur. Nos deux speakers sont partis d’un exemple très simple : ils avaient une entité sur laquelle ils ont découplé Doctrine et le lien qu’a cette entité avec API Platform dans des fichiers séparés. En faisant ça, le lien entre l’entité, Doctrine et API Platform ne se fait plus dans un même fichier mais dans plusieurs fichiers; l’entité se trouve dans la couche Domain et les fichiers contenant la configuration de doctrine et d’API Platform se trouvent dans la couche Infrastructure. Ensuite, un Bus (fournis par le composant Messenger de Symfony) se charge de faire la liaison entre la couche Domain et la couche Infrastructure.
 Au final, le résultat reste le même, mais le fonctionnement est différent.


Pour conclure sur cette conférence, celle-ci nous a permis de nous perfectionner sur le DDD ainsi que sur sa mise en place grâce à la découverte d’une solution utilisant cette approche.

JOUR 2

Synchroniser ses applications plus rapidement avec du low-code

On commence ce 2ème jour avec la conférence de Grégory.

Synchroniser les données entre plusieurs applications est une problématique que de nombreux e-commerçants ont déjà rencontrée. Nous avons pu voir les différentes problématiques rencontrées lors de mises en place de solutions e-commerce connectées avec des logiciels de caisse, des gestionnaires de catalogue et/ou des bases de données de client. (ex: les préparateurs ne reçoivent plus les commandes, vente hors-stock…).

Ensuite, nous avons pu découvrir la méthodologie l’ETL (Extract Transform Load) qui permet de mettre en place une séquence d’opérations portant sur les données à manipuler et à transférer. Nous avons également fait un tour d’horizon des solutions existantes permettant de faire de l’ETL pour répondre aux interrogations citées précédemment. Mais ces différents outils ne répondaient pas à toutes les problématiques, Grégory a donc conçu un éco-systeme de composants ETL et c’est comme cela que Gyroscops est né.

Les différentes composants classifiés de Gyroscops

Grâce à ces composants, il est désormais possible de mettre en place des outils indépendants autour de vos applications existantes appelés Satelittes. Ces Satellites peuvent ensuite communiquer entre eux, être « monitorer » en créant des journaux (logs), en gérant des rejets de traitement et en suivant les états d’exécution.

Cet outillage permet de configurer facilement des flux de données avec le language YML pour ensuite générer le code PHP. Ce code généré sera utilisé dans ces Satellites. Cette approche permet de réduire la complexité et de facilité la maintenance. Dans un futur (très) proche, une interface utilisateur permettra de configurer ces fichiers YML et donc de générer ce « low-code » très facilement.

Sylius sans e-commerce pourquoi et comment ?

Xavier nous fait un retour sur la présentation de notre ami Maxime Huran qui nous parle de Sylius sans e-commerce.

Maxime nous a présenté une approche surprenante de Sylius en lui retirant les fonctionnalités e-commerce pour en faire une application front et back-office pouvant servir de CMS ou de solution métier. Après plusieurs années d’utilisation de Sylius pour du e-commerce,  Maxime et l’équipe de Monsieur Biz ont conçu plusieurs extensions sur cette solution qui a fait ses preuves et continue son bout de chemin à la vitesse d’une fusée !

Un « plugin Sylius » est simplement un bundle Symfony dépendant de Sylius, voici une liste des différents plugins Sylius vus lors de cette conférence :

  • Admin Better Login qui permet de personnaliser la page de connexion,
  • Rich Editor qui permet d’avoir des contenus avancés via un éditeur « riche »,
  • Home Page qui permet d’administrer la page d’accueil,
  • CMS page qui permet de créer des contenus avec Rich Editor,
  • Menu qui permet d’administrer les différents menus frontend,
  • Alert Message qui permet d’ajouter un message d’alerte sur le front en haut de page, 
  • Settings qui permet d’avoir une interface pour ajouter des réglages par canaux,
  • No Commerce qui permet de désactiver les fonctionnalités e-commerce.

Une panoplie d’outils très intéressant qui risque d’envahir de nombreux Sylius. Pour ceux qui veulent en savoir plus, vous pouvez retrouver les slides de la présentation de Maxime sur son site ainsi que le projet complet qui a été présenté sur ce dépot GitHub.

L’architecture ESA : le futur des API web

Pendant que certains étaient à la conférence sur Sylius, Clément était dans l’autre salle pour suivre celle de Kevin Dunglas.

ESA (pour Edge-Side APIs) est une nouvelle architecture d’API web, combinant des technologies existantes, certaines déjà en place dans les navigateurs, d’autres créées par Kevin Dunglas et d’autres encore inspirées de l’écosystème Javascript. Cette architecture a pour but de créer des applications plus rapides et moins énergivores.

Les piliers d’ESA sont :

  • la pré-génération (compilation) des fichiers JSON : l’utilisateur reçoit la donnée aussi vite que possible même si elle n’est pas totalement à jour, et sa requête reconstruit un nouveau cache pour la personne suivante.
  • les ressources atomiques, c’est à dire le morcellement des documents en plusieurs petits fichiers pour tirer parti du multiplexing de HTTP 3, et aussi pour limiter la pré-génération à quelques fichiers essentiels.
  • la progressivité, c’est à dire assurer le fonctionnement quelque soit la plateforme et ses fonctionnalités, pour ne pas restreindre l’application aux nouveaux appareils, et si possible ralentir notre consommation de nouveaux appareils.
  • le pré-chargement, notamment avec un nouvel attribut qui indique au navigateur quelles pages et ressources sont essentielles et doivent être téléchargées dès la première visite.
  • le push, c’est-à-dire dynamiquement renvoyer des données à jour quand elles changent, grâce au protocole Mercure et Websocket.

Ces plateformes d’APIs ont ensuite vocations à être déployé sur des serveurs d' »Edge Computing », une nouvelle sorte de CDN dont le but est d’être aussi proche possible géographiquement des utilisateurs, pour réduire le temps de chargement et la consommation d’énergie et augmenter la redondance.

Qualité front, pourquoi c’est aussi le travail du dev back !

En cette fin de 2ème jour, nous avons pu assister à la conférence de Martin Supiot et Elie Sloïm. Ils nous ont parlé de différentes règles pour améliorer nos sites. Martin et Elie nous ont montré des bonnes pratiques illustrées par des contre-exemples tel qu’un message d’erreur non parlant pour l’utilisateur.

Au fil des années, Elie Sloïm avec sa société Opquast ont constitué une check-list de bonnes pratiques ergonomiques, de SEO, d’éco-conception, d’accessibilité, de performance et de sécurité. On vous conseille vivement d’utiliser cette liste sur vos projets : OpQuast Checklist.

En conclusion

Ce Forum PHP 2021 fut un grand cru, riche en apprentissage (comme chaque année) où toute l’équipe technique a pu échanger avec des confrères et participer à des conférences sur divers sujets toujours autour de notre langage préféré : le PHP.

Un grand merci à tous les bénévoles de l’AFUP sans qui cet événement n’aurait pas eu lieu. On se donne rendez-vous l’année prochaine dans un nouveau lieu :