AFUP Forum PHP 2022 Baromètre Planète PHP
 

L’architecture ESA : le futur des API web

Description

Cela fait déjà plus de 10 ans que je recherche les meilleures approches possibles pour concevoir des API web, que j’étudie méticuleusement les différents styles architecturaux existants et émergeants, et que je teste la quasi totalité des outils dédiés aux API web.

Fort de l’expérience acquise en développant de nombreuses API web “à la main”, j’ai décidé de créer un framework dont but est de simplifier cette tâche et de faire en sorte que les API qui l’utilisent respectent automatiquement les meilleures pratiques du domaine. Ce projet démarré pendant l’hiver 2014 est devenu le framework API Platform, l’un des outils les plus populaires pour créer des API. Un outil reconnu par l’ensemble de l’industrie comme l’un des plus simple à utiliser et en même temps comme l’un des plus avancés, si ce n’est le plus avancé, en matière de respect des standards (HATEOAS, RDF, Hydra, GraphQL…) comme des bonnes pratiques.

Le développement d’API Platform m’a permis de découvrir un nombre de cas d’usage toujours plus important et d’étudier de nouvelles pistes pour améliorer la performance, la fiabilité, la sécurité et l’évolutivité des API web.

Et bien entendu, grâce aux retours, challenges et suggestions de la communauté, de nouvelles idées me sont venues. Parmi elles, la possibilité d’utiliser HTTP pour permettre aux clients de s’abonner aux changements effectués sur les resources et de les recevoir en temps réel. C’est devenu le protocole Mercure. Plus tard, celle d’utiliser les nouvelles capacités des protocoles HTTP/2 et HTTP/3 (et en particulier le multiplexing) couplé à la possibilité de permettre au client d’indiquer au serveur de quelles données il aura besoin, afin d’améliorer la performance des API web et de permettre une mise en cache bien meilleure qu’avec les approches traditionnelles. C’est le protocole Vulcain.

Aujourd’hui, je souhaite vous proposer une nouvelle architecture pour les API web, basée sur ces années de travail de R&D ainsi que sur l’état de l’art de l’écosystème frontend (et oui !). Cette proposition, c’est l’architecture ESA.

ESA est une architecture novatrice, rompant avec les approches traditionnelles, qui permet de créer des API plus fiables, plus performantes et moins consommatrices en resources. Cette architecture renoue avec les grands principes REST/HATEOAS tout en tirant partie au maximum des nouvelles capacités fournies par la plateforme web. ESA promeut une approche mixte, mêlant synchrone et asynchrone, qui permet à la fois une très grande simplicité de développement et d’utilisation, des performances rarement atteintes, et la possibilité pour les clients d’avoir toujours des données à jour par rapport à celles dont dispose l’API. Finalement, ESA propose de s’appuyer sur les standards existants pour exposer une documentation “in-band” permettant la création de clients génériques, capables de découvrir les capacités de l’API au runtime.

Venez découvrir ESA, l’architecture qui va changer vos API web !

Conférence donnée lors du Forum PHP 2021, ayant eu lieu les 21 et 22 octobre 2021.

Informations complémentaires

Vidéo

Le speaker

Kévin DUNGLAS

Kévin est le créateur du framework API Platform ainsi que des projets Mercure et Vulcain. Il est également membre de la Core Team Symfony et a cofondé la société autogérée Les-Tilleuls.coop.

Commentaires

Conf très intéressante, sur un sujet d'actualité, par un speaker expert. Rien a redire !
Romain Goncalves, le 22/10/2021
Cette richesse d'informations, c'est juste incroyable... on ne peut que dire merci !!! PS : et j'ai vraiment ri à la boutade : "On code comme des porcs, on fait du PHP, c'est normal !" ^^
Vincent Laurier, le 22/10/2021
Un bon tour d'horizon et une progression efficace des techniques présentées. Merci
Benoit Viguier, le 25/10/2021
Ce qui est bien, c'est qu'avec ce genre de conférence, on sait que l'architecture orientée RAD de la plupart des applications web est en réalité un genre de désastre écologique (et aussi parfois économique). Avec tous les détails fournis dans ce talk, je pense qu'on a à peu près tout pour pouvoir créer un "boilerplate" d'application qui simplifie énormément les futures architectures de nos applis :)
Alex Rock, le 25/10/2021