Nous étions à l'ApiPlatformCon, retour sur les conférences de l'édition 2023

Nous avons eu la chance de nous rendre à l’API Platform conférence 2023 à Lille.

Pour sa seconde édition, nous tenions à partager nos retours sur les conférences de cet événement dédié au framework d’API ApiPlatform.

Remercions sans attendre l’équipe de Les Tilleuls pour l’énergie qu’ils et elles ont déployés dans l’organisation d’une rencontre « qui a tout d’une grande » !

C’est parti webby 😻

En plein coeur de Lille, Euratechnologies

Les deux jours de conférences se sont tenus sur le complexe Euratechnologies à Lille, superbe site dédié aux activités liées au numérique.

Cette ancienne filature a été réhabilitée et les bâtiments proposent aujourd’hui une architecture qui remarquable, des hauteurs impressionnantes, une verrière sublime pour une expérience qui vaut déjà le détour en elle-même.

L’ApiPlatformCon comporte 2 tracks de conférences, donc 2 salles, avec un confort son et lumière au top, idéal pour suivre les speakers dans leurs présentations.

Pour voir quelques photos de l'événements :

Les conférences que nous avons aimées

Soyons clair, le programme de l’APIPlatformCon 2023 est passionnant et toutes les conférences que nous avons vues sont d’un niveau d’expertise qui vaut le déplacement.

Mais en toute sincérité, nous n’avons pas pu les voir toutes et nous allons vous partager celles qui nous ont le plus touchées ❤️

La keynote Kevin Dunglas FrankenPHP - Kevin Dunglas

La keynote était proposée par Kevin Dunglas qui nous a présenté la version 1.0 beta de FrankenPHP..

Ce nouveau serveur d’application dédié à PHP propose à la fois (grâce à une image Docker ou à un simple binaire exécutable) toutes les fonctionnalités proposées par un serveur web tout en étant capable d’exécuter du code PHP sans service tiers (PHP Fpm, FastCgi …).

C’est en fait un plugin Caddy qui nous fait bénéficier de fonctionnalités natives comme certificats SSL Acme en natif, ou autogénéré pour le développement, une configuration simplifiée etc. FrankenPHP supporte nativement HTTP 3, les 103 early hints, le protocole Mercure et le worker mode pour PHP.

Le worker mode ? oui, un mode optionnel qui, grâce aux coroutines de Go, permet de conserver en mémoire les informations communes à toutes vos requêtes, votre application ne boote qu’une seule fois au démarrage du serveur FrankenPHP.

Pour Symfony, il faut utiliser un runtime dédié prêt à l’emploi: https://github.com/php-runtime/frankenphp-symfony

Il est à noter que quelques ajustements sont à apporter à votre application et quelques effets de bords peuvent encore être observés (Doctrine est à surveiller).

Nous avions testé FrankenPHP en version alpha, nous allons faire une repasse pour tester cette beta.

À noter que Kevin Dunglas indique que FrankenPHP est production ready, car déjà bien éprouvé par la communauté sur des projets à enjeux.

Les slides de la keynote

Comment utiliser une Materialized View PostgreSQL avec API Platform ? Damien Levallois

Damien Levallois nous a présenté un talk autour des vues matérialisées proposées par PostgreSQL.

Afin de simplifier la couche liée à la recherche dans son application, Damien souhaitait se passer d’Elasticsearch tout en conservant un système de recherche en phase avec les besoins métiers.

Suite à des recherches, la solution basée sur les vues matérialisées a été testée. Une vue matérialisée permet de conserver les résultats d’une requête complexe sous forme de table dédiée.

Cela permet de se baser sur cette table pour créer une ressource ApiPlatform (read only).

Il reste à gérer via l’applicatif les demandes de rafraîchissement de cette vue matérialisée.

Dans le cas de Damien, il a utilisé les événements du kernel Symfony pour traiter les demandes de mise à jour de la vue matérialisée.

Talk très intéressant proposant une solution innovante.

Les Slides de Materialized View PostgreSQL

Cache HTTP pour les API REST - David Buchmann

