14min.

Ce que nous retenons du Forum PHP 2019

À l’occasion de sa 13e édition, l’équipe de JoliCode s’est à nouveau rendue au Forum PHP pour deux jours de partage, de conférences, de veille technique et de papotage !

Comme chaque année, l’équipe de l’AFUP a fait un travail de sélection et d’organisation qui force l’admiration. Revenons ensemble sur les faits marquants de l’événement.

Section intitulée l-architecture-logicielleL’architecture logicielle

Section intitulée php-pragmatic-developmentPHP pragmatic development

Frédéric Bouchery a ouvert le bal en nous rappelant d’être pragmatique. Nous aimons beaucoup la philosophie ainsi partagée, valorisant l’efficacité et la vélocité à la pure beauté architecturale et la soi-disant évolutivité d’un code.

Vous êtes votre futur legacy.

Nous connaissons déjà tous la philosophie DRY : Don’t Repeat Yourself, qui promeut une façon de coder sans redondance. Frédéric, lui, nous propose la philosophie WET : Write Everything Twice ! L’idée derrière est de ne refactoriser qu’à partir de la troisième répétition. Factoriser avant n’est pas nécessaire. De plus, attendre permet d’avoir des contextes d’usages différents et ainsi de “mieux” factoriser son code.

En somme, soyez pragmatiques ! Mettez de côté les paradigmes que vous jugez trop stricts pour vous concentrer sur les fonctionnalités. Et le jour où le besoin se fera vraiment ressentir, refactorisez !

Section intitulée une-application-resiliente-dans-un-monde-partiellement-degradeUne application résiliente dans un monde partiellement dégradé

Pascal Martin, DevOps chez M6 Web, nous a présenté les concepts de contrat (SLA — Service-Level Agreement), d’objectif (SLO — Service-Level Objective) et de mesure (SLI — Service-Level Indicator) ainsi que les pièges des mesures en x-nines, c’est-à-dire en nombre de « 9 » d’une expression du type « uptime : 99.99% ». Avec des schémas simples, nous avons découvert comment la continuité de service, exprimée en « nines », peut être impactée par certains choix architecturaux.

Everything will fail over time.

Toute plateforme complexe n’existe que dans un état partiellement dégradé. Pour pallier ce problème, Pascal nous a présenté le Chaos Engineering, un genre de stress test ultime d’une application, mettant à l’épreuve toute une architecture. Des outils, comme Chaos Monkey, existent et permettent d’éteindre des machines de manière aléatoire, testant ainsi la résilience du reste de la stack.

Des alertes doivent être mises en place mais intelligemment : quand il est nécessaire et possible d’intervenir. Dans ces moments d’urgence, le ressenti utilisateur est la priorité. Par exemple, une mauvaise expérience pour 10% des utilisateurs vaut mieux qu’un site KO pour tout le monde. On parle alors de site dégradé. Par ailleurs, il est important de documenter chaque incident, l’origine, mais aussi les étapes de résolution de la crise.

Section intitulée agressive-php-quality-assurance-in-2019Agressive PHP Quality Assurance in 2019

Marco Pivetta, mieux connu sous son pseudonyme Ocramius pour les utilisateurs de Doctrine, a débuté son talk par une démonstration factuelle du coût d’un bug, ou d’une évolution, à travers le temps.

Évolution du coût d'un bug

Par la suite, Il a exprimé ses préconisations d’outillage pour améliorer sa stack de tests et garantir une efficacité maximum avec un effort humain minimum : « CI ! CI ! CI ! ».

Les outils de QA deviennent indispensables. Ils changent la façon d’appréhender le code pour les développeurs, qui à l’aide par exemple d’annotations, faciliteront l’analyse des outils en aval. Voici quelques-uns des nombreux outils dont il a parlé :

Section intitulée se-premunir-contre-l-imprevisible-une-analyse-des-failles-les-plus-courantes-en-phpSe prémunir contre l’imprévisible : une analyse des failles les plus courantes en PHP

