Paris 2016 7 ET 8 AVRIL

Planning

Thursday, April 7th

  Track A
08:00
09:00
Retrait des badges et accueil petit-déjeuner
09:00
09:15
Mot de bienvenue
09:15
09:55
Monolith Repositories with Git
Fabien Potencier
10:00
10:40
Guard dans la vraie vie
jeremyFreeAgent — Jérémy Romey
10:40
11:10
Pause
11:10
11:50
R2D2 to BB8
Vincent CHALAMON
11:55
12:35
PHP Meminfo ou la chasse aux memory leak
Benoit Jacquemont
12:35
14:30
Déjeuner
14:30
15:10
Retour d'expérience Reactive Architecture et Microservices : Comment découpler mes applications ?
Fabien Meurillon
15:15
15:55
Le reveil du Workflow
Grégoire Pineau
16:00
16:30
Pause
16:30
17:10
ElasticSearch chez BlaBlaCar
Olivier Dolbeau
17:15
17:55
Performance au quotidien dans un environnement Symfony
Xavier Leune
17:55
18:30
Lightning talks
18:30
21:30
Apéritif Communautaire

Friday, April 8th

  Track A
08:00
09:00
Accueil petit-déjeuner
09:00
09:40
Mathieu Nebra - Keynote
09:45
10:25
PSR-6 & Symfony Cache : de la perf en standard
Nicolas Grekas
10:25
10:55
Pause
10:55
11:35
Sécurité web: pirater pour mieux protéger
Alain Tiemblo
11:40
12:20
Aller plus loin avec Doctrine2
André Tapia
12:20
14:15
Déjeuner
14:15
14:55
Refondre un moteur de règles avec l'expression language de symfony2
ABBAS Hussein
15:00
15:40
Sécurité et HTTP
Romain Neutron
15:40
16:10
Pause
16:10
16:50
Construire des applications cloud natives
Ori Pekelman
16:50
17:30
Lightning talks
17:30
17:45
Session de clôture

Monolith Repositories with Git

Fabien Potencier - français - Keynote - Thursday, 09:15

Google and Facebook store their codebase into one giant code repository. Symfony has been doing the same thanks to Git and some secret sauce with great success since 2010.

Having only one repository makes code management much easier for end users and core contributors: one central place to submit pull requests and report bugs, simple cross-project atomic changes, fast releases, and more.

But what about users wanting to use only one component? Enter "repository splitting". After learning some theory about subtree splits and how to create them with the Git built-in but slow "subtree" command, I will talk about the tool I developed using libgit2 and Go to make the process almost real time.

If you have a microservice oriented architecture and manage one repository per microservice, you could probably benefit from using the same technique with one repository for development and read-only splits for packaging and deployment.

Guard dans la vraie vie

jeremyFreeAgent — Jérémy Romey - français - Track A - Thursday, 10:00

Le nouveau component Guard simplifie la mise en place d'authentification sur nos applications Symfony. Avec une classe par système d'authentification, voyons comment personnaliser les différentes étapes et comment ajouter facilement de nouveaux Guard authenticator à son application Symfony.

R2D2 to BB8

Vincent CHALAMON - français - Track A - Thursday, 11:10

La migration continue d'un vieux projet n’est pas une mince affaire. En premier lieu, il faut définir un périmètre minimal de fonctionnalités à transférer de l'ancien projet au nouveau, et mettre de côté celles qui s'avèrent obsolètes pour enfin intégrer les nouveaux besoins.

Mais dans ce processus déjà complexe, que faire des données existantes et comment les adapter à la nouvelle structure ? Comment conserver la synchronisation des données entre les deux projets ?

Nous verrons ensemble comment LaFourchette a choisi de répondre à ces problématiques dans le cadre de la refonte d’une de leur principale application de Symfony 2.0 vers Symfony 3.

PHP Meminfo ou la chasse aux memory leak

Benoit Jacquemont - français - Track A - Thursday, 11:55

