Retour sur le Forum PHP 2019

  • #Architecture d'entreprise & applicative
  • #Frameworks & développements
  • #Communication/marketing/performances commerciales
  • #Conformité (Accessibilité, RGPD…)

Publié le Mis à jour le Par , ,

Une fois de plus Clever Age a eu l’occasion de participer au Forum PHP qui se déroulait pour la 3ème fois consécutive à Paris Marriott Rive Gauche Hotel les 24 et 25 octobre 2019.

Le programme de cette année était très riche en retours d’expérience !

Voici un compte-rendu de ce que nous avons pu voir :

Writing Effective PHP

par Nuno Maduro

Cette première conférence avait pour objectif de nous apprendre à construire du code plus robuste, plus défensif via des exemples concrets.

Dans les conseils nous avons pu noter :

  • Pourquoi, quand et comment doit-on créer des classes immuables. ?
  • Comment avoir des objets toujours dans un état valide avec des assertions ?
  • Comment définir des APIs avec des contrats claires en typant de manière plus stricte les méthodes et en effectuant des commentaires décrivant leurs comportements ?
  • Comment faire des classes “final” afin de forcer les développeurs à penser composition au lieu d’héritage ?

Enfin, Nuno a parlé d’outils d’analyses statiques avec en premier PHPStan et en second, PHP Insights dont il est lui même l’auteur. Le principal intérêt mis en avant était la rapidité de retour de ces outils qui ne nécessitent pas d’exécuter le code contrairement aux tests automatisés ou manuels. Cela permet donc de remonter des erreurs et métriques très rapidement et sans effort. PHP Insight permet de visualiser des métriques supplémentaires liées à la sécurité, aux conventions de codage, à la complexité cyclomatique, à l’architecture de l’application et au code de manière générale.

Nous avons particulièrement apprécié cette conférence qui nous a proposé des exemples de code en live très pratiques pour appuyer les arguments cités. Nous avons pu également découvrir PHP Insights que nous ne connaissions pas.

Slides de Nuno Maduro

PHP Pragmatic Development

par Frédéric Bouchery

Conférence présentée par Frédéric Bouchery qui a expliqué ce qu’est le pragmatisme dans le développement, celui-ci permettant de favoriser l’expérience et la pratique.
Il a expliqué l’effet de Dunning-Kruger avec le niveau de confiance que peut avoir un junior débutant face à un senior ayant beaucoup de pratique dans le monde du dev.
Cet effet est dû à une surévaluation de la confiance par rapport à une compétence. En voici une courbe représentative :

Il a énoncé également des principes de développement tels que:

  • KISS (“keep it simple, stupid”)
  • DRY (“don’t repeat yourself”)
  • WET (“write everything twice”)
  • YAGNI (“you ain’t gonna need it”)

Dans la pratique, il a adopté une solution créée par lui même : la matrice de décision.
Il s’agit d’une adhésion collective à l’aide d’un tableau grâce à des scores pour choisir un outil à travers les différents choix possibles. Les participants mettent un score pour chaque technologie choisie selon des critères (par exemple, si l’outil est déjà connu par l’équipe ou non).

Je viens de mettre en ligne le support de ma conférence donné lors du #ForumPHP @afup sur le développement pragmatique.
N’oubliez pas de noter les conférences sur https://t.co/2Xiinqsxi4https://t.co/Wbcihr3LI2 pic.twitter.com/a0WAfsrD40

— Frédéric Bouchery (@FredBouchery) October 28, 2019

La clean architecture : Pourquoi ? Comment ? Pour qui ?

par Nicolas De Boose

2ème talk de la journée et apparemment une première pour le speaker qui s’est en très bien sorti avec un sujet bien expliqué ! Nicolas a commencé avec un exemple fictif sur un projet en modèle MVC qui s’agrandit pour nous expliquer qu’on finit souvent par mettre le code là où ça fait le moins mal.

Nicolas est passé du Modèle MVC à une architecture dite “hexagonale” en utilisant :

  • le principe de “ports” et “adapters” dont l’idée est que l’hexagone (le domain de l’application) définit des ports représentant des interfaces métier et que la partie infrastructure (à l’extérieur de l’hexagone) implémente ces interfaces par des “adapters”. Cela rejoint les principes SOLID et permet de ne plus dépendre des librairies externes dans toute l’application (seul l’”adapter” en dépendra)
  • le pattern MVP (Model View Presenter) qui permet de simplifier la vue en utilisant une couche supplémentaire d’abstraction, le presenter. Il est là pour contenir les informations que l’on souhaite rendre à la view. Nous pouvons donc tester ses informations sans tester la façon dont elles sont rendues et sans se coupler directement à la view.

