Webhook配送のための小さな境界

Webhookの受け渡しを、壊れにくく。

HooklaneはWebhookの受付と配送を分離し、downstreamの障害が受付処理へ波及しにくい構成を検証するための配送基盤です。このページでは、入力と配送先を固定した安全なデモで、その境界を確認できます。

稼働状況

Cloudflare Accessで保護されたHooklaneのoriginがreadyかを確認します。公開するstatusは最小限に抑えています。

結果がここに表示されます。

配送デモ

固定したportfolio eventを1件受け付け、少数回だけstatusを確認します。公開側からpayloadやdestinationは指定できません。

結果がここに表示されます。

202応答前の永続化

Hooklaneはイベントを永続化してから202を返します。受け付けたリクエストの開始点を失いにくくします。

at-least-once配送

障害の境界では配送が複数回試行されることがあります。downstreamはイベント識別子で副作用を冪等に扱います。

冪等性

同じキーと内容のリクエストは1つの論理イベントへ収束し、内容が異なる衝突は拒否します。

retry / DLQの制御

再試行できる失敗には上限付きbackoffを適用し、上限到達または再試行しない失敗はDLQへ送ります。

pending recovery(保留処理の回収)

worker停止でpendingになった処理は別のworkerが回収して再試行できます。exactly-onceは主張しません。

security boundary(認証境界)

Cloudflare Access、Service Auth、Named Tunnelを境界として使い、public facadeからoriginの認証情報を渡しません。

公開ユーザーブラウザ
Cloudflare Worker公開facade
Service Auth / Access認証境界
Named Tunnel保護された経路
Debian edgeHooklane

WorkerがService Authを使って固定したupstreamへ接続します。Cloudflare Accessがoriginを保護し、Named TunnelがDebian edge上のHooklaneへつなぎます。認証情報はWorker内だけで扱い、公開ユーザーには渡しません。

これは転職活動向けのportfolio/demoです。single-nodeのnon-production構成であり、production-readyであることは主張しません。任意のpayloadやdestinationを受け付けない、固定入力・固定配送先のbounded demoです。公開Workerはfacadeであり、既存のD1/Queues backendとRedis backendは別構成です。

転職活動向けsingle-nodenon-production固定イベントbounded demo任意の送信先なし