Symfony Live Paris 2023 - jour 1

Les 23 et 24 mars derniers a eu lieu la conférence française dédiée à Symfony : Symfony Live Paris 2023. Plus de 500 personnes étaient rassemblées à la Cité Internationale Universitaire de Paris.

lieu

Cet événement est clairement une des mes conf préférées :

  • le lieu est magnifique
  • les talks sont de qualité
  • l’organisation est toujours impeccable
  • les membres de la core team de Symfony sont ultra accessibles et super sympas
  • c’est une conf majoritairement axée dev (forcément…), et c’est cool parce que je trouve que beaucoup de conf “généralistes” sont de plus en plus axées devops / infra et c’est dommage (avis personnel)
  • j’aime les conférences avec une seule track, ça me fait souvent découvrir des sujets que je ne serais pas aller voir si j’avais eu le choix

Bonus : cette année j’ai eu la chance d’être une nouvelle fois invité à présenter un sujet (deuxième fois après l’année dernière) à propos des génériques et de leur utilisation en PHP (mais c’est pour le jour 2).

Pour info, le hashtag Twitter/Mastodon pour suivre cette conférence est #symfony_live.

Keynote - le composant Scheduler

Par Fabien Potencier

keynote

Les keynotes de Fabien sont toujours chouettes, on se demande quels nouveaux composants on va avoir… Après nous avoir parlé un peu du composant Messenger et donné quelques bonnes pratiques à son propos, Fabien nous annonce un nouveau composant : Scheduler ! En simple, cela va nous permettre de faire du cron des tâches planifiées, sans cron. L’idée est de créer un message (Messenger) récurrent. Ce nouveau composant est finalement un type de transport de plus. Ce nouveau composant est vraiment prometteur et va probablement améliorer énormément la DX puisqu’on va pouvoir rapatrier ce qui concerne nos cron dans notre code.

