Symfony Live 2016 : Compte-Rendu


Technique

Cette année, le 7 et 8 avril 2016, à la Maison Internationale de la Cité Internationale Universitaire de Paris, s’est tenue la huitième édition du Symfony Live.

Qu’est-ce que le Symfony Live ?

Durant deux jours, des intervenants de compétences diverses et provenant d’entreprises aux secteurs variés sont tour à tour venus présenter les solutions répondant à différentes problématiques qu’ils ont eux-mêmes adoptées professionnellement. Des sujets autour du Framework Symfony lui-même, son microcosme d’outils mais pas seulement. Ces conférences sont également l’occasion de rencontrer d’autres acteurs du secteur, de s’ouvrir à des problématiques futures et d’élargir nos connaissances sur les possibilités existantes. Le tout dans une ambiance détendue.

Le programme de ces deux jours pour l’édition 2016 :

ProgrammeSymfonyLive16 628x1024 Symfony Live 2016 : Compte Rendu

Présentation des conférences proposées cette année

Monolith Repositories avec Git

Conférence présentée par Fabien Potencier

Pour ouvrir ces deux journées de conférences, Fabien Potencier, fondateur du Framework Symfony, est venu nous expliquer comment allier l’avantage de l’usage d’un répertoire GIT unique aux avantages de posséder plusieurs répertoires GIT pour un même projet.

Comme certains géants du Web tels que Google ou Facebook, il a adopté une solution monolithique pour l’évolution de Symfony et de ses composants. Autrement dit, il s’agit de posséder un seul répertoire GIT pour gérer l’évolution de l’ensemble des composants du Framework (environ 44).

Les principaux avantages de cette solution sont :

  • la centralisation du code dans un même répertoire générant ainsi la simplicité des codes review, la possibilité de faire une seule pull request pour mettre à jour l’ensemble des éléments impliqués, la facilité lors des reports de bugs.
  • plus besoin de gérer les dépendances internes, et l’évolution des composants se fera simultanément, notamment leur mise à jour.

Cependant, l’idéal est de garder les deux gestions de répertoire : monolithique + un répertoire par composant. Cela permet de garder l’indépendance des composants si un prestataire externe souhaite n’utiliser qu’un seul composant et non l’ensemble par exemple. La difficulté de ce genre de gestion est de trouver un outil permettant de suivre l’ensemble des projets GIT ainsi que le double sens de propagation. Fabien Potencier nous propose une solution basée sur l’utilisation des subtrees de GIT et d’une modification du code de ce dernier afin de le rendre plus rapide.

 

Guard dans la vraie vie

Conférence présentée par jeremyFreeAgent

Disponible depuis la version 2.8 de Symfony, cette conférence nous présente comment utiliser le nouveau composant Guard. Ce dernier permet la mise en place d’un système d’authentification. Même s’il n’apporte aucune nouvelle fonctionnalité, il offre cependant une gestion simplifiée, car regroupée en une seule classe objet, de l’authentification dans une application Symfony.

 

R2D2 to BB8

Conférence présentée par Vincent Chalamon

Lafourchette.com met à disposition des restaurateurs une application leur permettant de saisir les données relatives à leurs restaurants : nom, adresse, horaires d’ouverture et de fermeture, réservations, … Cette application, vieillissante, créée en Symfony 2.0, possède donc une quantité très importante de données.

L’entreprise est venue partager son retour d’expérience face à sa problématique : comment migrer progressivement d’une vielle application construite en Symfony 2.0 vers du Symfony 3.0, tout en conservant les données existantes, ainsi qu’en ajoutant et en supprimant des fonctionnalités ?

Leurs sites ainsi que leurs applications ne devant pas avoir d’interruption de service, ils sont partis sur une solution ApiPlatform leur permettant de se concentrer sur la partie métier.

 

PHP Meminfo ou la chasse aux memory leak

Conférence présentée par Benoit Jacquemont

Cette conférence a débuté par un rappel des fondamentaux sur la gestion de la mémoire par PHP. Elle a également abordé les solutions déjà existantes, tel que Blackfire.io ou Memprof, permettant de savoir quelle fonction utilise ou non de la mémoire.

