Lead developer web


#PHP #Symfony #RabbitMQ #Redis #Git #Nginx
#Performance #Quality #Testing

Retour sur la SymfonyCon Berlin 2016

PHP   Symfony   Evénement  

Les 1ier et 2 décembre derniers, la SymfonyCon Berlin 2016 a eu lieu au "Mercure Hotel MOA Berlin"

Pour ceux qui ne connaissent pas, ce rendez-vous est incontournable pour les fans et utilisateurs du framework. Différentes conférences sont proposées, les sujets tournant bien entendu autour de Symfony.

En avril dernier j'avais fait un retour sur le SymfonyLive, autre événement organisé par SensioLabs. La principale différence entre SymfonyLive et SymfonyCon est que le premier est national et la seconde internationale. Plusieurs SymfonyLive sont organisés durant l'année : Paris, Londres, Chicago, Cologne. Les conférences sont proposées dans la langue du pays hôte. Une seule SymfonyCon par an : le lieu change chaque année, les conférences sont en anglais.

Pour les 10 ans de Symfony, l'année dernière, la SymfonyCon s'était déroulée à Paris au "Théâtre des Folies Bergères". Cette année autre ville, autre ambiance puisque c'est dans un hôtel très spacieux et plutôt chic que cet événement est organisé.

Retour sur les conférences

Comme lors de chaque SymfonyCon, 2 "tracks" sont mis en place. Mes retours sur les conférences concernent bien entendu celles auxquelles j'ai pu assister.

Jeudi

Keynote

En ouverture de la SymfonyCon, Fabien a commencé par insister sur les efforts faits par la communauté pour améliorer le framework. Bien entendu quelques exemples ont été donnés.

Après un brin de nostalgie concernant la mise en production d'une application Symfony, Fabien nous a présenté le nouveau produit de SensioLabs : SensioCloud. Bien entendu, pas mal d'articles ont été publiés à ce sujet, voici un exemple.

Do not (always) use FOSUserBundle!

Damien a ensuite enchainé sur différentes explications concernant le bundle FOSUserBundle. Lors de cette présentation, celui-ci a pu indiquer ce que ce bundle proposait, comment le surcharger et une solution qu'il préconise dans la plupart des cas : développer soi-même son système qui sera plus adapté que FOSUserBundle. Cette solution se justifie par le fait que ce bundle est une implémentation très générique de la partie "utilisateur" d'une application et que sa surcharge implique de nommbreuses modifications, voire dans certains cas quelques points de blocages. A noter que des cookbooks existent pour guider les développeurs dans les différentes tâches (formulaire de login, sécurité, enregistrement etc.).

Making your applications work together through interoperability

Lors de cette conférence, Michael nous a expliqué l'utilité ainsi que le travail du groupe PHP-FIG. Pour résumer (très) brièvement, ce groupe définit des normes de développements que sont les normes PSR. L'objectif étant de faire en sorte que l'utilisation d'une librairie ou d'une autre n'impacte pas sur le bon fonctionnement d'une application. Dans un monde idéal, il serait même possible de changer de framework. Mais bien entendu, seuls 10% du code est "transposable".

Knowing your state machines

Ensuite, Thomas a pu prendre le relais. Lors de cette présentation il a pu nous présenter ce qu'était une machine à états et a ensuite enchaîné avec quelques exemples d'utilisation du composant Workflow de Symfony qui permet de répondre au besoin de modélisation de ce concept. A noter que ce composant devrait continuer d'évoluer.

A CQRS and Event Sourcing approach in a Symfony application

Lors de cette présentation, Samuel a pu nous présenter le pattern de développement CQRS (Command and Query Responsibility Segregation). L'objectif est de stocker les évolutions d'une donnée événement par événement. Ainsi l'exemple d'un déploiement a été pris et différentes parties de code ont permis d'illustrer le concept.

Lightning talks session

Le principe des lighting talks est de permettre à des personnes de s'exprimer sur différents sujets en 7 min chrono.

