31/10/2018 6 Minutes read

Symfony Live 2017

Retour de la conférence Symfony Live 2017 par William Jehanne
Symfony Live 2017

Sensiolabs a organisé la neuvième édition du Symfony Live à Paris. Cette année a été marqué par la version 4 du framework PHP. L’équipe d’ekino s’est rendue à la Cité Universitaire de Paris les 30 et 31 mars derniers pour suivre cet événement.

Jour 1

Symfony 4 : Make Symfony Great Again

Fabien Potencier, fondateur du framework Symfony, a ouvert les conférences du Symfony live par une keynote retraçant les fonctionnalités de la version 3 du framework et la nouvelle architecture de la version 4. Symfony 4 sortira avec une structure de répertoire retravaillée et simplifiée. Principalement des ajustements supplémentaires pour supporter les nouvelles fonctionnalités et les meilleures pratiques.

Une nouvelle structure

Symfony 3 est livré avec une structure de répertoire légèrement différente de Symfony 2. La version 4 continue avec une architecture en s’appuyant sur une architecture de type UNIX :

  • Un nouveau répertoire etc. / équivalent au répertoire existant app/config/ a été ajouté. Mais avec une disposition très différente. Parameters.yml et parameters.yml.dist ont disparus.
  • un fichier .env est apparu pour gérer les variables selon les environnements, le parameters.yml devient moins central.

Symfony Flex

L’équipe du framework a reconnu une lacune dans son offre. Lors de l’installation d’un bundle nous devons suivre une procédure assez laborieuse (ajouter le routing, activer le bundle dans le AppKernel). Symfony Flex permettra l’installation du framework avec une configuration à partir de zéro. Cela se fait à l’aide d’un plugin Composer. Vous allez simplement installer des paquets avec Composer et, si le bundle le prend en charge, Composer va également créer le code ainsi que la configuration nécessaires pour l’intégrer.

Symfony Flex s’appuie désormais sur le symfony/skeleton. PHP 7 sera nécessaire pour cette nouvelle version.

À la découverte du composant Serializer

Depuis Symfony 2.7 le composant serializer est devenu une véritable alternative au bundle JMSSerializer. Grégoire Pineau nous a présenté les fonctionnalités méconnues du composant Serializer. Après un rappel sur les fondamentaux, il nous a montré comment nous pouvions manipuler tous types d’objet PHP : getters / setters, propriétés publiques, proxys.

Nous avons vu ensuite les différents formats supportés par le composant symfony/serializer JSON, XML, YAML et CSV.

Nous avons vu aussi des cas d’utilisations plus complexes tels que choisir les propriétés à sérialiser / désérialiser grâce aux groupes ou encore gérer les références circulaires.

Grâce aux tags Varnish, j’ai switché ma prod sur Raspberry Pi

Jérémy Derussé nous a présenté comment optimiser les performances de nos applications avec les tags Varnish. Il nous a montré que nous pouvions définir les ressources que nous souhaitions flusher et ainsi comment invalider notre cache pour ces ressources. Il suffit pour cela d’ajouter des tags dans les headers de nos réponses en utilisant des listeners. Puis d’ajouter un autre listener sur le onFlush pour demander à Varnish de flusher la ressource qui a tel ou tel tag. Pour conclure, si on gère bien notre cache nous pouvons faire tourner notre application sur une Raspberry Pi.

JWT – Sécurisez vos APIs

Conférence présentée par André Tapia sur, JWT, un standard qui repose sur une RFC et qui fournit un moyen d’authentification avec token sécurisé pour webservices, plus simple à mettre en place que de l’Oauth.

JWT se base sur l’échange d’un token (header+payload / signature) pour l’authentification puis d’un token dans un Bearer (passé dans le header) à chaque appel et un système de refresh pour re-générer le second token si celui-ci est expiré.

JWT est intégré dans Symfony avec le composant Guard.

Micro-Services Symfony chez Meetic : retour d’expérience après 2 ans de refonte !

Étienne Broutin, nous a présenté son feedback sur ces deux dernières années de développement chez Meetic. Et comment son équipe est passée d’une architecture avec une API monolithique en micros-services Symfony.

Utiliser Webpack dans une application Symfony

Depuis Symfony 2.8, Assetic le gestionnaire d’assets PHP n’est plus inclus par défaut dans la Standard Edition. Alain Hyppolite nous a montré comment utiliser alors webpack pour packager nos assets afin de migrer étape après étape à une application Symfony avec Webpack du dev à la prod.

Introduction to CQRS and Event Sourcing

Samuel Rozé a présenté une conférence sur le Command Query Responsibility Segregation et l’Event Sourcing. Pour nous rappeler que le but premier d’une application est de répondre à une problématique business mais aussi aux événements générés par un utilisateur.

Les nouveautés de Symfony 3.3

