SocialGO
失敗に耐えるSMM API連携を設計する
APIガイド

失敗に耐えるSMM API連携を設計する

タイムアウト、再試行、冪等キー、そして照合。自動注文が静かにあなたの残高を焼き尽くさないための、エラー処理のパターン。

文: SocialGOチーム · 編集 7 分で読めます

タイムアウト、再試行、冪等キー、そして照合。自動注文が静かにあなたの残高を焼き尽くさないための、エラー処理のパターン。

目次

ハッピーパスは嘘

どのAPI連携も、最初のバージョンはハッピーパスを前提にします。リクエストを送れば、レスポンスが返り、注文が発行される、と。本番環境は、そうではないことを教えてくれます。ネットワークは切れ、エンドポイントはタイムアウトし、最も危険な失敗は曖昧なものです。接続が切れる前に成功したかもしれないし、しなかったかもしれないリクエストです。その曖昧さのために設計することが、仕事のすべてです。

冪等性が核となる防御

冪等性が核となる防御です。各注文リクエストに一意のキーを付け、サーバーがそのキーの繰り返しを、新しい操作ではなく同じ操作として扱うようにします。こうすれば、タイムアウト後の再試行は安全です。元のリクエストが通っていれば、二重の課金ではなく既存の注文が返ってきます。これがなければ、どの再試行もあなたの残高を賭けたギャンブルになります。

感度を保つ

次の攻略法を、あなたの受信箱へ

誇張のない実践的なSNS成長戦略、ガイド、事例、APIのヒント。スパムなし、いつでも配信停止できます。

あなたの受信箱を大切にします。スパムは決して送りません。

バックオフ付きの再試行を重ねる

その上に、バックオフ付きの再試行を重ねます。一時的なエラー(429のレート制限、503、ネットワークのリセット)は、すぐに叩き続けるのではなく、遅延を増やしながら上限を設けて再試行すべきです。恒久的なエラー(400の不正なリクエスト、残高不足のレスポンス)は、素早く失敗させて人に届けるべきです。それらを再試行しても、時間を無駄にし、本当の問題を覆い隠すだけだからです。

常に照合する

最後に、照合しましょう。すべてのリクエストとレスポンスを、その冪等キーと注文IDとともに記録し、あなたの記録をパネルの注文状態と突き合わせる定期的なジョブを走らせること。照合は、パネル上では成功したのに、あなたの側で記録に失敗した注文を捕まえるものです。SocialGOのAPIが一貫した注文IDと状態を返すのは、まさにこのループを組みやすくするためです。それが、信頼できる自動化と、付きっきりで面倒を見る自動化との差なのです。

この記事をシェア

これを実践に移そう

無料のSocialGOアカウントを作成し、ペース・数量・透明な価格をすべてコントロールして、最初の注文を出しましょう。

アカウントを作成
ポータルに戻る

著者について

SocialGO

SocialGOチーム

編集

タグ

#api#error handling#idempotency#retries#developers

感度を保つ

次の攻略法を、あなたの受信箱へ

誇張のない実践的なSNS成長戦略、ガイド、事例、APIのヒント。スパムなし、いつでも配信停止できます。

あなたの受信箱を大切にします。スパムは決して送りません。

関連する読みもの