Paul Molin, spécialisé dans les problématiques de sécurité nous a présenté les failles de sécurité les plus récurrentes. Bien qu’assez connues et souvent corrigées, il est important de savoir qu’elles existent et comment s’en prémunir afin d’éviter les erreurs les plus courantes :

  • Identifier les différents points d’entrée possibles ;
  • Cumuler isGranted et getOwner afin de limiter au maximum les failles d’Access Control ;
  • Empêcher les injections SQL ;
  • Empêcher l’exécution de code à distance ;
  • Ajouter des tokens CSRF ;
  • Anticiper le déni de service.

De plus, des outils comme le Security Checker de Symfony sont à votre disposition ; ainsi que des listes de mots de passe ayant fuités, afin d’avertir un utilisateur si son mot de passe préféré est déjà connu.

Section intitulée nouveautes-du-monde-phpNouveautés du monde PHP

Section intitulée what-s-new-in-opcacheWhat’s New in opcache

Julien Pauli, core contributeur PHP, nous a parlé des nouvelles fonctionnalités de OPCache. OPCache est le composant de PHP qui a la responsabilité de mettre en cache les OPCodes générés à partir de votre code PHP, ces OPCodes étant les instructions un peu plus bas-niveau qui vont être exécutées par la VM de PHP.

Cette opération de transformation du code PHP en OPCode est très coûteuse et elle est nécessaire avant chaque exécution d’un script PHP. Heureusement, il est possible de mettre en cache cette conversion et c’est ce qui est fait depuis PHP 5.5. Ainsi, le code n’est plus compilé que lors de la première exécution de ce script, les exécutions suivantes pouvant réutiliser les OPCodes déjà générés.

Lors de cette conversion, OPCache est également capable d’optimiser votre code PHP. Par exemple, $expiration = 60 * 60 * 24 sera directement converti en $expiration = 86400.

Nous vous invitons à découvrir toutes les optimisations effectuées par OPCache dans les slides de Julien : PHP 7 OPCache extension review.

Section intitulée php-8-et-compilation-jitPHP 8 et compilation JIT

Le sujet de JIT et PHP 8 a été creusé par Benoît Jacquemont, fondateur d’Akeneo. Il a retracé l’histoire du JIT dans PHP : depuis son échec dans PHP 5 jusqu’à son arrivée dans PHP 8 (même s’il sera désactivé par défaut).

Actuellement, lorsque que nous exécutons du PHP, celui-ci est d’abord converti en OPCode pour être ensuite exécuté par la VM de PHP. Grâce à JIT, PHP pourra compiler ce code intermédiaire en code natif (propre à un processeur donné) pendant l’exécution du script. Il améliore théoriquement la performance de ce code puisque nous ne passons plus par la VM de PHP, mais directement par le processeur. JIT est donc une alternative à la compilation AOT (Ahead-of-Time) qui va compiler une application avant l’exécution (le langage C utilise une compilation AOT par exemple).

Même si PHP fait d’ores et déjà partie des langages interprétés les plus rapides (loin devant Python par exemple), l’arrivée de JIT était en théorie une super avancée pour la performance de PHP. Malheureusement, la plupart du temps, notre code PHP communique avec des services tiers (base de données, fichiers, appels API, etc.). Et c’est souvent dans l’attente de ces IO (Input/Ouput) que les performances de PHP sont le plus impactées. Comme on pouvait l’attendre, JIT ne va donc pas améliorer les performances globales de nos sites Web. En revanche, pour les cas où les calculs CPU sont très importants, JIT sera bénéfique. Et cela permettra peut-être de faire apparaître de nouveaux usages pour PHP.

Section intitulée tout-pour-se-preparer-a-php-7–4Tout pour se préparer à PHP 7.4

Quelles sont les nouveautés de PHP 7.4 ? Qu’est-ce qui ne fonctionnera (bientôt) plus (spoiler alert : les short tags) ? Avec une flopée d’exemples et de contre-exemples, Damien Seguy nous démontre l’utilité ou l’inutilité de certains usages. Une conférence très pédagogique dont une partie était dédiée au typage, comme la possibilité de typer les propriétés d’une classe. Cependant, si vous faites du PHP moderne, vous ne devriez pas être impacté par les dépréciations.

Ternaires imbriqués

La star du Forum, c’était également l’arrivée de FFI, dont l’utilité est discutable selon Damien Seguy :

