Webhooks vs. polling
Cet article comparera les webhooks et le polling, analysera les avantages et les inconvénients de chaque approche, et discutera quand utiliser laquelle.
Lorsque nous construisons des applications Web, nous avons souvent plusieurs services. Dans la grande majorité des cas, ils se composent de nombreux services Web différents travaillant ensemble. Dans ce type d'application Web composée de plusieurs services, la manière de transmettre les données est une question que chaque développeur doit considérer.
Pour résoudre ce problème, deux approches sont devenues courantes : les webhooks et le polling. Chaque méthode propose une manière unique de récupérer et de livrer des données d'un service à un autre. Choisir l'une plutôt que l'autre peut avoir un grand impact sur l'efficacité de votre application, ses capacités en temps réel et l'expérience utilisateur globale. Cet article comparera les webhooks et le polling, analysera les avantages et les inconvénients de chaque approche, et discutera quand utiliser laquelle.
Qu'est-ce que le polling ?
Le polling (souvent appelé API polling) est un processus dans lequel un client demande des données spécifiques à intervalles réguliers (disons, toutes les x secondes), et le serveur répond avec les données demandées.
C'est un peu comme demander, "Y a-t-il des nouvelles données ?" à intervalles réguliers. Le polling peut être mis en œuvre via des requêtes HTTP, où le client envoie une requête GET au serveur et le serveur répond avec les données demandées.
Imaginez que John a construit un produit de documentation IA nommé Doc.AI et utilise Logto pour gestion des identités utilisateur.
Frank est un utilisateur qui s'est inscrit au produit de John et a créé son propre compte personnel. Un jour, Frank rejoint un espace de travail créé par son ami David. À ce moment-là, John souhaite envoyer un e-mail à Frank pour lui demander d'activer l'authentification multifacteurs (MFA) pour améliorer la sécurité de son compte avant de lui accorder l'accès à des ressources sensibles supplémentaires.
Le backend du produit de John doit constamment interroger les API pertinentes pour savoir quand Frank rejoint l'espace de travail de David.
Qu'est-ce qu'un webhook ?
Un webhook (c'est-à-dire "retour d'appel HTTP") est un mécanisme de communication de données en temps réel, selon lequel un serveur envoie des données à un client lorsqu'un événement se produit. Plutôt qu'un client demandant des données, un webhook les pousse au client chaque fois qu'il y a une mise à jour.
C'est un peu comme une boîte de réception pour votre application. Lorsque certains événements se produisent - par exemple, un nouvel utilisateur s'inscrit ou un paiement est effectué - un webhook laissera un message dans la boîte de réception pour informer votre application de ce qui se passe.
Continuons avec notre exemple Doc.AI que nous avons utilisé plus tôt pour expliquer le polling. Voici à quoi ressemblera le diagramme de séquence si nous utilisons des webhooks pour savoir si Frank a rejoint l'espace de travail de David :
Différences importantes
- Origine de la requête Le polling est initié par le client (dans notre exemple, Doc.AI est client et Logto est le serveur) et le webhook est déclenché par un événement et démarré par le serveur.
- Consommation de ressources Le polling est un gaspillage de ressources informatiques car il envoie des requêtes à intervalles réguliers, ce qui en résulte en une faible efficacité des ressources informatiques. En revanche, le webhook est initié par le serveur "à la demande". Comparé au polling, à la fois le client et le serveur consomment beaucoup moins de ressources.
- Timing Le polling est initié par le client, donc le client peut contrôler le timing de l'acquisition des données ; Cependant, le webhook est initié par le serveur, et le client peut seulement recevoir et traiter les données. Toutefois, en raison des différents mécanismes des deux, le webhook peut réaliser une synchronisation des données en temps réel, ce qui ne peut pas être accompli par le polling.
Lequel dois-je choisir ?
Basé sur les mécanismes du polling et des webhooks, la pratique courante consiste à choisir le polling uniquement lorsque les données sont fréquemment mises à jour et que l'exigence en temps réel pour les données n'est pas stricte. Dans les autres cas, les webhooks seraient un meilleur choix.
Cependant, lors du choix d'utiliser des webhooks, les développeurs doivent faire attention aux préoccupations suivantes :
- Si le système dépend fortement des données acquises, il est nécessaire de prévoir un plan de secours pour acquérir les données lorsque le webhook échoue et que les données ne peuvent pas être synchronisées, y compris mais non limité à utiliser le polling ou exiger que le webhook ait un mécanisme de renvoi, etc.
- Dans le point de terminaison côté client qui reçoit les webhooks, la vérification de l'API secret et de la signature du contenu, etc. devraient être appliquées pour empêcher les pirates d'attaquer le client en falsifiant le webhook.
- Comme le webhook peut envoyer des requêtes en double, un traitement correspondant est nécessaire à ce moment pour éviter la duplication des données et l'incohérence.
Logto, en tant que solution d'identification d'utilisateur extrêmement populaire, offre de nombreux scénarios de webhook et une excellente sécurité. En utilisant Logto comme système d'identité pour vos produits, il peut être facilement intégré et s'adapter à diverses scènes d'application.