WebHooksについて学びたいなあと思ってました。
あまり適切な本が見つからなかったので、英語の本ですが以下の本を購入しました。
英語に弱い私ですが、割と読みやすい印象です。
本の中で、Webhookはイベント駆動型APIの一種として紹介されます。
- WebHooks
- WebSocket
- HTTP Streaming
WebHooksがあることで解決できることの一つがPollingを用いて無駄なトラフィックを防ぐことができます。
これがポーリングです。この場合だと、データが更新されていなくても問い合わせることになってしまい非効率です。
WebHooksは、定期的に問い合わせる必要がなくなります。
データを更新した時にサーバーからクライアントに通知します。
ある調査によると、66回のAPI問い合わせのうち必要な問い合わせは1回だったとされます。
必要なAPI問い合わせは1.5%です。残り98.5%の無駄な問い合わせをWebHookはなくすことができるのです。
ただし、WebHookについては課題もあります。
その一つが失敗とリトライです。
通知に失敗した時に、少し時間を置いてリトライしてみる必要があります。
ただし、成功するまでリトライしても無駄になるため3回と回数制限も考える必要があります。
それだけでなく、ユーザーがもう存在しないURLを指定したままにしている可能性も考えられます。頻繁に失敗するならば、もう通知しないようにするということも考える必要が出てきます。