c’est eval, mais en pire

ndlr: nous ne sommes pas du tout d’accord avec ce postulat.

De notre côté, nous avons adoré la démo du pilotage d’un driver Bluetooth pour contrôler sa musique via PHP lors des Lightning Talks : ça ne sert à rien mais ça ouvre des portes !

Section intitulée symfony-httpclient-vs-guzzle-vs-httplugSymfony HttpClient vs Guzzle vs HTTPlug

Nicolas Grekas nous a présenté le nouveau composant Symfony HttpClient. Nous sommes donc revenus sur les prémices des clients HTTP, avec des comparaisons entre les différentes possibilités que nous offre PHP et son écosystème pour faire des appels HTTP : fopen, fsockopen, curl, Guzzle, etc.

Grâce notamment au travail effectué depuis plusieurs années par l’équipe de HTTPlug et PSR-18, Symfony nous propose aujourd’hui deux implémentations, une « native » manipulant directement les streams de PHP, l’autre utilisant l’extension Curl si disponible.

Les promesses de ce nouveau client HTTP sont de simplifier la gestion des appels HTTP en PHP et de tirer pleinement parti des possibilités offertes par HTTP2 et Curl, notamment la possibilité de bulker ses requêtes pour ne faire qu’un appel pour l’ensemble des requêtes. La petite démonstration effectuée et les différents benchmarks ont bluffé la salle entière en permettant de télécharger plusieurs ressources en parallèle avec une vitesse largement supérieure à celle de la concurrence.

Le but de Symfony n’est pas pour autant de tourner le dos aux nouveaux standards PSR-17 et PSR-18 puisque Symfony fournit d’emblée des adaptateurs pour les interfaces de HTTPlug et PSR-18.

Et avec le nouveau système de Contrat dans Symfony (des interfaces qui ne devraient jamais évoluer), le but est également d’éviter les problématiques d’incompatibilités telles que celles que nous avons pu connaître avec Guzzle 3 et 4.

Section intitulée une-annee-de-php-asynchrone-en-productionUne année de PHP Asynchrone en production

Benoit Viguier, Lead Dev chez M6, nous détaille dans son talk le passage en asynchrone d’une partie de leur architecture. Après avoir benché l’utilisation de ReactPHP et AMP, ils ont préféré la syntaxe d’AMP. Ne voulant pas avoir de couplage avec une event loop, ils ont créé Tornado : un ensemble d’interfaces et une collection d’adaptateurs pour pouvoir changer si besoin.

La conférence, très didactique, nous propose pas-à-pas d’optimiser nos appels de méthodes asynchrones pour suivre une logique utilisateur pertinente, puis conclut sur la facilité de formation des équipes internes à ces nouvelles habitudes.

Benoît précise pour conclure que :

Si une stack trace est lisible, c’est qu’on fait mal de l’asynchrone.

Et ce n’est pas faux !

Section intitulée les-outils-autour-de-phpLes outils autour de PHP

Section intitulée redis-ce-n-est-pas-que-pour-le-cacheRedis ce n’est pas que pour le cache

Notre collègue Grégoire Pineau a présenté les larges fonctionnalités qu’offre Redis, que nous sous-utilisons probablement bien trop souvent, en ne lui confiant « que » notre cache.

Les différentes complexités

On y découvre alors un ensemble de méthodes extrêmement rapides et utiles, pour peu que l’on ne soit pas dans un contexte ACID.

Outre une présentation des cas d’utilisations les plus courants, la démonstration de parcours d’un tableau d’urls nous a bluffé.

Section intitulée graphql-plus-de-raison-de-ne-pas-essayerGraphQL plus de raison de ne pas essayer

Dans son talk, notre copain Aurélien David, alias Spyl, a présenté les possibilités offertes par GraphQL, avant de casser certains à-prioris négatifs, comme la gestion du cache HTTP, la rapidité, le monitoring ou la sécurité et d’y proposer des solutions.

Au fil des bonnes pratiques évoquées et des nombreux outils utilisés pour tirer pleinement profit de la puissance de GraphQL, nous avons mieux compris comment, chez Cap-Collectif, ils ont réussi à améliorer grandement leur API.

