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 !
Tweets