Redis, ce n’est pas que pour le cache

par Grégoire Pineau

Nous n’avons pas assisté à cette conférence au Forum car nous l’avions déjà vu a un SfPot  et nous en avons gardé un très bon souvenir !

Grégoire y montre des fonctionnalités de Redis avec des exemples de cas d’utilisation réels dépassant la simple utilisation du cache.

Une vidéo de la même conférence donnée à Webmardi juste avant le forum PHP est disponible.

Slides de Gregoire Pineau

L’e-commerce sans accroc avec Sylius

par Olivier Allain

Une application résiliente, dans un monde partiellement dégradé

par Pascal MARTIN

Une des conférences les plus intéressantes du Forum PHP à notre goût ! Pascal nous a donné certaines définitions, expliqué comment définir des métriques et proposé des conseils pour améliorer la résilience de nos applications.

La résilience est la capacité à s’adapter à des dysfonctionnements. Pour introduire ce concept, Pascal nous a parlé de SLI, SLO et SLA :

  • Service Level Indicator : c’est une mesure qualitative pour un niveau de service sur la disponibilité, la durabilité, le taux d’erreur, le débit ou encore la latence. Par exemple on parle souvent de X-nines (99,99%, 99,9%…) sur le pourcentage de disponibilité d’un service;
  • Service Level Objectif : valeur cible pour un niveau de service mesuré par un SLI;
  • Service Level Agreement : définie les conséquences financières si l’objectif n’est pas atteint.

Pour la SLI, ce qui compte vraiment c’est la vision utilisateur et non la métrique technique. Un point d’attention a été évoqué sur les services externes possédant leurs propres SLIs :

  • une application dépendante d’un service externe possédant elle même une SLI de disponibilité à 99,9% ne pourra pas dépasser cette SLI,
  • une application dépendante de deux services externes possédant pour chacun d’entre eux une SLI à 99,9% ne pourra pas dépasser 99,8%

Au niveau des objectifs, il peut être difficile d’en choisir. On doit se demander quel effort on est prêt à fournir pour y répondre. Après la définition de ces objectifs on peut regarder le budget qui y est accordé pour en déduire des actions :

  • si le niveau de service est supérieur au budget, on peut faire ce que l’on veut, tout casser et expérimenter
  • si le niveau de service est inférieur à nos objectifs, on n’a plus le droit de tout casser, il faut arrêter les nouveaux développements et stabiliser l’application.

Les SLAs viennent en dernier et pourtant on en parle plus que des SLIs et SLOs, alors qu’ils dépendent bien de ces deux derniers.

Pascal Martin nous a ensuite listé un ensemble de conseils pour améliorer la résilience de nos applications :

  • être préparé : ne pas improviser et agir de manière précipité en production. Travailler d’abord en staging, documenter et ensuite agir en prod ou encore mieux, automatiser la résolution du problème et déployer ;
  • faire de vrais microservices notamment en limitant les dépendances présentent entre eux ;
  • faire des fallbacks avec par exemple l’utilisation d’une version statique d’un site, des données par défaut côté client, ou encore la réutilisation de données en cache qui ont expiré ;
  • utiliser un mode dégradé : si on n’arrive pas à afficher une liste de 10 articles on peut en afficher 9, ignorer un 4ème article et commander les autres si on n’arrive pas à afficher ses informations ;
  • scaler en fonction de la durée des requêtes (et pas du CPU) ;
  • faire du feature flipping (désactiver des fonctionnalités automatiquement lorsque le site est surchargé) ;
  • être prudent lors des déploiements : déployer une nouvelle application à 5% des utilisateurs et non à 100% ;
  • si la bdd s’écroule, basculer sur un réplica ;
  • faire du Chaos Engineering avec par exemple Chaos Monkey en simulant des pannes ;
  • choisir des technologies anciennes “boring” parce que, au moins, vous aurez du support en cas de problème, à l’inverse de la dernière technologie hype du moment avec laquelle personne n’a encore rencontré le bug en question ;
  • une fois l’incident terminé, c’est le moment d’apprendre : faire une timeline, ce qui a marché ou non, définir des actions d’amélioration.