Section intitulée jane-le-generateur-de-codeJane, le générateur de code

Notre collègue Baptiste Leduc a profité de la session des Lightning Talks pour présenter JanePHP et ses fonctionnalités pour créer un client d’API à partir de sa définition OpenAPI (anciennement Swagger).

Jane permet ainsi la génération d’un SDK complet, compatible PSR-18, avec les classes nécessaires à la manipulation de votre API : les endpoints, les modèles représentant la structure des données échangées, mais aussi des normalizers permettant au Serializer de Symfony de transformer (avec une grande performance) ces modèles PHP en JSON et vice-versa. Une fois ces classes générées, vous pourrez alors interagir avec votre API en un rien de temps et en ne manipulant que des objets.

Section intitulée au-dela-de-la-techniqueAu-delà de la technique

Section intitulée concevoir-pour-des-futurs-souhaitablesConcevoir pour des futurs souhaitables

Marie-Cécile Godwin et Thomas Di Luccio nous ont présenté différents futurs pour les décennies à venir. Hélas, les futurs qui nous sont toujours largement ouverts ressemblent plus à des dystopies. En effet, avec l’expansion de tous ces gadgets électroniques (entre autres) au fil des années, on puise dans les ressources naturelles limitées que nous offre la Terre.

Il reste tout de même une petite porte vers un monde où tout n’est pas perdu, mais pour l’atteindre il faudrait, dès aujourd’hui, remettre en question ce dont nous avons vraiment besoin et cesser de s’encombrer de gadgets dont nous croyons avoir besoin.

Sur un sujet similaire, nous avons aussi eu l’intervention de Richard Hanna. Il évoque, dans son Lightning Talk, l’impact du numérique sur l’environnement et ce que nous pouvons faire à notre niveau (achetez moins de matériel !)

Parmi les liens partagés nous retenons :

Nous apprécions aussi les efforts réalisés par l’AFUP concernant la gestion des goodies, la réduction de l’usage du plastique (aucune bouteille plastique, très peu de vaisselle jetable), le repas conférencier… C’est appréciable ! 😎

Section intitulée si-darwin-avait-raison-l-agilite-fonctionne-par-hasardSi Darwin avait raison, l’agilité fonctionne par hasard.

Fidèle à lui-même, François Zaninotto nous a livré une conférence aussi intéressante sur le fond que sur la forme. Se présentant sous le pseudonyme « Eugène Fournier », professeur entomologiste, il a tenté d’expliquer le fonctionnement des entreprises comme des éléments vivants et impactés par les mécanismes de la sélection naturelle et de l’évolution.

Présentant la méthodologie Agile comme une mutation de certaines entreprises pour s’adapter à un nouvel environnement, François, pardon Eugène, nous a démontré que, comme toute mutation génétique, le changement du fonctionnement d’une entreprise peut parfois, mener à une évolution bénéfique, et d’autre fois, précipiter l’organisme vers sa fin. Les très grosses entreprises, elles, disposent de suffisamment de ressources pour ne pas être impactées immédiatement par le changement du monde extérieur, ce qui retarde leur besoin d’évolution.

Section intitulée neuro-atypies-et-itNeuro-atypies et IT

Alex Rock a pris le temps de nous sensibiliser avec bienveillance sur les neuro-atypies sous toutes leurs formes, en se prenant en exemple. On a ainsi pu découvrir les travers des recrutements de profils atypiques, leur intégration actuelle, et réfléchir ensemble à des pistes pour augmenter la présence de ces profils dont seulement 20% sont représentés dans le monde du travail (à plein temps). Finalement, le mieux est peut-être de traiter tout le monde de la même manière : du mieux qu’on peut.

Section intitulée le-forum-php-vu-par-une-choLe Forum PHP vu par une CHO

CHO chez JoliCode, Johanna était également présente au Forum PHP, pour vivre sa première conférence. Elle nous livre son retour d’un point de vue non technique :