Sarah Khalil a fait un point sur les dernières nouveautés et fonctionnalités présentes dans dans Symfony 3. Avec 4 nouvelles versions mineures : 3.0, 3.1, 3.2, 3.3. Une pelleté de releases: 70 versions.

  • SYMFONY__ ne sera plus interprété, il faut utiliser %env()% (à partir de 3.2)
  • Il est possible de générer le cache complet pour exécuter l’application sur un système read-only
  • Composer a pris le relais du composant ClassLoader
  • Mis à jour de la logique de l’autowiring
  • Récupération des flash messages plus facilement
  • Dénormalisation des usernames in-memory
  • Encouragement à l’utilisation de l’AbstractController
  • Linter Xliff
  • Recherche dans le contenu d’un dump() avec la WebDebugToolbar, le profiler ou une page
  • Nouveau data collector: cache
  • Plus besoin d’activer les bundles un à un, une nouvelle class Fullstack pour vérifier si tout symfony est installé
  • PSR 16 (Sauvegarder, récupérer et supprimer un élément du cache)
  • Déplacement du code du WebserverBundle
  • Log automatique des erreurs console
  • Fully-Qualified Class Name comme id de service
  • 2 nouveaux composants Lock et Dotenv

Jour 2

Plein d’entrain, nous voici de retour, pour affronter le second jour. Les lecteurs assidus auront sans doute pu noter un changement dans le style littéraire, c’est en effet car nous sommes deux auteurs pour ce billet de blog (on a fait des sous-tâches sur le ticket JIRA).

Qui veut gagner une carrière de développeur ?

Sous couvert d’une parodie de Qui veut gagner des millions ? l’équipe de CommitStrip nous a gratifié de questions / réponses souvent humoristiques, et parfois éducatives, sur l’univers du développement PHP et Symfony. Conférence featuring FabPot himself.

Architecture inutile ?

Jérôme Vielledent nous a justifié au travers de cette conférence la vente d’un architecte à des clients. Plutôt pratique pour convaincre, l’argument principal à en retirer est que la dette technique, ça pique. La leçon à en tirer, en définitive, c’est qu’il vaut mieux pour un client investir dès le début dans une bonne conception (avec des concepts comme DRY, KISS, SOLID ou autres), une bonne organisation de l’équipe technique et une bonne formation, de façon à éviter de se retrouver avec un projet qui ne sortira jamais.

Pause

C’était la pause. On a pris un café, et on s’est baladé sur les stands. Le café était drôlement bon d’ailleurs, avec des vrais baristas et tout. Ça valait le coup. Quentin en a aussi profité pour faire dédicacer des exemplaires du livre CommitStrip pour la moitié de la boîte. En tout cas c’était sympa !

Déployer une app Symfony dans un Paas

Ce retour d’expérience nous a permis d’avoir un benchmark entre les différentes solutions de PaaS, mais aussi de différencier un PaaS d’un SaaS ou encore d’un Patricia KaaS.

Sécurité Web : et si on continuait à tout casser ?

Alain Tiemblo a fait une conférence d’utilité publique (en tout cas pour le public du SFLive) : il nous a exposé les différentes failles de sécurité auxquelles étaient exposées les applications web, mais surtout comment les éviter ou les corriger. Et ça, c’était la conf “Bonne Action” de la journée.

On a donc vu les failles XSS, CSRF, les injections SQL ou encore le fonctionnement des Captcha.

Déjeuner

Quentin qui était présent la veille nous a dit “attendez quelques minutes avant de vous ruer sur les buffet, ils rapporteront des trucs après”. Il avait tort. On lui en veut un peu encore.

Créer des webapps modernes avec Symfony, ReactJS et API Platform

On connait assez bien Kevin Dunglas, et on surveille depuis un moment API Platform. En plus, on fait du Symfony, du ReactJS, des applications SSR, des APIs HATEOAS, donc ça tombait plutôt bien cette conférence. On n’a pas été déçus : API Platform permet de générer facilement et rapidement une API avec Symfony. Et la solution arrive avec un React Admin pour se plugger dessus facilement, qui est plutôt bien configurable. On aime, beaucoup.

Tout ce qu’un dev devrait savoir à propos d’Unicode

Bon, là-dessus, on va être honnête. On a vu le titre, on s’est dit qu’on allait faire la sieste. Même si on n’avait pas beaucoup mangé, on sortait du déjeuner, c’était risqué. Et en fait, Nicolas Grekas s’en sort très bien pour nous expliquer un sujet pas sexy du tout (à l’origine, maintenant on aime bien), et nous montrer les exemples d’application à PHP. Top conf, top orateur. Top tout quoi.

Optimisations de performances avec PHP7

Julien Pauli nous a expliqué comment fonctionnait PHP “under the hood”. Plutôt cool pour savoir comment faire des micro-optimisations, ou comprendre le processus de développement du langage.

Conclusion de ces deux jours

L’ambiance était au rendez-vous. Pour le premier jour, les présentations étaient axées sur les nouveautés du framework. C’était surtout une analyse de Symfony plus ou moins profonde, qui s’adressait autant aux novices qu’aux experts. Le deuxième jour, on retrouve des conférences plus techniques, offrant des astuces, des feedbacks et des nouvelles intéressantes qui vous font envie d’aller plus loin.

Vous pouvez retrouver l’ensemble des slides sur GitHub