本文へスキップ
  1. TOP
  2. Web制作
  3. 実務知識
  4. 外部サービス連携で、失敗・遅延・重複をどう扱うか

04 / GROW

育てるフェーズの実務知識

外部サービス連携で、失敗・遅延・重複をどう扱うか

正常時だけでなく、検知・再試行・照合・手動復旧までを設計する

二つの外部システム間で同期と再処理を行う仕組み

PRACTICAL KNOWLEDGE 実務知識

WRITTEN BY

FHW制作チーム

反省会と日々の制作記録をもとに、担当スタッフが実際に迷い、確認し、判断した過程を整理しています。

開発中に一件のデータを送受信できれば、接続自体は確認できます。しかし本番運用では、接続先の停止、通信の遅延、認証期限、想定外の値、大量データ、同じ通知の再送などが起こります。

外部サービスは自社サイトと同じタイミングで動き、同じ方法で復旧できるとは限りません。

私たちが外部連携を確認するとき、一件の送受信に成功しても「完成」とは考えません。むしろ確認したいのは、その先です。失敗をどう検知し、利用者への影響をどう抑え、後から正しい状態へどう戻すかまでを完成条件にします。

最初に、どこを正とするかを決める

同じ会員、求人、商品、問い合わせ情報を複数のシステムで編集できると、どちらの値を採用するか判断できません。項目ごとに、登録元、正となる場所、更新方向、反映タイミングを決めます。

一方向同期でも、Web側で追加する公開状態や表示用の情報がある場合は、外部データと自社データを分けます。外部側の更新で自社側の補足まで消えないよう、所有する項目を明確にします。

一件を識別するキーと、処理を識別する番号を分ける

同じ利用者や商品を判断する外部IDに加え、同じ連携処理が再送されたかを判断する識別子を持たせます。通信が途中で切れると、送信側は失敗と判断して同じ内容を再送する場合があります。

同じ処理を複数回受け取っても結果が一つになるよう、既に処理済みかを確認します。古いデータが後から到着して新しい値を戻さないよう、更新時刻や版も判断材料にします。

全件同期と差分同期の役割を分ける

差分同期は処理量を減らせますが、一度取りこぼしたデータがそのまま残る可能性があります。全件同期は整合性を戻しやすい一方、件数が多いと時間と負荷が増えます。

日常は差分同期を行い、定期的または必要時に全件照合できる構成を検討します。処理件数、追加、更新、変更なし、除外、失敗を分けて記録します。

通信の失敗と、データの失敗を分ける

接続できない、時間切れ、認証エラーなどは通信上の失敗です。接続できても、必須項目不足、存在しない選択肢、文字数超過、関連先が見つからない場合はデータ上の失敗です。

通信エラーは時間を置いた再試行で直る場合がありますが、不正なデータを同じまま何度再送しても直りません。エラーの種類ごとに、自動再試行、運用担当者の確認、接続先への問い合わせを分けます。

部分失敗の状態を残す

百件のうち一件だけ失敗したとき、全件を止めるのか、正常な九十九件を進めるのかは業務によって異なります。重要なのは、成功した範囲と失敗した範囲を追えることです。

正常行だけ進める場合は、失敗データの識別子、理由、受信値、再処理状態を残します。複数システムをまたぐ処理では、単純なデータベースの巻き戻しだけでは元に戻らないことがあります。

利用者への表示と、内部の処理状態を分ける

外部連携が完了するまで時間がかかる場合、画面上で「完了」と表示すると誤解を招きます。受付済み、処理中、連携済み、確認が必要、再処理中など、利用者に必要な状態を整理します。

利用者には次の行動が分かる案内を出し、運用担当者には調査に必要な処理番号と状態を残します。連携先が停止しても、受付データを失わず後から送れる構成を検討します。

失敗を担当者へ知らせる

エラーをログへ残すだけでは、誰も気づかないことがあります。一定件数の失敗、連続した通信エラー、最終成功時刻の遅れ、認証期限など、通知する条件を決めます。

通知には、発生時刻、対象処理、件数、影響、再試行状況、確認先を含めます。一件ごとに大量通知すると重要な障害が埋もれるため、集約や優先度も検討します。

接続仕様と認証の変化も運用へ含める

外部サービスのAPI仕様、認証方法、権限、利用上限は将来も同じとは限りません。アクセストークンやAPIキーを公開部分へ置かず、更新期限と保管場所、変更担当を決めます。