Fabien conclut sa keynote avec quelques exemples d’implémentation et des conseils sur la programmation de ces tâches récurentes (par exemple de ne pas lancer ses tâches systématiquement à un horaire fixe, mais d’ajouter un petit écart aléatoire pour éviter les engorgements.

Mon avis

Comme d’habitude, agréable à suivre. C’est impressionnant comme Symfony est capable de réutiliser ses composants intelligemment pour éviter de réinventer la roue à chaque fois, et capitaliser sur ce qui a été fait auparavant.

Réinventer le composant Console de Symfony

Par Robin Chalas

Réinventer le composant Console de Symfony

Robin nous a raconté dans les grandes lignes l’histoire de ce composant : de son importance dans l’écosystème PHP à ses “problèmes” d’implémentation. Son importance car sur plus de 200 composants Symfony, c’est le plus utilisé (on parle de 500 millions de téléchargements quand même…). Il est utilisé par le “full framework” Symfony bien-sûr, mais aussi par Laravel par exemple et par … Composer. De ce fait, c’est un composant vraiment critique, et il est crucial de ne pas le casser (comme toutes les app vous me direz, mais là plus 😉). Aujourd’hui, son implémentation le rend difficile à faire évoluer sereinement. Et pourtant, ce composant continue d’évoluer : par exemple des améliorations de performance ont été apportées grâce au lazy loading de dépendances. Robin évoque aussi un parallèle entre contrôleurs et commandes, qui pourraient/devraient être relativement semblables puisque ce sont 2 points d’entrées, mais qui sont fondamentalement différents dans les faits.

L’idée de la refonte de ce composant à germé il y a quelques années après des discussions entre Robin et d’autres. Plusieurs axes de travail :

  • tout doit être déclaré via des attributs PHP
  • plus d"héritage de la classe Command

La refonte est encore en cours et devrait arriver dans la version 6.3. Robin précise qu’il n’y aura pas de BC break (en mode Symfony 🙂).

Mon avis

C’est très intéressant de se rendre compte des enjeux qu’il peut y avoir dans l’open source ! Robin nous l’a bien fait comprendre grâce à ce talk et clairement ce composant est un excellent exemple de ça. Son travail, et celui des autres contributeurs, vont probablement bien améliorer la DX lors de la création de commandes !

Bienvenue dans le monde merveilleux des systèmes distribués !

Par Pascal Martin

Bienvenue dans le monde merveilleux des systèmes distribués !

Beaucoup de choses dans cette conférence ! Après voir défini ce qu’était un système distribué, Pascal nous a fait un joli tour d’horizon des avantages mais aussi des inconvénients de tels systèmes. Difficile d’être exhaustif sur le sujet tellement il est vaste mais tout de même beaucoup de points ont été abordés :

  • la compléxité croissante
  • la communication entre app
  • le sharding des données
  • le scaling vertical/horizontal
  • le load balancing
  • le cache
  • la gestion des logs
  • les patterns outbox, saga et circuit breaker
  • les théoremes CAP et CAPELC
  • différence résilience (se remettre de ses echecs) et fiabilité (éviter les échecs)
  • le rate limiting
  • le load shedding
  • le random jitter
  • la cell-based architecture

Bref, impossible ici d’entrer dans les détails mais c’était très intéressant !

Mon avis

C’est une présentation qui pourrait être utile à beaucoup de monde (je m’inclus dedans 🤭) ! Pascal aborde les bases d’un système distribué sans se focaliser sur une techno en particulier et le fait de façon très accessible.

Il était une fois le composant Workflow

Par Florence Cauchy

Il était une fois le composant Workflow

Florence nous a fait un retour d’expérience sur l’utilisation du composant Symfony Workflow pour la gestion d’un panier e-commerce. Elle a commencé par nous expliquer son contexte métier, puis les notions de workflow et de machine à états (et notamment leur différences), et a fini par présenté le composant Workflow de façon générale. Ensuite, Florence nous a montré la mise en oeuvre de ce composant dans la gestion du panier :

  • le cycle de vie
  • configuration simple
  • configuration avancée
  • l’utilisation d’événements lors des changements d’état, des transitions, etc…

Mon avis

La présentation d’un outil, d’une techno c’est cool, mais les REX apportent toujours un plus ! Par exemple, Florence a fini par nous dire qu’après avoir utilisé un workflow, ils ont finalement switché vers une machine à état parce que ça convenait totalement à leur besoin, que c’était plus simple et qu’avec le composant de Symfony ça s’est fait sans douleur. Bref, très bonne présentation de ce composant.

Jongler en asynchrone avec Symfony HttpClient

Par Allison Guilhem

Jongler en asynchrone avec Symfony HttpClient

Après avoir présenté le composant Symfony HTTP-Client, Allison nous a parlé de la gestion des requêtes et surtout des réponses HTTP de façon asynchrone. Ceci en utilisant l’AsyncDecoratorTrait (fourni par ce composant). Grâce à lui, Allison nous a expliqué comment sur un projet elle a pu manipuler les chunks d’une réponse HTTP pour enrichir celle-ci en fonction de différents scénarios comme l’agrégation d’autres réponses pour compléter le contenu ou pour palier à une réponse en erreur par exemple.

Mon avis

Cette présentation était assez technique et c’est cool ! Allison m’a fait découvrir un aspect du client HTTP de Symfony que je ne connaissais pas et des usages auxquels je n’avais vraiment jamais songés : top 🤩

SQLite en production ? Et si vous réévaluiez vos options ?

Par Guillaume Loulier

SQLite en production ? Et si vous réévaluiez vos options ?

Guillaume nous a fait quelques rappels sur l’infra, qui faisait écho au talk de Pascal un peu plus tôt. Puis il a fait une présentation de SQLite, de son historique, ses capacités, ses avantages et ses inconvénients. Il a également expliqué pourquoi et dans quels contextes, une base de données SQLite pouvait être utilisée en production (ce n’est pas toujours adapté).

Mon avis

J’adore voir des présentations sur des bases de données qui sont des éléments capitaux de nos systèmes et elles sont tellement mystérieuses pour pleins de dev (je m’inclus encore dedans 🥲)… Et celle-ci était très bien !

Symfony et Hotwire : faire un front interactif sans trop d’efforts

Par Florent Destremau

Symfony et Hotwire : faire un front interactif sans trop d’efforts

Florent nous a montré comment se passer des framework JS type React ou VueJs et tout de même être capable de créer des pages web dynamiques de qualité grâce à Hotwire. En effet, il est possible de faire beaucoup de choses avec du JS très simple et un peu de rendering côté serveur (à l’ancienne quoi) grâce à 2 lib d’Hotwire : Turbo et Stimulus.js (d’ailleurs, Symfony UX se base sur ça). Florent nous a fait la démo de plusieurs cas d’utilisation simples et moins simples comme l’édition inline, la gestion des modals, …

Mon avis

Ne faisant plus du tout de front depuis des années, j’ai été très impressionné de voir ce qu’on pouvait faire aujourd’hui avec des lib très légères. On n’est pas obligé d’apprendre React ou Vue pour faire des trucs sympas en front 🥳 !

Conclusion

Programme jour 1

Fin de ce premier jour de conférences avec les lightnings talks qui étaient très cool et fun, suivi d’un apéro sur le lieu de la conférence ! Super journée, tout était très intéressant et bien présenté !