Symfony Live, la conférence autour de Symfony, le célèbre framework PHP open-source, nous donne l’occasion une fois par an de découvrir l’avancée de ce dernier ainsi que les nouvelles tendances de la programmation web. Au programme de ce cru 2019 parisien, un certain nombre de conférences parlant d’API Platorm, d’Elasticsearch, du composant Messenger, de RabbitMQ, mais également d’architecture (backend/frontend séparés par une API REST) et de Javascript.Cette année, j’y étais avec Charly et je vous propose donc un retour sur les conférences qui m’ont le plus intéressé.

Keynote d’ouverture & Présentation Symfony MIME

Cette conférence de Fabien Potencier, créateur de Symfony, a fait le point sur un tout nouveau composant officiel de Symfony, Symfony MIME. Son but est de proposer une façon plus simple de gérer l’envoi de mails dans son application en proposant différentes abstractions basées sur SwiftMailer.

Au programme, un objet mail plus léger, une façon plus élégante de le composer, ainsi qu’un ensemble d’adaptateurs prêts à l’emploi pour gérer le transport (ex: SMTP, Google mail, API tierces…).

Puissant tout en restant simple d’utilisation, Symfony MIME propose visiblement une DX plus moderne que SwiftMailer. Une bonne nouvelle car cela permettra très certainement d’alléger des applications legacy et de partir sur des bases plus saines sur un nouveau projet.

Autour d’API Platform

API Platform est un framework d’API REST construit à partir de Symfony. Il permet de rapidement déployer différents points d’accès autour d’entités de Doctrine. Le créateur de ce framework, Kévin Dunglas, était présent pour nous présenter “Des apps Symfony sous stéroïdes grâce à Vue.js, Mercure et Panther !”. En effet, il a expliqué comment rapidement créer une application web classique (utilisant le design pattern MVC), en 5 minutes grâce à MakerBundle. Ensuite à l’aide d’API Platform et de Vuejs, il nous a démontré qu’il était possible de transformer cette application en un client riche Javascript qui communique avec une API. Enfin, il termina sur la présentation d’une autre de ses créations, Mercure, un protocole de transmission d’informations sur des clients connectés à l’application, simple à utiliser.

Nous sommes par la suite, rentrés un peu plus dans le détail avec la conférence “Leçon N° 139, API Platform ce n’est bon qu’à faire un POC, FAUX !” par Grégoire Hébert. Mise en place d’un système de message, de cache applicatif, spécification des droits de lecture/écriture, utilisation de Mercure plus poussée… Tout cela, nous a été présenté dans une démonstration technique des possibilités qu’offre API Platform.

Pour compléter les deux autres conférences, François Zaninotto, est venu pour nous montrer React-Admin. Il s’agit d’une librairie de composants React pour créer son espace d’administration sur un backend propulsé par une API REST ou GraphQL. De plus, tous ces composants ont été stylisés en appliquant le Material Design, permettant d’avoir rapidement une interface claire et lisible, tout en restant modulable.

État de l’art d’Elasticsearch avec Symfony

Le conférencier et consultant Damien Alexandre nous a exposé l’ensemble des bonnes pratiques pour la mise en place d’Elasticsearch dans une stack technique comprenant Symfony. Bien que très puissant, Elasticsearch fait souvent peur à cause de sa configuration difficile et chronophage, néanmoins nécessaire pour son bon fonctionnement et pour répondre aux besoins spécifiques.

Pour se simplifier la tâche, il est recommandé d’utiliser directement Elastica, le client officiel d’Elastic en PHP qui permet de traduire le fonctionnel en objet, très pratique dans une app Symfony. Pour tout le reste, Damien nous conseille ‘’le fait maison’’. Par exemple, pour la création des indexes et des requêtes, il préconise de construire d’abord les JSON avec Kibana (l’interface graphique d’Elasticsearch) et utiliser des classes codées à la main pour la transformation des données métier (se passer des Framework donc). Cela permet de garder un contrôle total des indexes Elasticsearch et d’éviter un certain nombre d’erreurs. Concernant la partie indexation, il préconise l’utilisation de worker asynchrone pour éviter les montées de charge trop importantes lors de la mise à jour des indexes.

Cette conférence était d’un côté une bonne piqûre de rappel sur le fait que Elasticsearch est un outil qui nécessite du temps pour sa mise en place, et de l’autre réaliste sur les dangers de trop abuser des surcouches dans des applications complexes.

Symfony et PHP-FIG

Si vous suivez un peu l’actualité PHP, vous avez certainement vu le coup de gueule poussé par Fabien Potencier sur les normes PSR 7 et 14 (respectivement HttpMessage et EventManager) et le départ de Symfony du PHP-FIG, responsable de ces dernières. Il a eu l’occasion de revenir brièvement dessus.

D’après lui, ces nouvelles normes ne concernent plus l’interopérabilité des framework/libs PHP mais l’uniformisation des composants. Pour les implémenter, une réécriture des composants “core” du framework sera donc nécessaire.

De plus, si tous les développeurs suivaient à la lettre toutes les normes PSR, la mixité des façons de faire s’en retrouverait réduite. C’est donc pour ces raisons que Symfony a décidé de quitté le PHP-FIG et de ne prendre que ce qu’ils jugent bon dans les différentes PSR. Ils ne sont visiblement pas les seuls car Doctrine et Laravel sont maintenant en dehors du projet eux aussi.

Do It Yourself, composants standalones et découplage

Telles étaient en tout cas les valeurs clefs de cette Symfony Live, que j’ai trouvé très réussie. Avec des conférences variées et enrichissantes, des briques technologiques novatrices et une bonne ouverture d’esprit (cf les présentations frontend et JavaScript), Symfony nous prouve encore une fois son investissement dans le web moderne. On sort de cet événement content de faire partie de cette communauté et quelques dolipranes plus tard, “survolté”.

Lien vers les slides de toutes les conférences : https://github.com/SymfonyLive/paris-2019-talks