La semaine passée, nous étions à Paris pour cette édition 2024 de la SymfonyLive. Très heureux de rencontrer la communauté française de Symfony pour 2 jours de conférence 🏰
Au programme cette année, des talks sur des sujets aussi divers que variés :
- Un Serializer sous stéroïde,
- La prochaine révolution est en marche avec Symfony UX
- La hantise des Flaky Tests,
- Les PHP Attributes,
- Piqûre de rappel sur l’importance des Logs,
- Du Profiling en veux-tu en voilà,
- Les nouveautés Symfony 7.1
Jour 1
La conférence a débuté par une présentation de Fabien Potencier qui nous a parlé de Splitter Git utilisé lors du packaging des releases de Symfony (et ses nombreux composants). Il a ensuite continué avec une présentation du fonctionnement interne de Git, un sujet qui a particulièrement intéressé note Backend développeuse Justine, qui en a dédié une section complète, à lire ci-dessous.
Pour la suite de la matinée, approfondissement des architectures découplées et monolithiques avec Kévin Dunglas. Nous avons fini la matinée avec la présentation de Grégoire Pineau qui nous rappelle l’importance des Logs et comment mieux travailler avec ceux-ci. Une réelle révélation pour Kevin qui dédie à son tour un pan de cet article à découvrir quelques lignes plus bas.
Après cette belle première matinée, nous avons continué notre après-midi en parlant de rôles et permissions avec Robin Chalas. Nous enchainons avec la présentation de Baptiste Leduc et Mathias Arlaud sur les limites du Serializer Symfony et les peut-être futurs composants le remplaçant. Enfin, on termine cette première journée avec une présentation des VCRs par Ezzine Imen et une démonstration des Live Component par Simon André.
Jour 2
Après une bonne nuit de repos, nous commençons par prendre un croissant servi par un robot chat qui se baladait dans le hall. C’est parti pour la 2e journée !
Nicolas Grekas a commencé par nous faire une petite introduction sur comment contribuer à Symfony, il nous a ensuite présenté les nouveautés de Symfony 7.1.
Matheo Daninos, est venu nous apprendre à aimer le frontend. Et pour nous, dev backend, ce n’est pas gagné d’avance^^ Grande nouveauté de cette année, il nous a parlé de Symfony UX et comment nous pouvions rendre notre site interactif sans écrire une seule ligne de JavaScript avec des composants Twig et Symfony UX. Si si c’est possible !
Un talk très intéressant de Sofia Lescano sur l’instabilité de nos tests et comment ceux-ci nous empêchent de délivrer. Qui n’a jamais relancé un test 1x, 2x, 6x jusqu’à ce que ceux-ci passent. Inutile de vous cacher, on vous voit. Ces tests qui fail aléatoirement sont appelés des flacky tests et sont vraiment une plaie dans votre application. Sofia nous a expliqué comment construire des tests pertinents et éviter qu’il devienne flacky. Elle nous a aussi donné des pistes pour les résoudre sans perturber le processus de release de nos app.
Avec l’introduction au Continuous Profiling de Thomas di Luccio, nous avons découvert la notion d’Observability et les services proposés par plateform.sh. Des choses très intéressantes que nous pourrons mettre en place dans nos prochains développements.
Faites plus avec moins de code grâce aux attributs PHP de Jérôme Tamarelle. Les attributs, venus avec PHP 8, apportent une nouvelle manière de développer. Jérome nous a présenté les différents attributs de PHP et symfony et comment les utiliser. Un particulièrement intéressant qui devrait arriver dans les prochaines versions de PHP et qui a retenu notre attention est l’attribut #[deprecated]. Cela permettra une bien meilleure intégration à l’avenir.
Justine : Git Splitter
Fabien Potencier nous a donné une conférence très intéressante sur le Splitter Git et Splitsh.
En tant que dev, nous utilisons Git tous les jours. Mais est-ce que vous vous êtes déjà intéressé à son fonctionnement interne ? J’ai particulièrement apprécié que Fabien nous explique en détail le fonctionnement de Git et nous montre concrètement la manière dont Git stock nos modifications dans le système de fichier.
Le projet Symfony est structuré sous la forme d’un mono-repo. Pour les personnes qui participent au projet, ça présente l’avantage de simplifier le processus de contribution, les PR, la review, les tests, etc. Les nouvelles personnes peuvent également tout trouver au même endroit et cela facilite l’onboarding si vous souhaitez participer à ce projet open source.
Mais quand vous démarrez votre projet Symfony, vous n’avez pas besoin de l’ensemble des modules développé par la communauté. Vous souhaitez uniquement ceux qui sont pertinents pour votre projet. C’est pour cela que vous installez chacune des dépendances avec composer. Mais comment faire pour publier chacun des modules séparément sur packagist ? Car celui-ci demande un dépôt unique par module.
Et c’est là que splitsh-lite intervient ! splitsh-lite est une implémentation plus performante de git subtree split.
Git subtree est une extension de Git qui permet d’extraire un sous-répertoire d’un dépôt existant et d’en faire un nouveau dépôt Git indépendant. Lorsqu’on extrait un sous-répertoire, Git conserve l’historique des commits et des branches relatifs à ce sous-répertoire. Cela permet de garder la traçabilité et l’historique du code dans le nouveau dépôt.
Un sujet très dense qui m’a donné envie de creuser le sujet. Et qui nous permettra certainement d’améliorer la gestion de certains de nos projets mono-repo
Kevin : Vos logs méritent mieux que la config par défaut
Petite pépite de cette édition 2024 selon Kevin, la présentation de Grégoire Pineau à faire office d’électrochoc sur la manière d’aborder les Logs et l’importance d’implémenter ceux-ci dans toutes applications Symfony.
Que ce soit pour réagir à des comportements erratiques en production ou tout simplement pour garder une trace des bons fonctionnements, les Logs sont essentiels au bon déroulement d’un projet Symfony.
Mais évidemment des logs seuls, ça ne servirait pas à grand-chose. C’est pourquoi Grégoire nous a également sensibilisés à l’importance de gérer ses logs et les notifications de ceux-ci. Il faut impérativement mettre en place une architecture qui permet aux développeurs d’être alertés lorsque des erreurs se produisent, mais également de fournir des outils de visualisation rapide des Logs.
Unconference
Ce qui est bien aussi dans ce type de conférence, c’est la place donnée à des « Lighting Talks » de 10 ou 15 min. L’une d’elles a particulièrement retenu notre attention. Il s’agit d’une présentation donnée par Grégoire Pineau et le Task Runner Castor. Projet très intéressant puisque l’écosystème PHP possède désormais un Task Runner à proprement parler.
Les à-côtés
SymfonyLive ce n’est pas qu’une conférence, c’est aussi beaucoup plus ! On gardera longtemps en mémoire :
- Le service de haute qualité pendant la conférence (cafés, catering, repas variés)
- Une ville magnifique à explorer
- La cuisine française, riche, variée et haute en saveurs !