Retour sur le Forum PHP 2019

Fabien

Fabien, Architecte web 15 novembre 2019

La 18e édition du Forum PHP a eu lieu les 24 et 25 octobre 2019 à Paris. Trois membres de l’équipe technique étaient présents pour suivre un maximum de conférences sur les 29 proposées. Voici une petite sélection des conférences qui nous ont le plus marqués.

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

Intervenant : Jean-Marie Lamodière
Poste : Lead-dev backend

conférence forum php 2019 jean marie lamodiere

Parmi toutes les conférences sur l’architecture logicielle, l’une des plus marquantes a été celle traitant de l’évolution de l’architecture du code existant chez Meetic.

Après nous avoir présenté l’histoire de l’architecture de leur projet (du CRUD à l’architecture en couche), Jean-Marie Lamodière s'est focalisé sur les avantages de la dernière évolution en DDD.

On peut noter sur cette dernière version :

  • un Domain explicite pour favoriser le dialogue entre la technique et l’équipe produit
  • l'élimination de code smell comme les anti pattern Feature envy, temporal coupling, primitive obsession et Lavaflow
  • l’utilisation de bonnes pratiques comme le Rich Domain Model, Value Object, Intention revealing interfaces, Command Query separation et Low coupling high cohesion
  • l’utilisation de Port lié au domaine et l'adaptation liée à l’infrastructure qui peut être couplée à Symfony ou Doctrine

Finalement, on nous a présenté une utilisation assez complète de l’architecture DDD mais appliquée avec pragmatisme. Le pragmatisme a été une doctrine assez partagée entre les différentes conférences traitant de l’architecture logicielle durant ce Forum PHP.

Plus d'informations sur cette conférence

Tout pour se préparer à PHP 7.4

Intervenant : Damien Seguy
Poste : directeur technique chez Exakat Ltd

Se préparer à PHP 7.4 conférence forum php 2019

La conférence de Damien Seguy avait pour but de nous présenter les nouveautés de PHP 7.4 qui seront disponibles fin novembre.

On a noté des incompatibilités :

  • les ternaires imbriqués nécessiteront des parenthèses
  • les short tag n’existeront plus et seront interprétés comme du texte
  • le type real sera supprimé, l’utilisation du type float est similaire

Des nouveautés :

  • l’ajout des séparateurs numériques
  • la possibilité de typer les propriétés, pour un code plus strict
  • l’opérateur … pour les array, déjà présent dans d’autres langages
  • les fonctions fléchées, pour faire des closure simplifiées
  • le contravariant / covariant, pour les retours typés en cas d’héritage
  • l’ajout de l’opérateur d’affectation coalesce null ??= qui affecte directement la valeur en cas de non null
  • des nouvelles méthodes sérialisation __serialize et __unserialize

Cette liste est non-exhaustive. PHP 7.4 apporte de nombreuses autres nouveautés ou corrections. Nous avons noté un faible gain de performance par rapport à la version 7.3.

À noter également qu’il existe des outils d’aide à la migration vers de nouvelles versions de PHP - comme PHP Compatibility - qui s’incorporent dans PHP CS.

Plus d'informations sur cette conférence

Symfony HTTP Client VS Guzzle VS Httplug

Intervenant : Nicolas Grekas
Poste : développeur chez Symfony SAS

Symfony httpclient guzzle httplug conférence forum php 2019

Lors de cette conférence, Nicolas Grekas nous a présenté les différents moyens de faire des requêtes HTTP en PHP.

Il a commencé par les outils les plus "rustiques" comme Fopen, Curl et Fsockopen puis a enchaîné avec des clients HTTP PHP plus complets et simples d’utilisation comme Guzzle, Buzz, etc.

Il a ensuite parlé des dernières nouveautés :

  • Guzzle en version 5 et 6 qui possède une architecture plus normalisée
  • la librairie HTTPlug qui a pour ambition d’uniformiser l’utilisation de différents clients HTTP via l’utilisation d’interfaces compatibles PSR 7 et PSR 18 pour la version 2.0

Enfin, le client Symfony HttpClient a été développé pour être un client HTTP bas niveau. Il doit permettre d’appeler des API pour des opérations synchrones ou asynchrones. 

Ce client reprend beaucoup de principes de HTTPlug mais en ajoutant plus de simplicité, par exemple, la fonction toArray qui effectue un json_decode plus élaboré avec un traitement des erreurs. Il est possible d’utiliser une couche d’abstraction supplémentaire avec le composant HTTPClient Contracts.

Effet "Waouh" lors de la présentation de la compatibilité du client Symfony avec HTTP2 : les gains de temps sont impressionnants dans le cas de nombreuses requêtes vers un même hôte.

Mercure et PHP s'enamour enfin du temps réel

Intervenant : Kévin Dunglas
Poste : Fondateur chez les-tilleuls.coop

Mercure et PHP kevin dunglas forum php 2019

La conférence de Kévin Dunglas était portée sur le nouveau protocole Mercure qui permet de créer des API temps réel. Il a d'abord présenté les alternatives actuelles avec le protocole HTTP et les protocoles EventSource et WebSocket.

Les fonctionnalités de Mercure :

  • est full duplex en utilisant HTTP POST pour la publication et SSE pour la souscription
  • inclut de nombreuses fonctionnalités : reconnexion, historique, récupération de messages perdus
  • conçu pour REST et GraphQL
  • authentification basée sur JWT
  • conçu pour fonctionner seul
  • support du chiffrement de bout en bout
  • supporté par plus de 90 % des utilisateurs web, mais un polyfill existe pour les vieux navigateurs
  • intégré à API Platform
  • interopérable avec HTTP1 mais limité

Un mercure Hub a été créé pour permettre d’utiliser ce protocole avec les langages ne permettant pas la connexion permanente (comme PHP). Il est facilement utilisable dans un projet, une image Docker existe.

Plus d'informations sur cette conférence

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

Intervenant : Pascal Martin
Poste : DevOps chez M6

forum php pascal martin

La conférence de Pascal Martin traitait de la problématique de garantir qu’une application fonctionnera toujours malgré les aléas des services externes.

On a appris de nombreux termes :

  • X-nines : correspond à une mesure de disponibilité (4-nines -> 99,99 % soit 52,7 minutes d’indisponibilité par an)
  • SLI (Service Level Indicator) : correspond à une mesure qualitative d’un aspect du niveau de service qui peut correspondre à la latence, débit, disponibilité, etc.
  • SLO (Service Level Objective) : correspond à une valeur cible pour un niveau de service mesuré par un SLI par exemple <25 ms de latence ou >= 99,99 % de disponibilité
  • SLA (Service Level Agreement) : correspond à un contrat avec un client sur les conséquences si les SLOs ne sont pas atteints

développer application pascal martin forum PHP 2019

Sur l'image, un exemple explicite de ses termes.

L’utilisation de micro-services réduit la disponibilité d’une application. Chacun apporte son X-nines qui ne sera jamais disponible à 100 %. Ensuite, comme chaque API peut dépendre d’une autre API ou d’une BDD qui peuvent aussi tomber en panne, on est aussi dépendant de DNS et de services cloud, la disponibilité devient incertaine.

Cette conférence nous a également donné quelques clés pour bien gérer les cas où l’application est en mode dégradé, que ce soit en alerte ou technique.

Plus d'informations sur cette conférence

Conclusion sur le Forum PHP 2019

Ceci n’était qu’une sélection des conférences de ce Forum PHP édition 2019. L'intégralité des conférences nous a permis de rester informés sur les nouveautés techniques mais aussi sur l’organisation des projets, que ce soit aux niveaux humain ou organisationnel.