より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

WebHooksについて学ぶ

WebHooksについて学びたいなあと思ってました。

あまり適切な本が見つからなかったので、英語の本ですが以下の本を購入しました。

www.oreilly.com

英語に弱い私ですが、割と読みやすい印象です。

本の中で、Webhookはイベント駆動型APIの一種として紹介されます。

  • WebHooks
  • WebSocket
  • HTTP Streaming

WebHooksがあることで解決できることの一つがPollingを用いて無駄なトラフィックを防ぐことができます。

  1. 定期的にAPIをクライアントからサーバーにリクエストする。
  2. クライアントはレスポンスからデータの更新をチェックする。
  3. 問い合わせの結果でデータが更新されていたら、処理する。

これがポーリングです。この場合だと、データが更新されていなくても問い合わせることになってしまい非効率です。

WebHooksは、定期的に問い合わせる必要がなくなります。

データを更新した時にサーバーからクライアントに通知します。

ある調査によると、66回のAPI問い合わせのうち必要な問い合わせは1回だったとされます。

必要なAPI問い合わせは1.5%です。残り98.5%の無駄な問い合わせをWebHookはなくすことができるのです。

ただし、WebHookについては課題もあります。

その一つが失敗とリトライです。

通知に失敗した時に、少し時間を置いてリトライしてみる必要があります。

ただし、成功するまでリトライしても無駄になるため3回と回数制限も考える必要があります。

それだけでなく、ユーザーがもう存在しないURLを指定したままにしている可能性も考えられます。頻繁に失敗するならば、もう通知しないようにするということも考える必要が出てきます。