Sujet très intéressant reprenant les bases du cache HTTP présenté par David Buchmann

Nous avons notamment découvert les ESI Json, qui, dans le cas de l’utilisation d’un reverse proxy de cache, permet de mettre en cache la représentation JSON d’une ressource afin de composer une vue côté cache HTTP (utile pour gérer le cas du cache HTTP sur des listes de ressources).

Les Slides de API Platform Caching

Valider vos données avec API Platform - Thibaut Arnoud

Thibaut Arnoud nous a présenté un rappel sur la validation des données dans API Platform en se basant sur le composant Validator de Symfony. Les erreurs à la dénormalisation peuvent être collectées via

#[ApiResour#[ApiResource(
    collectDenormalizationErrors: true
)]

Par contre, nous pouvons valider le format des données reçues par notre API (en amont de la désérialisation) en se basant sur le JSON Schema de notre API !

Pour cela il suffit de faire générer le schéma de notre API via une commande CLI proposée par API Platform et d’utiliser un validateur capable de valider les données vis à vis du JSON Schema.

Nous pouvons par exemple utiliser cette dépendance pour valider nos données https://github.com/justinrainbow/json-schema

C’est ce composant qui est utilisé par Composer pour valider le fichier composer.json.

Slides : on les cherche ! DM à @loic_emagma

API Platform revolution - Antoine Bluchet

Antoine Bluchet nous a fait un rappel sur les cycles de release pour API Platform.

Il nous a ensuite présenté les nouveautés des versions 3.x d’API Platform ! Dorénavant, la méthode PUT supporte la spécification HTTP à savoir que cette méthode met à jour ou crée la ressource.

Le support des erreurs de dénormalisation est maintenant supporté (comme nous l’avons vu avec Thibaut).

La team API Platform a aussi fait un gros travail pour découper le code en composants PHP standalone ! (Http cache, OpenApi, GraphQL, Elasticsearch …).

Afin de supprimer la dépendance à Symfony Http Kernel, l’architecture basée sur les event listeners a été abandonnée au profit du couple Provider / Processor.

Ceci apporte plus de souplesse dans l’implémentation et ouvre des opportunités nouvelles (support de Laravel, logique partagée au sein des composants, etc …).

Nous avons appris que la priorité des listeners au sein de Symfony n’est pas couverte par la Backward Compatibility Promise de Symfony, ce qui peut avoir un impact sur les applications qui utilisent les priorités lors des mises à jour de version.

Antoine nous a ensuite présenté le résultat d’une réflexion autour de la documentation d’API Platform. C’est toujours une tâche chronophage, difficile à mettre en place et à maintenir. L’équipe d’API Platform a donc décidé d’utiliser les commentaires au sein du code pour servir de base à la documentation.

Il en résulte une documentation contenue dans un simple exécutable PHP ….

«A guide is a PHP executable file that will be transformed into documentation»

Plus impressionnant, grâce à WASM, cet exécutable peut être exécuté au sein d’un navigateur grâce à WebAssembly !

La nouvelle documentation Wasm / PHP d’Api Platform

Les slides de ApiPlatform Revolution

Need for Speed: Removing speed bumps in API Projects - Łukasz Chruściel

Łukasz Chruściel que nous connaissons bien nous a présenté des pistes pour détecter les problèmes de performances au sein de nos projets API Platform.

Le profiler Symfony est notre ami, il nous permet notamment de vérifier le nombre de requêtes SQL exécutées pour une requête …

Basé sur un petit quiz avec la salle, Łukasz a exposé quelques exemples de ressources qui en fonction du mapping Doctrine associé donne une hausse des requêtes SQL.

Les slides de Need for Speed : removing speed bumps in API Projects

API Platform, Svelte et un max de buzz-words - Alex Rock

Alex Rock nous a fait un retour d’expérience sur sa vie de développeur, et comment il appréhende les nouvelles technos qui émergent dans notre écosystème !

Cela peut aller de la stack de développement, au choix du bon framework Javascript.