Concevoir des applications PHP résilientes en 2019

par Mickaël Andrieu

Dans la même lignée que la conférence précédente, Mickaël Andrieu nous parle de résilience mais avec cette fois-ci un retour d’expérience sur Prestashop où un fichier css externe empêchait l’ensemble des back-office de prestashop de charger.

Mickaël, nous a également énoncé quelques conseils, puis il s’est focalisé sur le design pattern Circuit Breaker encore peu répandu dans l’univers PHP. L’idée du circuit breaker est de prendre le relais lorsqu’un problème survient afin de fournir une réponse dégradée au lieu d’une interruption de service. Un circuit breaker est une machine à état :

  1. fermé : le circuit breaker laisse passer les requêtes ;
  2. ouvert : le service tiers va se fermer, le circuit breaker s’ouvre et l’on va maîtriser et avoir le contrôle sur le comportement souhaité ;
  3. semi-ouvert : permettant d’effectuer des tests sur le service tiers afin de vérifier s’il est de nouveau accessible.

A la suite de la présentation du concept, Mickaël a effectué une comparaison des 3 librairies disponibles en PHP :

  1. Prestashop Circuit Breaker : librairie utilisée par Prestashop
  2. Resiliency fork du Circuit Breaker de Prestashop avec des tests d’implémentation sur des fonctionnalités dont prestashop n’a pas besoin, fait par le conférencier
  3. Ganesha : la plus ancienne présente depuis 2014

Slides de Mickaël Andrieu

Accueillir des junior·e·s en reconversion : comment éviter l’échec

Prénommée Cindy Liwenge, elle a pris la parole en tant que développeuse junior en reconversion pour montrer les difficultés auxquelles un(e) dev junior peut être confronté(e) dans sa réorientation.

Elle a mis en évidence les principales qualités qu’un dev débutant peut apporter à une entreprise.

Slides de Cindy Liwenge

Mercure, et PHP s’enamoure enfin du temps réel

par Kévin Dunglas

Kévin Dunglas a initié la conférence en effectuant une comparaison de Mercure avec WebSocket et SSE (Server-Sent Events) afin de nous expliquer l’intérêt de ce nouveau protocole qui permet de faire du temps réel.

Dans les distinctions, on peut retrouver notamment le fait que :

  • Mercure tire parti des nouveautés d’HTTP/2 et HTTP/3 à l’inverse du protocole SSE qui devient obsolète à cause de ces mêmes nouveautés,
  • il est “full-duplex” avec une communication dans les deux sens,
  • il ne maintient pas de connexion persistante ce qui lui permet d’être facilement utilisable avec des APIs

Bien que le protocole soit encore en statut “Draft”, Kévin nous a démontré avec l’aide d’Eric Comellas qu’il pouvait dès à présent être utilisé en production et répondre à de vrais besoins de temps réel avec un retour d’expérience pour Igraal.

PHP 8 et Just In Time Compilation

par Benoit Jacquemont

Le langage PHP a toujours été critiqué par d’autres langages (C, JAVA…) à cause de sa lenteur liée au temps d’interprétation et d’exécution. C’est pourquoi, Benoît Jacquemont a voulu mettre en avant les avantages de l’utilisation de PHP et JIT (Just In Time) lors de cette conférence.

JIT : est une technique visant à améliorer la performance de systèmes bytecode-compilés par la traduction de bytecode en code machine natif au moment de l’exécution. La compilation à la volée se fonde sur deux anciennes idées : la compilation de bytecode et la compilation dynamique.

Afin de démontrer que le JIT permettra un gain de performance avec la version 8 de PHP, le conférencier a mis en avant les tentatives échouées de l’utilisation du JIT ces dernières années sur les versions 7 et 5 de PHP.

Le premier échec a été constaté sur la version PhP5, en 2014, quand Andrei Zmievski a constaté diverses lenteurs. Il pensait que la solution se trouvait avec l’implémentation de JIT, mais il s’agissait d’un problème lié au Zval. Après avoir réécrit l’ensemble de l’interprétation, les performances de PHP5 étaient meilleures mais l’ajout de JIT n’y a absolument rien changé.

Ensuite, avec la version 7 de PHP, les performances natives ont été largement améliorées et l’utilisation de JIT dépend vraiment du projet. Certains tests montrent que JIT n’est pas nécessaire et dans d’autres cas oui.

Sur le schéma ci-dessous, on peut voir que l’installation d’Akeneo PIM EE est plus rapide de 3 secondes sans JIT.