Ensuite, l’outil PHP Meminfo, nous a été présenté. Il permet d’avoir une vision plus complète des éléments PHP utilisant la mémoire. Il permet de connaître les relations qui lient ces éléments entre eux : membre de classe, … Le debug est ainsi facilité en permettant notamment de retrouver plus facilement l’origine des fuites mémoire.

Néanmoins, gardons à l’esprit que PHP n’est peut être pas le langage le plus adapté pour de gros traitements, contrairement à d’autres langages tel que le C ou Python.

 

Retour d’expérience Reactive Architecture et Microservices : comment découpler mes applications ?

Conférence présentée par Fabien Meurillon

Le sujet de cette conférence porte sur la mise en place des microservices appuyée par des exemples concrets mis en oeuvre chez Auchan E-commerce.

Leur architecture suit l’ensemble de ces points :

  • Responsive
  • Resilient
  • Elastic
  • Message driven

Plusieurs solutions envisagées au départ, mais qui ne correspondaient pas totalement aux points ci-dessus nous sont présentées, avant d’aborder ensuite l’utilisation d’un talend en middleware.

 

Le réveil du Workflow

Conférence présentée par Grégoire Pineau

Il s’agit d’une présentation d’un nouveau composant possible à Symfony faisant le travail d’une machine à état.

En suivant les spécifications de la machine de pétri, le composant permet de suivre le Workflow d’un objet au gré des événements.

Beaucoup d’exemple nous sont montrés durant cette conférence, ce qui est très appréciable pour suivre les explications du présentateur.

 

ElasticSearch chez BlaBlaCar

Conférence présentée par Olivier Dolbeau

ElasticSearch est un outil permettant d’indexer et de rechercher des données.

BlablablaCar l’utilise énormément. À travers cette présentation, l’entreprise nous fait un rappel général du fonctionnement de cet outil, et nous montre également les différents usages qu’ils font de cette solution. Recherche, gestion des filtres, récupération des résultats, indexation… de nombreux points sont abordés.

Un bon moyen de voir et revoir les possibilités de cet outil aujourd’hui devenu indispensable.

 

Performance au quotidien dans un environnement Symfony

Conférence présentée par Xavier Leune

Xavier Leune est venu nous présenter la performance chez CCM Benchmark, un des plus gros groupes de médias en terme de pages vues.

On retiendra que Symfony n’est pas le plus performant face à un Framework maison, en particulier à cause de Doctrine. Malgré cela, étant donné qu’il s’agit d’un Framework très suivi et qu’il a de nombreux autres avantages, il a été choisi chez eux en remplaçant Doctrine par un ORM maison appelé Ting.

Plusieurs petites astuces pour améliorer le cache ou apprendre à utiliser blackfire nous ont été fournies sur la fin de la conférence.

 

Keynote

Conférence présentée par Mathieu Nebra

OpenClassRoom est venu nous présenter sa vision de l’entreprise et comment elle gère  en son sein la confiance avec ses employés.

La présentation passe par leur historique, par ce que pensent les dirigeants, ce que pensent leurs salariés… et nous démontre que les entreprises se mettent elles-mêmes des barrières.

De nombreux conseils nous sont donnés sur la transparence, la confiance et la liberté données aux salariés afin de développer leurs idées, leur imagination et leur envie d’avancer vers un but commun.

 

PSR-6 & Symfony Cache : de la perf en standard

Conférence présentée par Nicolas Grekas

La PHP-FIG (PHP Framework Interop Group) a publié récemment un nouveau standard : la PSR-6. Ce dernier permet d’uniformiser la gestion du cache afin que les outils de cache fournissent une interface commune et soient compatibles avec la plupart des Frameworks.

Cependant, certains acteurs tel que Doctrine n’adhèrent pas à ce nouveau standard. Cela a poussé Symfony à créer son propre cache implémentant PSR-6.

Cette conférence revient sur les avantages et les inconvénient de PSR-6. Elle propose une synthèse des différents outils de cache existants (Doctrine, php-cache, …) et elle présente  le nouveau composant Symfony Cache.

C’est un bon rappel des raisons pour lesquelles il existe des standards et de pourquoi il est important de les suivre pour le bien de tous.

 

Sécurité Web : pirater pour mieux protéger

Conférence présentée par Alain Tiemblo