Je m’attendais à m’ennuyer (mes collègues me l’ont souvent répété d’ailleurs) et pourtant. S’il y a effectivement des conférences très techniques auxquelles je n’ai pas assisté (j’ai préféré laisser ma place à un développeur ou à une personne à qui la conférence aurait été plus utile), il y a en a eu d’autres bien plus abordables, plus proches des ressources humaines : les développeurs juniors en reconversion, la neuro-atypie et l’IT et une mention spéciale pour la conférence de François Zaninotto sur la méthode Agile. Sans parler de la dernière conférence du Forum, « Pratiquer la physique avec Star Wars », au cours de laquelle Roland Lehoucq nous démontre notamment, toujours avec une démarche scientifique, qu’un sabre-laser a une puissance équivalente à celle d’une centrale nucléaire.

Ma première impression sur ce Forum PHP a été d’arriver à une DreamHack, mais avec une approche plus studieuse. Sur scène ou dans le public, la majorité est clairement masculine, même si plusieurs développeuses sont bel et bien présentes.

Pourtant l’ambiance est bienveillante et chaleureuse, loin de l’image un peu froide et décalée que l’on peut avoir des écrans tout noirs remplis de lignes de code. Cela a été aussi l’occasion pour moi d’échanger avec les RH présents sur les différents stands et pouvoir comparer nos expériences (et qui ne sont en fait pas si différentes que ça !). L’expérience s’est donc révélée agréable (bien que fatigante), d’autant plus par l’accueil chaleureux des membres de l’AFUP, que ça soit la veille pour installer le stand ou durant les deux jours du Forum.

Il serait dommage pour les RH ou autres métiers qui côtoient des développeurs tous les jours de ne pas se rendre à ce genre d’évènements de temps en temps. Si l’intérêt professionnel nous est forcément limité par les connaissances techniques, c’est pour nous, non tech, un excellent moyen de se plonger dans la passion qu’ont les développeurs pour les connaissances techniques. On admire leur capacité à vouloir en savoir toujours plus et à relever des défis techniques qui nous dépassent. On les remercie d’ailleurs de nous faciliter la vie, à nous CHOs (l’occasion de parler de Secret Santa, un projet open source développé par JoliCode pour organiser vos Secret Santa par le biais de Slack ou Discord).

Section intitulée on-se-voit-l-annee-prochaineOn se voit l’année prochaine !

Les 25 ans de PHP, les 20 ans de l’AFUP : le prochain Forum PHP sera l’occasion de fêter deux grandes étapes ! Spoiler : nous y serons.

En conclusion de cet article, nous voulons remercier encore une fois tout le staff de l’AFUP qui a fait un travail extraordinaire : organisation éco-responsable, sobriété dans les goodies, mise en avant de la diversité, bienveillance, et bon choix de speakers. N’oublions pas qu’ils sont tous bénévoles !

Comparé aux années précédentes, nous avons noté moins de conférences sur le DDD, l’Architecture Hexagonale, la Clean Architecture, etc., mais un retour en force de la réflexion à avoir au démarrage d’un projet sur l’architecture qu’il doit utiliser. Elle est fonction du métier, du business et de l’humain dans les équipes. Mention spéciale à Matthieu Napoli qui nous rappelle que même si toutes les architectures sus-citées sont bonnes, elles ne sont pas toutes adaptées à tous les projets.

Un dernier mot au sujet de redirection.io, un outil d’optimisation du SEO technique développé par JoliCode et qui disposait d’un stand « sponsor » au Forum PHP. Nous avons eu de nombreux retours et questions pendant les deux jours de la conférence, et cela nous a beaucoup plu de pouvoir présenter ce nouvel outil à la communauté. Si vous ne connaissez pas encore, redirection.io propose une interface agréable aux consultants SEO ou aux équipes marketing pour qu’ils puissent effectuer de manière autonome, sans intervention technique, les opérations courantes liées à leurs besoins (mise en place de redirections, changements de balises meta, ajout de données structurées, etc.). N’hésitez pas à tester redirection.io et à nous dire ce que vous en pensez !

À l’année prochaine pour le Forum des 20 ans de l’AFUP 🐘

Le logo afup

Photos par Julien Pauli.


Cet article porte sur la conférence Forum PHP 2019.

Forum PHP 2019

Commentaires et discussions

Nos articles sur le même sujet

Ces clients ont profité de notre expertise