Contrairement à l’image ci-dessous, qui montre que l’exécution de la fonction Fibonacci (En mathématiques, la suite de Fibonacci est une suite d’entiers dans laquelle chaque terme est la somme des deux termes qui le précèdent) est 3 fois plus rapide avec JIT.

Avec la version 8 de PHP, JIT devrait être un plus, étant donné que PHP JIT est implémenté comme une partie d’OPcache. Il peut être activé ou désactivé au moment de la compilation et au moment de l’exécution. Lorsqu’il est activé, le code natif des fichiers PHP est stocké dans une région supplémentaire de la mémoire partagée OPcache et op_array→opcodes[].handler(s) conserve des pointeurs vers les points d’entrée du code généré par le compilateur JIT. Cette approche ne nécessite aucune modification du moteur.

Voici un schéma représentatif du fonctionnement de PHP couplé à JIT :

Forum PHP
Mais bon, comme le conférencier l’a dit :

  • Don’t expect the moon from JIT…
  • …but there’s still a long way to go
  • Test for your workload

When you get lost in API testing

par Antonio Peric et Paula Čučuk

Les 2 speakers ont présenté les distinctions entre tests unitaires, d’intégration et fonctionnels.
Ils ont également donné des conseils sur l’écriture des tests pour ensuite énumérer une liste d’outils permettant d’analyser et/ou tester une application :

  • Infection : framework de test s’appuyant sur PHPUnit ou PHPSpec modifiant le code source d’une application afin de vérifier que les tests tombent en erreur et couvrent bien tous les cas de figures
  • PHPStan
  • PHP Matcher permettant de tester des valeurs dans un format défini suivant différents patterns
  • Faker pour générer des données aléatoires
  • Postman et Newman pour automatiser par le CLI des tests issus de Postman

“Un petit peu déçu par cette conférence car je m’attendais à avoir un vrai retour d’expérience sur des tests d’API plutôt que des explications sur des typologies de tests et présentations d’outils. La conférence restait cependant intéressante, je ne connaissais pas PHP Matcher.”, Fabien Salles

Slides d’Antonio et Paula

What’s new with OPCache ?

par Julien Pauli

Julien Pauli nous a présenté une vue d’ensemble d’OPCache, sujet assez opaque et complexe pour certains développeurs.
Tout d’abord, il a expliqué les différentes étapes de notre code PHP pour obtenir un résultat visible :

Les phases d’exécution et de compilation peuvent être assez longues selon le code PHP. En conséquence, OPCache permet d’améliorer les temps d’exécution avec une phase d’optimisation et de cache.

Julien est parti assez loin sur le sujet en nous expliquant :

  • ce qu’est un OPCode,
  • comment fonctionne OPCache
  • comment on pouvait le paramétrer et l’optimiser

Comme toujours, une conférence très poussée de Julien qui a réussi à amener de la compréhension sur un concept assez complexe. Cependant celui lié aux “Interned strings” n’a pas été entièrement compris. Nous attendons avec impatience la vidéo pour redécouvrir la conférence.

Mes slides pour ma présentation sur l’extension OPCache pour le forum PHP 2019 sont en ligne sur https://t.co/Pswnnn1MSK

— julienPauli (@julienPauli) October 28, 2019

Neuroatypie et IT : quelques conseils

par Alex Rock

Alex Rock a voulu mettre en avant la vision erronée que la plupart des personnes se font des neuro-atypie. Si vous n’avez jamais entendu parlé de neuro-atypie alors vous avez sûrement dû entendre parler du syndrome d’Asperger plus connu sous le nom de l’Autisme.
Le conférencier lui même étant atteint par ce syndrome, il nous a fait une présentation en se basant sur sa propre expérience lors de son intégration au sein de la société.

Avant toute chose, un autiste n’est pas juste une personne surdouée et avec de grandes capacités, mais c’est également une personne qui va rencontrer pendant son parcours de grandes difficultés pour s’intégrer dans la société. Les gens le trouvent bizarre du fait qu’il ne sait pas quand ni comment commencer ou terminer une conversation, discuter de sujets marginaux ou encore avoir une simple interaction avec les gens de la société.

Voici une liste de personnes autistes connues qui devrait vous parler :

  • Alan Turing : Imitation Game, son histoire a été interprétée au cinéma par l’acteur Benedict Cumberbatch
  • Kim Peek : Mémoire infaillible
  • Greta Thunberg : Incontournable de l’écologie, récemment mise en avant en 2019 grâce à son discours à la COP25 en Espagne.