Les profilers tel que Blackfire.io ou Memprof permettent de connaitre les fonctions qui prennent ou libèrent de la mémoire. Mais visualiser ce que contient la mémoire PHP permet de mieux comprendre les origines des memory leaks. L'extension PHP Meminfo fournit une vue synthétique du nombre d'instances par classe en mémoire, la liste compléte des objets et autres structures avec les relations qui les lient (membre de classe, présence dans un tableau, etc...). L'accès à ces informations de liaisons permet de comprendre pourquoi un élément n'a pas été libéré de la mémoire en suivant les références qui continuent à pointer sur lui.

Le talk commencera par expliquer les mécanismes de libérations de la mémoire (references counter, cyclic reference garbage collector) spécifique à PHP, les effets des memory leaks sur les performances applicatives, puis détaillera des cases studies de fuite mémoire dans des projets Symfony2 et de leur analyse avec meminfo, ainsi que leur résolution.

Retour d'expérience Reactive Architecture et Microservices : Comment découpler mes applications ?

Fabien Meurillon - français - Track A - Thursday, 14:30

Démonstration des principes de Reactive Architecture (responsive, resilient, elastic, message driven) sur le découpage d'une application en transition vers une architecture micro-services.

  • Mise en place de Redis et des composants de Middleware (ESB, RabbitMQ) pour faciliter le découpage applicatif.

  • Mutualisation des modèles canoniques pour éviter la duplication de code.

Nous accompagnerons notre présentation d'exemples contextuels inspiré par la mise en œuvre de ces concepts chez Auchan E-Commerce

Le reveil du Workflow

Grégoire Pineau - français - Track A - Thursday, 15:15

Il est courant de gérer des statuts ou états de produits, dans des sites e-commerce ou éditoriaux. Pour ce faire, il est possible d'agir de façon classique, c'est-à-dire manuellement, ou d'avoir recours à des librairies qui proposent déjà des bases de code.

Pour cette présentation, nous aborderons la notion de machine à état et sa définition avant d'envisager, son application, en examinant les librairies open sources existantes. Enfin, à la lumière de Symfony, nous étudierons le nouveau composant "Workflow"

ElasticSearch chez BlaBlaCar

Olivier Dolbeau - français - Track A - Thursday, 16:30

Vous avez certainement entendu parler d'ElasticSearch auparavant. Chez BlaBlaCar nous adorons ce moteur de recherche et nous n'hésitons pas une seconde à l'utiliser lorsque cela est justifié. Recherches de trajets, FAQ, logs, détection de fraude, vous découvrirez la quasi intégralité des besoins qui ont justifiés la mise en place d'ElasticSearch chez BlaBlaCar.

Performance au quotidien dans un environnement Symfony

Xavier Leune - français - Track A - Thursday, 17:15

C'est bien connu, les frameworks full stack, c'est lourd et c'est lent, Symfony le premier. Et chez CCM Benchmark (2ème groupe internet français - 50M de VU), on fait tout pour éviter la lenteur ! Alors pourquoi ai-je décider de migrer nos dizaines d'applications vers Symfony ? Et surtout comment respecter les critères de performances que nous avions défini avec notre bon vieux framework maison ?

Voyons ensemble les raisons qui m'ont poussé à faire ce choix et surtout quels process et solutions nous avons pu mettre en oeuvre pour éviter des régressions de performance.

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

Nicolas Grekas - français - Track A - Friday, 09:45

Après plusieurs mois de discussion, le PHP-FIG (PHP Framework Interop Group) a publié la PSR-6. Son objectif est de permettre l'interopérabilité entre implémentations de systèmes de mise en cache - un aspect indispensable pour gagner en performance dans votre application. Lors de cette conférence, nous verrons les avantages et les limites de PSR-6, nous discuterons des différentes solutions de cache existantes (Doctrine, Stash, php-cache), et je vous présenterai le nouveau composant Symfony Cache.

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

Alain Tiemblo - français - Track A - Friday, 10:55

