Forum PHP 2020
La parole est aux speakers : Kévin Dunglas
Jusqu’au Forum PHP, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !
La conférence
Utiliser le protocole Vulcain pour créer des API REST ultra-performantesAu fil des années, plusieurs formats ont été créés dans l’objectif d’améliorer les performances des API Web : (n + 1, sur-extraction, sous-extraction)… La dernière solution à la mode pour créer des API rapides se nomme GraphQL, un hack réseau malin… mais que HTTP/2 et HTTP/3 rendent désormais désuet ! Ces nouvelles versions du protocole au coeur Web disposent de fonctionnalités natives permettant de créer des API rapides et idiomatiques : multiplexage, Server Push, dé-duplication des en-têtes, compression, connexions persistantes… Vulcain est un tout nouveau protocole qui tire parti au maximum de HTTP/2 et 3 pour améliorer drastiquement la performance des API REST ! Après quelques rappels concernant HTTP et REST, nous découvrirons comment est conçu Vulcain, et comment il est facile à mettre en place avec les API PHP (réalisées à l’aide d’API Platform ou non), ainsi que comment en tirer parti en JavaScript. |
Katherine Johnson 22/10/2020 14:30-15:10 |
Peux-tu nous en dire plus sur l’avancement du protocole Vulcain ?
Vulcain propose deux très simples nouveaux en-têtes de requête HTTP qui permettent au serveur de deviner de quelles données le client aura besoin. Le serveur peut ensuite préparer et envoyer ces données le plus tôt possible, typiquement en utilisant HTTP/2 Server Push.
La version initiale de la spécification Vulcain a été publiée sous la forme d’un Internet-Draft en avril 2020.
Suite à cette publication, j’ai eu des retours très intéressants en provenance de la communauté eZ Publish et de l’auteur de la spécification Prefer-Push.
Grâce à ces échanges, il m’a été possible de rendre la spécification encore plus flexible et générique. Une nouvelle version intégrant ces changements a été publiée fin août. Elle ajoute une mécanique de sélection “hypermédia” relativement similaire à ce que propose Prefer-Push qui permet – en complément du mécanisme de sélection déjà existant – de récupérer des relations ayant un certain type, un certain format et/ou une certaine langue.
Désormais Vulcain utilise également les en-têtes HTTP structurés, qui sont en voie de devenir une RFC.
En parallèle à ce travail de fond sur la spécification, un énorme boulot a été effectué sur l’outillage afin de permettre une adoption plus large.
L’un des points de friction majeur pour une adoption massive de Vulcain est que la spécification doit être supportée par le serveur “edge” qui maintient la connexion avec le client.
Pour ce faire, nous travaillons d’arrache-pied sur deux fronts :
– proposer un meilleur support de Vulcain dans l’outillage existant, et je vous expliquerai ça en détail lors de ma session
– tenter d’améliorer les spécifications existantes pour permettre les usages novateurs tels que celui proposé par Vulcain (exemple : https://github.com/w3c/preload/pull/149).
Côté standardisation, la création d’un nouveau groupe de travail de l’IETF dédié aux API HTTP est actuellement en discussion. Si un tel groupe voit le jour, nous proposerons de discuter de Vulcain en son sein.