Il existe diverses associations / organismes pour aider à l’insertion des autistes et même une école à Grenoble spécialisée dans le management et l’IT.

Le seul problème est qu’aujourd’hui la majorité des entreprises recrutent des autistes à des postes clichés comme mathématicien ou programmeur car certains sont considérés comme «HPI (Haut Potentiel Intellectuel)». Une fois en poste, les choses ne se déroulent pas comme voulu. La plupart des autistes réagissent d’une manière excessive si un changement intervient brusquement dans ses habitudes, si les demandes ne sont précises… Comme Sheldon Cooper dans la série Big Bang Théorie, on peut parler de déclencheur de crise.

Alex a proposé certaines recommandations pour éviter ces déclencheurs : un bon accompagnement, se renseigner en amont sur la particularité de l’autisme afin de fournir des conditions de travail adaptées, … Le mot clé utilisé était «Communiquer ».

« Tout groupe humain prend sa richesse dans la communication, l’entraide et la solidarité visant à un but commun : l’épanouissement de chacun dans le respect des différences. », Françoise Dolto

Pour info, comme on le voit d’ailleurs sur la conférence, les slides de ma conférence sont dispos sur mon site ici :https://t.co/s2BHc1zV2o https://t.co/DK2G9pFGT0

— Alex Rock (@Pierstoval) October 25, 2019

Lightning talks

A la fin du premier jour du forum PHP, il y a ce qu’on appelle les lightning talks. Il s’agit d’une présentation sur un sujet en particulier en un temps imparti (5 minutes).

Le premier auquel nous avons pu assister portait sur la pollution qu’engendre nos déchets électroniques ainsi que leur fabrication. Ce talk a montré l’importance quant à la prolongation de durée de vie de nos appareils ainsi que la manière dont ils sont recyclés, voire exploités par des filières illégales. J’ai pu trouver un article montrant les chiffres conséquents de la pollution des déchets électroniques au Ghana.

Et voici d’autres lightning talks consacrés à divers sujets :

Si Darwin avait raison, l’agilité fonctionne par hasard

par François Zaninotto

Depuis quelques années, plusieurs entreprises mutent vers l’utilisation de la méthode Agile, en se basant sur la théorie de l’évolution des entreprises de Joseph Schumpeter, qui dit qu’une entreprise est comme un organisme. François Zaninotto a voulu montrer les avantages et risques de mutation (utilisation de l’agilité) dans une entreprise, car comme tout organisme vivant, elle est soumise à la loi de l’évolution.

Il est assez difficile de faire un résumé de cette conférence car elle comportait beaucoup de références de théoriciens (Darwin, Schumpeter…) et utilisait des termes spécifiques liés au milieu biologique. Voici quelques idées qui ont été exprimées :

La mutation (Utilisation de l’agilité) :
L’application de cette méthode dans une équipe permet d’obtenir une approche réactive et itérative, comme les organes d’un corps humain. Afin de responsabiliser (impliquer) le client, l’équipe se focalise sur les fonctionnalités souhaitées par celui-ci, en mettant en place des processus de livraison par étapes.
Ces étapes peuvent multiplier les estimations, et mettent en avant le besoin d’un nouvel organe (le consultant) et si ce nouveau greffe n’est pas bien pratiqué, alors il peut y avoir rejet ou contagion, comme le virus H5N1.
Lors de la fusion (livraison) des diverses fonctionnalités, on fait appel à des cobayes (testeurs), qui ont comme objectif de trouver un « Bug » (insecte).

La sécurité psychologique :
Certaines mutations sont nécessaires. Comme elles peuvent provenir de l’extérieur, cela peut devenir plus difficile pour un organisme (entreprise) de s’adapter et de se protéger des prédateurs. Nous l’avons vu avec la transition technologique (Minitel au Smartphone connecté, CD au MP3…).

De la valeur en continu :
Selon la taille de l’organisme (entreprise), la mutation peut se faire plus rapidement et ainsi en tirer des avantages. Par exemple une fourmi met environ 4,5 jours à s’adapter, contrairement aux 150 ans pour la tortue. Certains grands organismes (Banque…) ont assez de réserve pour résister ou retarder leur mutation.
Une des choses à retenir de cette conférence, c’est que l’agilité n’est pas une méthode hasardeuse. Elle devrait servir à rendre les personnes heureuses et pour se faire :
« L’agilité doit viser une amélioration générale de diverses entreprises et non pas juste le milieu informatique. »