Avec une approche pragmatique et sans a priori, Alex a pris en main l’ensemble des techno frontends qui étaient adaptées à ses besoins projet afin de les comparer et de voir celle qui serait la plus pertinente. S’il est arrivé à la conclusion que - dans son cas - SvelteJS était la solution la plus adaptée, sa démarche continue lui permettra de ne pas manquer la prochaine évolution qui ne se fera pas attendre tant le sujet « frontend » reste en mouvement.

Slides : on les cherche ! DM à @loic_emagma

Un pas vers la décentralisation, reprenons le contrôle grâce à OIDC !

Sujet très intéressant, où Vincent avec une grande pédagogie, a repris les principes de base de l’authentification décentralisée, comment intégrer cela dans nos applications ? Oauth et OIDC nous apportent une solution !

Après des rappels sur la genèse de Oauth et d’OIDC, Vincent nous a présenté l’intégration de ces technologies au sein d’Api Platform.

Un petit rappel, la documentation Swagger exposée par ApiPlaftorm doit aussi être sécurisée ! Lire l’article reprenons le contrôle grâce à OIDC

Subresources, the easy way with API Platform 3 - Mathias Arlaud

Mathias Arlaud est un contributeur de Symfony et d’ApiPlatform, dans ce talk il revient sur la gestion des ressources imbriqués dans ApiPlatform 3.

Ce qui a longtemps été difficile ou tricky à mettre en oeuvre - la récupération de ressources liées à une ressource principale - est aujourd’hui possible et intéressant du point de vue des performances des applications : moins d’appels pour avoir l’information utile.

Le problème de fond est “comment proposer des url de ressources et sub-ressources cohérente en REST ?”.

La solution est de construire par le biais des valeurs d’attribut uriTemplate, parentUriTemplate, uriVariables et status un moyen pour ApiPlatform d’identifier quelles ressources aller chercher lorsque l’url est décodée.

La conférence est fun avec une série interminable de “une dernière feature importante pour le client” et pédagogique.

Les slides de Subresources the easy way

Create the DTO System of your Dreams: stateOptions + entityClass - Ryan Weaver

Ryan Weaver nous a présenté le résultat de sa réflexion concernant la nouvelle architecture d’Api Platform permettant plus facilement de découpler les ressources API des entités dont elles dépendent !

Les providers et processors nous aident pour accomplir la tâche !

Le talk nous montre comment Api Platform pourrait permettre l’utilisation de DTO en lieu et place des entités, tout en gardant les avantages de la pagination et du filtre opéré par Doctrine.

Dans ses expérimentations prometteuses, Ryan a également développé une librairie de micro-mapping pour faciliter le passage d’information entre le DTO et l’entité. Cette expérimentation n’est pas tombée dans l’oeil d’un sourd puisque sur le retour de l’ApiPlatformCon, Soyuka a fait une PR pour créer un composant Mapper porté par Symfony !

Les slides de DTO System of your Dreams

Remplacer une base de données par une API sans toucher l’existant, Mission Impossible ? Smaïne Milianni

Smaïne Milianni nous a préparé une prestation de haut vol, pleine d’humour et de tech !!!

Le challenge ? passer d’une architecture basée uniquement sur des entités à une architecture plus souple capable de consommer des données issues d’une API !

Sa stratégie, créer des repositories capables de consommer l’API et les intégrer de manière progressive dans les repositories ORM !

Simple ? pas sûr… il faut penser aux relations embarquées dans nos entités et à leur état de migration.

Nous décernons à l’unanimité de nous deux le prix de la conférence la plus vivante de ce ApiPlatformCon, et n’oublions pas que la plus sucrée des deux est amère : dans tout choix il faut faire des compromis, aucune solution ne peut proposer uniquement des avantages 🙂

Les slides de la Mission Impossible

Un grand merci

À la team des Tilleuls pour l’organisation impeccable et humaine de cet événement vraiment agréable, et intéressant.

À très bientôt sur un autre événement de l’écosystème PHP Symfony, ou encore à l’ApiPlatformCon2024 !

Sébastien et Loïc

Derniers articles