API連携は「繋がれば終わり」ではありません。
現場で問題になるのは、取りこぼし・二重処理・復旧不能の3つです。
Webhookが二回来た、タイムアウトで再送された、途中で落ちた、順序が逆になった…。
この記事では、外部連携を“運用として回す”ために必要な設計(冪等性、リトライ、ログ、監視)を整理します。
外部サービスは落ちます。ネットワークも揺れます。だから設計で吸収します。
「たまに失敗する」ではなく、「失敗しても復旧できる」が設計ゴールです。
この前提を受け入れると、必要な設計がはっきりします。
冪等性とは、同じイベントを何回処理しても結果が1回に収束することです。
外部連携で最重要の考え方です。
状態遷移が絡むなら、ステータス運用(実例)と、禁止遷移(遷移図)がそのまま効きます。
「支払済」への遷移が二回走らない、などを状態側で防げます。
連携処理は失敗します。だから、リトライ(再試行)を設計します。
ポイントは「どこまで成功したかが分かる」ことです。
この「再処理ボタン」があるだけで、復旧が劇的に速くなります。
権限・ログは 権限・ログ設計 に沿って、実行者と理由を残します。
Webhookは順序保証がないことがあります。
そこで、状態遷移を「単純な一本道」にしないで、前後を吸収できる形にします。
人が判断する導線は、管理画面の検索・フィルタ(絞り込み)とセットで作ると運用が止まりません。
連携は「失敗に気づける」ことが必須です。
通知の設計は 通知・リマインド の考え方で、次を決めます。
予約と決済、通知が絡むと、順序入替や二重処理が起きやすいです。
業務像は ホテル向けシステム開発例 を前提に、
予約カレンダー連携(関連:カレンダー×申込)では冪等性と再処理が必須になります。
外部の予約や通知サービスと繋ぐ場合、二重予約・二重入庫の事故が致命的です。
業務像は 自動車販売・整備・タイヤショップ向け を前提に、
入庫(関連:予約設計)やピット割当(詰まらせない設計)に影響が出ないよう、イベントIDで冪等性を固定します。
インテンスでも、連携部分は「成功時だけ見る」設計をやめ、失敗時の復旧導線(ログと再処理)を先に作ります。
外部連携で守るべきは、二重処理と復旧不能を防ぐことです。
Webhook再送を前提に、冪等性を固定し、リトライ・ログ・再処理・監視までを一体で設計する。
これで、連携は“繋がるだけ”から“運用できる”状態になります。