仕様変更の案内を誰が確認し、検証環境で何を試し、本番へいつ反映するかも連携の運用です。接続できなくなってから調べ始めるのではなく、バージョン、利用量、認証期限を定期確認へ含めます。

手動同期と再実行を安全に用意する

自動処理が失敗したとき、運用担当者が対象期間や対象データを限定して再実行できると復旧が早くなります。ただし、無条件の全件同期ボタンは負荷や重複の原因になります。

実行権限、対象範囲、事前確認、二重実行防止、処理中表示、結果履歴を用意します。再実行前に元データを修正する必要がある場合は、どちらのシステムで修正するかを案内します。

定期的に、両側の件数と代表データを照合する

エラーが出ていなくても、一部の更新だけ欠けることがあります。最終成功時刻、処理件数、外部側と自社側の総数、更新時刻、代表データを定期的に照合します。

差異が見つかったときに、元データ、連携ログ、保存値、公開画面を順に追えるようにします。監視は接続の生存確認だけでなく、情報が正しく流れているかを確認するものです。

この方法が向いているケース

  • 会員や顧客情報を外部システムから同期する
  • フォームや応募情報をCRMへ送る
  • 商品、求人、物件などを定期取得する
  • 決済や通知など外部処理の結果を受け取る
  • 複数のCMSや業務システムで公開状態を揃える

連携を減らした方がよいケース

更新頻度が低く、件数も少なく、担当者が安全に確認できる場合は、手動取込や管理画面更新の方が保守しやすいことがあります。

外部サービスに必要なAPIや契約がない場合も、画面操作の自動化で無理につながず、CSVや確認工程を含む別の受け渡しを検討します。

運用チェック

  • 項目ごとの正となるシステムと更新方向を決めたか
  • データと連携処理の識別子を分けたか
  • 重複受信や古いデータの再送を防げるか
  • 全件同期と差分同期の役割を決めたか
  • 通信エラーとデータエラーを分けたか
  • 部分失敗と再処理状態を追えるか
  • 最終成功時刻や連続失敗を通知できるか
  • 対象を限定して安全に再実行できるか
  • 両側の件数と代表データを定期照合しているか

PRACTICAL KNOWLEDGE 同じフェーズの実務知識

私たちが別の制作で得た判断や確認方法を、同じ制作フェーズからご覧いただけます。

中断したWeb制作の資料と進捗を再確認する作業デスク

長期化・中断・担当交代したWeb制作を、安全に再開するには

長期化、中断、担当交代があったWeb制作で、目的、承認、素材、仕様、環境、残作業を再確認し、安全に再開する手順を整理します。

検索結果と登録データの整合性を確認する作業デスク

検索型サイトで、一覧・詳細・件数・公開状態の整合をどう保つか

検索機能を持つサイトで、管理画面への登録から一覧、詳細、検索結果、件数、ページネーション、公開状態までを一続きで確認する方法を整理します。

サイトの入口を継続、転送、保管へ分けて終了する経路模型

サービスや特設サイトを終了するとき、何を閉じればよいか

Webサイト終了時に、公開中の入口、残す案内、停止する処理、PDFや画像、URLの転送、データ保管をどう整理するかをご紹介します。

コンテンツ、機能、環境、緊急対応を分けて扱う保守作業台

公開後のコンテンツ更新と環境更新を、どう分けて保守するか

公開後の更新をコンテンツ、機能、環境、緊急対応に分け、影響確認、検証、バックアップ、切り戻しを安全に進める方法を整理します。

稼働中サイトの旧環境と新環境の切替経路を確認する作業台

稼働中サイトのサーバー移行と改修を、同時事故にしないために

公開中サイトを止めずに移行するとき、環境の再現と機能追加を分け、切替前確認、戻せる地点、切替後の監視までを整理します。

共通フレームへ企画ごとの展示パネルを組み替える制作チーム

LP・特設サイトを、次の制作へ使える基盤としてどう残すか

繰り返し制作するLPや特設サイトで、共通部品、企画固有表現、計測、メタ情報、公開手順を分け、次回も安全に使える基盤として残す方法を整理します。

外部タグの発火経路を透明な分岐模型で確認する制作チーム

計測タグ・外部タグを、設置から削除までどう管理するか

アクセス解析や広告、外部フォームなどのタグについて、読み込み元、管理者、発火条件、同意状態、テスト・本番の区別、削除後の確認までを整理します。