Il existe beaucoup de concepts dans la sécurité web, les maîtrisez-vous vraiment ? Pouvez-vous les utiliser afin de pirater un site ? Pourtant, pour toute faille que vous saurez exploiter, vous connaîtrez naturellement les moyens vous en protéger.

Durant cette présentation, je vais vous montrer comment exploiter et se protéger de quelques vulérabilités: comment retrouver des mots de passes dans une base encodée en sha512, comment trouver et exploiter des failles XSS, bruteforcer une page de login, utiliser le clickjacking, outrepasser une vérification par SMS...

Aller plus loin avec Doctrine2

André Tapia - français - Track A - Friday, 11:40

La présentation a pour but de revenir sur différents aspects avancés de Doctrine mis en oeuvre au sein de projets Symfony 2.x/3.

Elle abordera, entre autres, les éléments suivants :

  • Étendre le vocabulaire DQL (spécifiquement ou à l'aide de bundles existants)
  • Utiliser les différents listeners existants (annotations, listeners, subscribers, utilisation de l'UOW de Doctrine lors d'un flush, etc.)
  • Créer des hydrateurs spécifiques ou des entités partielles pour améliorer les performances sur certaines opérations.
  • Astuces diverses pour améliorer les performances (désactivation des logs, etc.)

Refondre un moteur de règles avec l'expression language de symfony2

ABBAS Hussein - français - Track A - Friday, 14:15

1 ) Présentation du métier de SELLSecure et de la couche technique du projet:

2) Limitations du moteur historique:

  • Augmentation de la complexité des règles demandées par le métier, temps de réponse plus adaptés aux exigences des clients, dette technique énorme sur ce composant essentiel

3) Choix de l'expression language:

  • Recherche d'alternative dans le monde PHP et au dehors. Le composant Expression Language paraissait le plus convaincant :
  • Permet de créer des règles complexes, le code est directement dans l'application et les temps de réponse semblaient bon

4) Mise en place:

  • Migration des règles historiques, adaptation du code de l'application avec l'expression language.
  • Extension de l'expression language pour implémenter certaines règles métiers

5) Démo

6) Conclusion, retour d'expérience:

  • Tests de performances, retours des métiers et point sur la dette technique

Sécurité et HTTP

Romain Neutron - français - Track A - Friday, 15:00

Si autrefois nous ne nous soucions guère de la sécurité dans nos applications, il serait aujourd'hui impensable de se lancer dans le développement d'une application sans prendre en compte la sécurité vis à vis d'HTTP.

Sans parler des outils communément utilisés dans Symfony (csrf_token, auto escaping Twig, escaping de commandes, hashage de données...), cette présentation s'attachera à présenter les différentes possibilités (CSP, HSTS, Framing options, etc...) offertes par les navigateurs et qu'il est facile a mettre en oeuvre dans Symfony via des bundles ou de la configuration pour éliminer de nombreux vecteurs d'attaque comme les DNS, le CDN poisoning ou les XSS.

Construire des applications cloud natives

Ori Pekelman - français - Track A - Friday, 16:10

Ces-jours-ci on ne parle que de montée en échelle et de scalabilité horizontale.

Dans cette présentation, un peu abstraire mais bien pratique, nous parlerons des choix architecturaux que vous pouvez faire pour rendre votre application prête pour un succès planétaire (dommage d’échouer an ayant réussi).

Nous allons parler de micro-services, de leur utilité et leurs limites, là où l’on veut communiquer par JSON/HTTP (que d’autres appels REST) et là où un Message Queue en bonne et due forme vous rendra des fiers services futurs. Nous parlerons aussi des écueils à éviter (par la séparation des domaines écritures / lectures) et des choses, que jamais ô jamais vous ne devriez mettre dans une base de données relationnelle. Nous évoquerons en guise de travaux pratiques et cerise sur le gateau comment faire des migration paresseuses avec Symfony.

SensioLabs

92-98, Boulevard Victor Hugo
92115 Clichy Cedex - France
+33 1 40 99 82 89
support [at] sensiolabs.com

© 2017 SensioLabs - About