Voici les différents sujets abordés :

Vendredi

Après une première journée comportant une première annonce, c'est reparti pour la seconde journée de cette SymfonyCon.

Symfony Distributions Reloaded

Fabien nous a parlé de Symfony et de ce qui pourrait être amélioré. Par exemple, l'ajout d'un bundle dans un projet et sa suppression peuvent être plus ou moins longs / compliqués. En effet plusieurs étapes doivent être réalisées et pour les nouveaux venus cela ne semble pas être des plus évident.

Le sujet des distributions est ensuite venu sur le tapis. En effet plusieurs distributions existent en plus de la "standard edition". Vous pouvez retouver la liste ici. Le problème est que cela n'est pas forcément très clair pour tout le monde. De plus, la "standard edition" contient des bundles et composants qui ne sont pas toujours utilisés comme Swift Mailer par exemple.

En résumé, il faut donc améliorer l'initialisation d'un projet ainsi que sa gestion (ajout de bundle etc.). Pour cela, un outils est en cours de développement : Symfony Flex. Cet outil est à considérer comme étant un plugin Composer. Il permettra d'initialiser un projet avec les dépendances réellement souhaitées et de gérer les dépendances. A noter qu'un outil existe déjà : le Symfony installer. Celui-ci initialise un projet de manière basique puisqu'il récupère une archive et la décompresse.

Soup up Symfony - Keep PHP Alive Between Requests

Andrew a enchainé en nous parlant performance. Ainsi il nous a montré les différentes possibilités et évolutions concernant l'utilisation de PHP : CGI, PHP-FPM etc. Un benchmark nous a également été présenté pour comparer les temps de réponses et des recommendations ont pu être faites comme la libération de la mémoire par exemple.

Jenkins deployment pipeline

Dans cette conférence, Nicole nous a expliqué l'intérêt des déploiements Jenkins via le process pipeline et nous a fait une démonstration. Pour résumé, l'objectif principal est évident : gagner du temps en parallélisant différentes tâches comme les tests unitaires et fonctionnels ou par exemple en découpant différents tâches.

Kafka will get the message across, guaranteed

David nous a ensuite parlé de Kafka : un système de messagerie distribué. Les avantages de ce projet ont été avancés, et quelques explications techniques nous ont été présentées.

A year of Symfony

Dans cette conférence, Sarah est revenue sur l'année écoulée. Beaucoup de chiffres ont été donnés pour insister sur le travail réalisé par la communauté : +1400 issues corrigées, +2400 PR, +1200 PR mergées, +50 releases. Les différents événements ont également été énoncés (Symfony Live) et la documentation a été repensée.

Sont arrivées ensuite les nouvelles features depuis la version 3.0. Et là encore beaucoup de choses. Pour n'en citer que quelques unes : 2 nouveaux composants (cache et workflow), amélioration des compiler pass, variables d'environnement, améliorations au niveau de la toolbar (infos en plus), ainsi que du composant Yaml.

Adventures in Symfony - Building an MMO-RPG

Margaret a ensuite pris le relais pour nous parler de son projet, le développement d'un jeu en Symfony, en énoncant les différentes étapes.

How I learned to Stop Wiring and Love Autowiring Containers

Beau a terminé par une conférence sur l'injection de dépendances et plus précisément sur le wiring. Un exemple concret nous a été présenté afin de montrer que la configuration peut parfois être lourde. Une comparaison avec Spring (Java) ainsi qu'avec différents systèmes PHP a été réalisée.

La conférence s'est terminée par la présentation de l'auto wiring en Symfony. Rapidement, ceci permet au système de définir les dépendances les plus adaptées aux services.

Bilan

Des conférences intéressantes et assez techniques, des sujets diversifiés : encore une fois un bon cru !

Si vous souhaitez retrouver différentes informations sur les conférences, notamment les slides, c'est ici

Enfin, pour terminer, le lieu de la prochaine SymfonyCon a été révélé et ce sera ... la Roumanie.