Cette présentation nous présente des cas concrets sur la manière dont on peut pirater un site Web : utiliser des failles XSS, se connecter à un site en trouvant le mot de passe d’un compte par la méthode “brute force”, outrepasser la vérification par SMS… Cela dans le but de les anticiper et de les éviter lors du développement de notre propre site Web.

Un exemple parlant nous a été donné permettant d’obtenir plusieurs billets SNCF pour le prix d’un, juste en changeant la valeur d’un input hidden.

Cette conférence est très intéressante et permet de réaliser à quel point un site Web peut être attaqué de partout et du nombre de failles existantes.

 

Aller plus loin avec Doctrine2

Conférence présentée par André Tapia

Rappel sur différentes notions avancées de Doctrine 2 utilisées à l’intérieur du Framework Symfony. Le speaker revient par exemple sur l’usage des listeners, annotations, subscribers, … Il donne également quelques astuces pour améliorer les performances de son application.

 

Refondre un moteur de règles avec l’expression language de Symfony 2

Conférence présentée par Hussein Abbas

Il s’agit d’une présentation sur l’expression language. Très orientée métier, avec beaucoup d’explications, il a cependant été difficile d’y trouver un réel sens pour nous autres développeurs.

On retiendra que l’outil semble facile d’utilisation.

 

Sécurité et HTTP

Conférence présentée par Romain Neutron

Dans la lignée de la conférence précédente présentée par Alain Tiemblo, Romain Neutron nous présente les différentes solutions proposées par les navigateurs et pouvant être mises en place afin d’éviter un certain nombre d’attaques.

Simple à mettre en place, nous pouvons ajouter des options dans le header de notre page HTML.

Il s’agit par exemple de l’options X-Frame-Options. Elle permet d’indiquer si on autorise le navigateur à rendre une page dans une “<frame>”, “<iframe>” ou “<object>”. Elle peut être utilisée pour éviter le “clickjacking”.

Autre exemple, il peut s’agir également de l’option X-Content-Type-Options: nosniff. Ajoutée dans le header de la page, elle permet d’éviter des attaques basées sur la confusion du type MIME.

On notera que certaines des solutions présentées ne sont pas encore compatibles avec tous les navigateurs.

Une conférence complète, avec beaucoup d’exemples et qui donne de bonnes idées à mettre en place.

Rappelons que NelmioSecurityBundle permet de faire une migration des headers plus facilement.

 

Construire des applications Cloud native

Conférence présentée par Ori Pekelman

Ori Pekelman aborde ici la question suivante : quelle architecture mettre en place afin que nos sites Web ou leurs composants soit réutilisables, performants, sécurisés ?

De nombreuses notions ont été abordées à un rythme soutenu, telles que les avantages et les limites des microservices, l’architecture REST, les CDN, l’indépendance de l’application Web face à son environnement de déploiement…

On retiendra donc ici que les termes “applications cloud native” ne signifient pas “applications sur des serveurs cloud”, mais plutôt que des applications sont construites selon un modèle d’architecture basé sur l’indépendance de l’application Web face à son hébergement, et d’une forte communication de ses composants à travers le réseau Internet.

 

Les “Lightnings talks” ?

Les “Lightnings talks” consistent à laisser n’importe quel participant au Symfony Live  monter sur scène pour parler du sujet qu’il désire durant 7 minutes maximum. Le sujet est bien sûr soumis au préalable aux organisateurs de l’évènement pour validation. Certains des thèmes présentés cette année concernaient donc par exemple le développement d’un outil en Symfony pour les chercheurs dans l’énergie et la matière noire, le protocole https, la parallélisation des tâches en Symfony, 25 conseils pour prendre la parole en public, ou bien encore la médiocrité.

 

Conclusion

Le Symfony Live était riche en enseignements cette année. Sans dire que nous ressortons de cette conférence avec une maîtrise des sujets abordés, elle nous a ouvert l’esprit sur les bonnes pratiques à adopter, les nouvelles tendances, des astuces de codage. Elle nous a fourni des retours d’expériences de qualité et une vision des projets à venir.

Pour aller plus loin

Pour ceux qui n’ont pas pu être présents mais qui désireraient visionner les conférences, sachez qu’elles seront bientôt disponibles ici.

Le SymfonyCon sera présent à Berlin, du 1er au 3 décembre 2016.

 

Laisser un commentaire