GraphQL, plus de raison de ne pas l’essayer !

par Aurélien David

Nous n’avons pas assisté à cette conférence et pourtant, à la suite de certains retours et visions des slides, elle paraît répondre aux problématiques délaissées par les anciennes conférences autour de GraphQL que nous avions pu voir avec notamment :

  • le cache HTTP sur des requêtes en POST que beaucoup qualifiaient d’impossible ;
  • des lenteurs lorsque l’on effectue des requêtes avec plusieurs niveaux d’objets reliés entre-eux ;
  • le monitoring des endpoints qui par défaut sont beaucoup moins verbeux que du REST.

Nous attendons avec impatience, la vidéo !

Aggressive PHP quality assurance in 2019

par Marco Pivetta

Comme toujours, très bonne conférence de Marco Pivetta alias @ocramius qui avait pour but de nous indiquer l’importance de la qualité et avec quels outils on pouvait y accéder.

Marco Pivetta a commencé par illustrer le fait que la qualité n’est pas toujours prise en compte, et pourtant, elle a des répercussions non négligeables sur le nombre de défauts qui apparaissent et sur leurs coûts de correction qui s’accroîent au cours de la vie d’un projet.

Par la suite, Marco nous a parlé d’intégration continue avec un ensemble de conseils et d’outils tels que :

  • des outils d’analyses statiques : PHPStan, Deptrac (https://github.com/sensiolabs-de/deptrac), Phan, PHP Inspections EA et le plus présenté : Psalm
  • des outils de tests : PHPUnit, Behat, PHPSPec, Infection
  • des conventions de codage avec PSR-12 (qui a récemment été accepté) et des conventions de doctrine
  • et bien d’autres visibles dans le support de l’auteur.

Symfony HttpClient vs Guzzle vs HTTPlug

par Nicolas Grekas

La conférence nous a permis de comprendre l’intérêt de ce nouveau composant Symfony.

Nicolas a commencé par un rappel des fonctions PHP dont on disposait pour effectuer des requêtes HTTP avec :

  • “fopen” qui était la première façon de faire ;
  • “curl” qui est arrivé avec un lot de fonctionnalités et de paramètres beaucoup plus important ;
  • “fsockopen” qui est une fonction plus bas niveau permettant de faire également du SSL.

Il a ensuite énuméré les librairies existantes avec :

  • Guzzle qui n’était pas forcément bien architecturé jusqu’à sa version 3 mais a permis de populariser avec son petit frère Buzz, les clients HTTP en PHP
  • HTTPlug qui avait pour objectif d’uniformiser les interfaces et d’unifier tous les clients avec le respect de la PSR-18 pour sa version 2
  • Et enfin Symfony HttpClient qui se base sur HTTP/2 et permet d’effectuer des requêtes HTTP avec le choix d’utiliser derrière une implémentation qui se base sur curl ou f(sock?)open. Ce composant est apparu afin d’avoir des performances optimales en permettant de faire de vraies requêtes asynchrones en stream et multiplexées.

Nicolas Grekas a d’ailleurs montré en direct un comparatif entre Guzzle vs HttpPlug et HttpClient de Symfony avec des tests de téléchargement d’images allant à 0.5s pour Symfony HttpClient contre des tests multipliés par 10 voire plus pour les autres.

Contrairement à ses concurrents, HttpClient permet :

  • de simuler des requêtes avec une fonctionnalité de mock ;
  • de restreindre certaines informations envoyées telles que les informations d’authentification ;
  • d’utiliser le composant Browserkit de Symfony pour crawler et faire des tests fonctionnels. La librairie Goutte n’est donc plus maintenue à partir de maintenant.

Symfony Checker is coming

par Valentine Boineau

L’utilisation de nombreuses dépendances dans un projet Symfony, peut entraîner des vulnérabilités. C’est pourquoi Valentine Boineau a présenté Symfony Checker, qui permet de mettre en avant, par exemple, des erreurs liées à l’évolution de variables tout au long d’un projet.

Ci-dessous un exemple qui montre l’évolution de la variable $a pendant un code :

Cet outil semble prometteur et simplifiera les tests à venir sur les projets. Le seul problème est qu’il fait partie de SymfonyInsight qui est payant.

Devenir un Lead Dev – Échecs et succès

par Romain Monceau

Un bon retour d’expérience, honnête, avec lequel tout lead developer pourrait se retrouver sur des problématiques assez récurrentes. Le context du projet énoncé était intéressant et les conseils étaient de bonne qualité.

Tout pour se préparer à PHP 7.4

par Damien Seguy

Pour bien se préparer à l’arrivé de PHP 7.4, Damien Seguy nous présente les nouvelles fonctionnalités et améliorations de cette version de PHP.
La sortie de cette nouvelle version est prévue pour le 28 novembre 2019.
Ses slides présentées lors du Forum PHP énumèrent les nouveautés en 7.4.

Slides de Damien Seguy

De CRUD à DDD, comment Meetic a sauvé son legacy

par Jean-Marie Lamodière

2ème conférence du forum sur le sujet de l’architecture hexagonale mais cette fois-ci avec un focus sur le principe DDD (Domain Driven Design) chez Meetic. Le DDD ne fait pas parti de la clean architecture mais c’est un principe qui porte des valeurs en commun, au même titre que les principes SOLID se rapprochent du pattern “port & adapter”.

Jean-Marie nous a expliqué la transition faite chez Meetic. Il a donné des exemples d’application mais également des conseils pour savoir quand les utiliser et quand on passe dans l’over engineering.

C’était plaisant de voir de plus en plus de cas pratiques et de retours d’expérience réels sur ces concepts qui avant étaient expliqués en grande partie de manière théorique.

Une année de PHP asynchrone en production

L’architecture progressive

par Matthieu Napoli

Une conférence qui parlait de l’évolution de l’architecture des applications qui ne fait qu’évoluer et d’une course vers quelque chose qui n’existe pas, la recherche de la perfection.

Matthieu nous a expliqué qu’il n’y a pas de solution parfaite, le principal étant la démarche avec 3 paramètres :

  • le besoin : avec un niveau de complexité technique qui doit dépendre de la complexité métier
  • le business : avec les 3x (explore, expand, extract) qui signifient que la qualité n’est pas toujours une priorité et que l’on pourrait se permettre d’avancer très vite afin de valider des hypothèses pour ensuite prendre le temps de stabiliser l’application
  • l’humain : parce que les gens changent, évoluent et progressent.

Matthieu a donné des pistes d’implémentation pour répondre à des problématiques métier avec notamment un clin d’oeil à une conférence d’Arnaud Lemaire parlant de Monolithes et Micro-services.

Slides de Mathieu Napoli

Conclusions

Fabien Salles :

J’ai énormément apprécié d’avoir autant de retours d’expérience sur des principes et méthodes d’architectures assez avancés mais également avec une prise de recul et une vision pragmatique. Ma conférence préférée était celle de Matthieu Napoli parce que je me suis retrouvé dans son évolution et vision de la recherche de la perfection. Toutes les autres restaient très enrichissantes avec un niveau et des sujets que j’ai globalement préférés par rapport aux années précédentes.

J’ai également aimé l’ambiance générale du Forum qui est dans le partage, la convivialité et dispose de beaucoup de bienveillance. Cela fait 3 ans que je participe à l’évènement et j’espère continuer d’y aller.

Guillaume Autret :

Pour mon tout premier Forum PHP, le retour que j’en ai est très positif.
Les conférences étaient vraiment très riches que ce soit en retours d’expérience ou simplement en théorie.
Hormis le fait que je n’ai pas gagné de trottinette électrique :(, l’atmosphère globale du forum était vraiment très bonne et conviviale.

Daniel GODIN :

Le Forum PHP 2019 était une première pour moi. J’avais un peu peur de l’organisation et que les conférenciers ne fassent que réciter leur présentation sans aucune interaction avec le public. C’était totalement l’inverse, j’ai beaucoup apprécié l’ambiance, la gestion, les échanges entre les intervenants et participants.

J’ai adoré le fait que les conférences ne portaient pas uniquement sur le langage PHP. Une de mes préférées était celle de François Zaninotto :

“Si Darwin avait raison, l’agilité fonctionne par hasard”.

—-

Si vous souhaitez en apprendre plus sur le Forum PHP 2019, n’hésitez pas à découvrir les notes, commentaires et certaines slides sur joind.in.
Tous les supports et vidéos devraient être référencés sur le site de l’afup prochainement.


  • API

  • PHP

  • Qualité

  • SfPot