n8n障害発生時の自動復旧パターン集:エラー監視・リトライ・フォールバック・高可用アーキテクチャの実践ガイド

n8n

n8n障害発生時の自動復旧パターン集:エラー監視・リトライ・フォールバック・高可用アーキテクチャの実践ガイド

導入:止めないための設計を、現実解で
運用が長くなるほど、ワークフローは「落ちる前提」で設計しておくほど強くなります。APIの瞬断、レート制限、外部SaaSの障害、ネットワーク揺らぎ、データ不整合。どれも日常的に起こり得ます。n8nはノーコード/ローコードの柔軟さと、コードの差し込み、Error Trigger、Wait、Execute Workflow、Queueモードなどの機構により「自動復旧」を設計しやすい環境が整っています。本稿では、障害発生時にダウンタイムと人的介入を最小化するための自動復旧パターンを、実装手順・判断基準・落とし穴まで含めて解説します。個人検証から企業運用(MCPによる一元管理・セキュリティ強化)までスケールさせる方法を、段階的に実務に落とし込める形でまとめました。

要点サマリ(実行前に押さえる7項目)

  • エラーは「一過性/恒久/部分/外部依存/レート制限」に分類し、復旧戦略(再試行、フォールバック、補償、隔離)を選ぶ。
  • 汎用の「Retry + Backoff + Jitter」サブワークフローを用意し、HTTP/API呼び出しをすべて同一の失敗ポリシーで包む。
  • サーキットブレーカーで外部障害を隔離。n8nのワークフロー静的データに失敗カウントを持ち、一定時間呼び出しを遮断。
  • 冪等性(Idempotency)を徹底。重複防止キーを発行・保存し、再実行やWebhook再送でも副作用が二重化しないようにする。
  • Dead-Letter Queue(DLQ)とRunbookワークフローを整備。最後は人が回収できる安全な「失敗の置き場」を必ず設ける。
  • Queueモード+外部DB(PostgreSQL)で実行データを永続化し、Waitノードで長時間ジョブを安全にまたげるようにする。
  • 監視(Health/メトリクス/通知)と権限・監査はMCPで一元管理。SSOやシークレット保護、監査ログで安全性と可観測性を確保。

基礎理解:n8nで「復旧」をどう定義するか

  • 復旧の定義
  • 自動復旧とは、失敗時に人手を介さずにシステムが自己修復(再試行・代替経路・待機再開・部分的ロールフォワード・補償)すること。
  • 失敗の影響範囲を局所化し、上位のビジネスプロセスを「止めない」ことが目的です。
  • エラーの分類と対応の原則
  • 一過性(ネットワーク瞬断、タイムアウト):指数バックオフ+ジッターで再試行。
  • 恒久(認証失効、仕様変更):速やかにフェイルファストし、DLQへ退避と通知。人の介入が必要。
  • 部分(N件中M件失敗):成功分はコミット、失敗分だけ再処理キューへ。
  • 外部依存の障害(SaaSダウン):サーキットブレーカーで隔離。フォールバックへ切替。
  • レート制限:トークンバケット的なスロットリング+Retry-After尊重。
  • n8nの実行モデル(復旧の要になる機能)
  • Triggerノード(Cron/Webhook等)で起動。Node間でアイテムを流し、JSONを加工。
  • Error Triggerノード:任意のワークフローで発生したエラーを受けて別ワークフローを起動。横断的な通知・連鎖処理に活用。
  • Continue On Fail:ノード単位で失敗してもパイプラインを継続。失敗情報を分岐ロジックに取り込める。
  • Waitノード:時間/日時/Webhook/外部イベントで中断→再開。長時間ジョブや調整に有効。
  • Execute Workflow:サブワークフロー呼び出し。共通の失敗処理(Retry/フォールバック)を部品化。
  • Queueモード:Redisキュー+複数ワーカーで実行。スケールと隔離に有効。

アーキテクチャ全体設計:止まらないための地盤づくり

  • 環境の三分割
  • 開発(ローカル/Docker)→ 検証(ステージング/実データ相当の非機密)→ 本番(高可用)。ワークフローIDやcredentialは環境別に分離。
  • 監視・通知
  • アプリ健全性:curl -X GET http://localhost:3000/health を定期確認するワークフローをCronで回す。失敗時はError Triggerで即時通知。
  • 実行監視:Error TriggerでSlack/メール/電話通知(段階的エスカレーション)。成功率や平均遅延も時系列で記録。
  • 永続化・バックアップ
  • データベースにPostgreSQL等を採用。定期スナップショット+リストア演習。
  • 実行データの保存ポリシー(成功/エラー時)を本番は保存強化。個人情報はマスキング。
  • セキュリティ
  • 資格情報はn8nのCredentialに集中管理。コードや表計算に平文で書かない。
  • 企業運用はMCPでSSO・RBAC・監査ログ・秘密の一括管理・ポリシー適用を徹底。

実践ガイド:自動復旧パターン10選

  1. リトライ+指数バックオフ+ジッター
  • 目的:一過性の失敗(タイムアウト/接続リセット/一時的5xx)を自動で回復。
  • いつ使う:HTTP/API呼び出し、外部SaaS、DB接続。
  • 実装手順(汎用サブワークフロー)
    1) サブワークフロー「HTTP-Retry-Wrapper」を作成。入力(URL, method, body, headers, maxAttempts, baseDelayMs)。
    2) Codeノードでattemptと遅延を計算(delay = base * 2^(attempt-1) + jitter)。jitterは乱数で±20%程度。
    3) HTTP Requestノード(Continue On Fail: true)。成功条件(2xx/特定JSON)をIFで判定。
    4) 失敗ならWaitノードでdelay待機→attempt++→最大回数までループ。
    5) 超過したらエラーをThrow、DLQに投入(後述)。
  • Codeノード例(遅延計算と状態):
    /*
    入力: items[0].json = { attempt, maxAttempts, baseDelayMs }
    出力: { attempt, delayMs }
    */
    const input = ;
    const attempt = (input.attempt ?? 0) + 1;
    const base = input.baseDelayMs ?? 500;
    const jitter = Math.random() * 0.4 + 0.8; // ±20%
    const delayMs = Math.floor(base * Math.pow(2, attempt – 1) * jitter);
    return [{ json: { attempt, delayMs } }];
  • 落とし穴
  • リトライ対象を誤ると二重実行で副作用(課金/重複作成)。冪等性設計(後述)とセットで運用。
  • レート制限時はRetry-Afterヘッダを優先。
  1. サーキットブレーカー(Circuit Breaker)
  • 目的:連鎖障害を防ぐ。外部がダウンしている間は呼び出しを遮断し、フォールバックに切替。
  • 実装(静的データの活用)
  • Codeノードで(‘global’)を取得し、失敗カウントと開放時間(openUntil)を保持。
  • 連続失敗が閾値を越えたらopenUntil = 現在時刻 + cool-down。以降はIF分岐で外部呼び出しをスキップしフォールバックへ。
  • 半開(half-open):openUntil経過後の最初の1件のみ試行し、成功ならカウンタリセット。
  • 擬似コード
    const s = (‘global’);
    if (!s.failures) s.failures = 0;
    if (s.openUntil && Date.now() < s.openUntil) { return [{ json: { breaker: ‘open’, waitMs: s.openUntil – Date.now() } }]; } // 後続のHTTPノード実行… // 成功時: // s.failures = 0; // 失敗時: // s.failures++; // if (s.failures >= 5) s.openUntil = Date.now() + 5 * 60 * 1000;
  • 落とし穴
  • 永続化はワークフロー単位。複数ワークフローで共有したい場合は外部ストア(Redis/DB)へ。
  1. Dead-Letter Queue(DLQ)
  • 目的:自動復旧しきれないイベントを安全に隔離・保存し、後から再処理できるようにする。
  • 実装
  • 「DLQ-Writer」ワークフロー:Webhook/Execute Workflowで受け取り、重要フィールド(エンティティID、ペイロード、エラー、タイムスタンプ、リトライ回数、相関ID)をDB/スプレッドシート/ファイルに永続化。
  • 「DLQ-Replayer」ワークフロー:手動/スケジュールでDLQを読み出し、元のワークフローへ再投函。最大回数を超えたらアーカイブ。
  • ベストプラクティス
  • 個人情報のマスキング。相関IDで元実行にトレースバック可能に。
  • 成功時はDLQから削除、失敗時は回数をインクリメント。
  1. フォールバック(Graceful Degradation)
  • 目的:本命処理が失敗時でも、代替手段でビジネス継続(例:別リージョンAPI、キャッシュ値、遅延処理)。
  • 実装例
  • IF分岐でプライマリAPIのエラーを検出→セカンダリAPIへ切替。
  • どうしても取得できない場合は最後にキャッシュの値を返しつつ、DLQへ「要修正」として記録。
  • 実務のコツ
  • 明示的に「劣化モード」を出力に刻む(isFallback=true)。後段のダッシュボードやレポートで品質の見える化。
  1. 冪等性(Idempotency)と重複防止
  • 目的:再実行・再送でも副作用が一度だけになるよう保証する。
  • パターン
  • Idempotency-Key:一意なキー(例:注文ID+操作種別+バージョン)。外部APIに送るときはヘッダ/フィールドで伝達。
  • 重複チェック:キーを外部ストア(Redis/DB/スプレッドシート)に保存し、既存ならスキップ。
  • n8n実装例
  • Codeノードでキー生成 → DB/Spreadsheetで存在確認 → 未登録なら登録して続行、登録済みならIFでスキップ。
  • 落とし穴
  • キー設計が甘いと別操作を誤って同一視。操作種別やバージョンを含める。
  1. Sagaパターン(補償トランザクション)
  • 目的:分散処理で途中失敗があっても整合性を取り戻す。
  • 実装
  • 各ステップに「補償アクション(逆操作)」を定義。成功ステップのログ(何を、いつ、どこへ)を保存。
  • 途中で失敗したら補償アクションを逆順で実行。エラーはError Triggerで通知。
  • 在庫引当 → 決済オーソリ → 注文確定。決済失敗なら在庫解放の補償を実行。
  1. レート制限・スロットリング
  • 目的:外部APIのRate Limit遵守とスパイク吸収。
  • 実装
  • 連続処理の前に「Loop(Split in Batches=1)」+Wait(X ms)で間隔を空ける。
  • ResponseのRetry-AfterがあればWait時間に反映。
  • バースト吸収はキュー投入→ワーカー数で平滑化(Queueモード)。
  • コツ
  • ジッターを加えて同時刻集中を避ける。
  1. 部分成功のロールフォワード
  • 目的:一部失敗でも成功分を確定し、失敗分だけ再処理キューへ。
  • 実装
  • Continue On FailをON。IFで成功/失敗を分岐し、成功側は次工程へ、失敗側はDLQ/再処理キューへ。
  • 集計系は「成功分だけを集計」のパスを明確化。
  1. 待機/再開と長時間実行の復元
  • 目的:外部承認や時間待ちを挟んでも安全に再開。
  • 実装
  • Waitノードで「日時まで待機」「Webhook再開」「外部イベント再開」を活用。
  • 実行データはDB永続化にし、再起動・障害でn8nが落ちてもレジュームできる構成に。
  • 注意
  • Waitの最大待機時間やGCポリシーは環境で確認。定期的に「孤立した待機」の監視を行う。
  1. 手動復旧の自動支援(Runbook as Workflow)
  • 目的:完全自動の限界を人が最小手順で引き継ぐ。
  • 実装
  • Error Trigger → インシデントチケット自動作成 → 状況要約(AI)→ 選択肢付きボタン(Webhook受信用URL)を通知。
  • オペレータが「再実行」「フォールバック適用」「補償実行」をGUI的にトリガー可能に。

具体例:サイト監視→自動復旧テンプレート

  • 目的:URLダウンを検知→自動再試行→フォールバック通知→復旧確認までを全自動化。
  • 手順
    1) Cronトリガーで5分間隔。Google Sheets(監視対象URL一覧)からURL取得。
    2) 各URLにHTTP Request(Continue On Fail)。ステータス200系以外をエラーと判定。
    3) Retry-Wrapperサブワークフローで3回(500ms→1s→2s)試行。全滅ならDLQへ。
    4) サーキットブレーカー:同じドメインが連続失敗したら10分間open。以降は通知のみで呼び出し停止。
    5) ダウン検知時はSlack/Telegram/電話通知(Error Triggerも活用)。復旧時は「復旧記録」をスプレッドシートへ追記。
    6) 監視先の種別に応じてフォールバック(CDN切替API、キャッシュTTL延長、ステータスページ更新)をIF分岐で適用。

観測性と運用:見える化なしに自動復旧は育たない

  • メトリクス
  • 成功率、P95/P99レイテンシ、再試行回数、ブレーカー開放回数、DLQ件数、平均復旧時間(MTTR)。
  • 時系列保存用にDB/スプレッドシートへ定期エクスポート。
  • ログ/相関ID
  • 実行ID、相関ID(Correlation-ID)を全処理で引き回し。Error Triggerでまとめて参照。
  • アラート設計
  • P0(顧客影響大):連続失敗/完全停止。電話・Opsチャンネルへ。
  • P1(機能低下):ブレーカー開放、DLQ急増。Slack+メール。
  • P2(注意喚起):再試行回数の増加、レイテンシ劣化。ダッシュボードのみ。
  • SLOとエラーバジェット
  • 例:成功率99.5%、MTTR 15分以内。バジェットを切ったら変更凍結→原因分析・改善。

インフラ高可用性:n8n自体を止めない

  • Queueモードでの水平スケール
  • Redisをバックにワーカーを複数起動。トリガー/メイン/ワーカーを分離してスパイクに耐える。
  • ワーカー数・同時実行数はレート制限や外部負荷と整合を取る。
  • データベース冗長化
  • PostgreSQLの冗長構成(マネージドやレプリカ)。スナップショットとPoint-in-Time Recovery。
  • ゼロダウンタイムデプロイ
  • Blue/GreenまたはRolling。新旧で並走、ヘルスチェックOKなら切替。
  • マイグレーションは検証環境で先行実施。
  • バックアップ/リストア演習
  • 月次でリストアリハーサル。DLQも含めて完全性を検証。
  • ヘルスチェック
  • 例:curl -X GET http://localhost:3000/health を外形監視。失敗時は自動でワーカーを再起動(オーケストレータ/監視連携)。

企業運用(MCP)での強化ポイント

  • 一元管理とセキュリティ
  • SSO(SAML/OAuth2)、ロールベースアクセス、監査ログ、ポリシー適用(接続先制限、承認フロー)。
  • シークレット保護と鍵の回転(期限管理、影響範囲の可視化)。
  • コンプライアンス対応
  • 実行履歴/変更履歴の保全。PIIのマスキング、データ保持期間のポリシー化。
  • ガバナンス
  • 本番反映の前にレビュー・承認必須。テンプレート化した復旧部品(Retry/DLQ/通知)を共通化。
  • 運用ダッシュボード
  • マルチワークフローのヘルス、DLQ残、ブレーカー状況、SLO達成度を一覧化。

AI活用の復旧支援(加速と品質担保)

  • 使いどころ
  • エラー文/ログから原因要約と影響範囲の推定(人が読む前に一次整理)。
  • インシデントチケットの自動作成(再現手順、発生条件、暫定対応を自動記述)。
  • ユーザー向け通知文のトーン調整(誤解なき簡潔さ)。
  • 実装例
  • Error Trigger → OpenAI/Claudeノード → Slack/メールへ「要約・優先度・推奨アクション」を送信。
  • ガードレール:入力に機密を含めない、出力長やフォーマット(JSON)を固定しパースする。
  • 期待値コントロール
  • LLMは決定論ではない。復旧の意思決定・自動実行はIF制御とルールベースが主、AIは補助に徹する。

テストとリリース管理:壊さず育てる

  • 変更の安全弁
  • ステージングで実データ相当のダミーを用いたE2E。トリガーはテスト用に分離(テストWebhook/Cron)。
  • 自動テストワークフロー
  • 入力サンプルを用意 → 期待出力との一致を検証 → 結果を記録。失敗で通知。
  • REST APIを用いてワークフローの有効化/無効化、エクスポート/インポートをCIから実行(IDや資格情報の切替は環境変数化)。
  • バージョン管理
  • エクスポートJSONをVCSで管理。変更差分をレビュー。
  • フィーチャーフラグやカナリア(小規模対象で新フローを試し、問題なければ段階的拡大)。
  • ロールバック戦略
  • 旧版ワークフローを常に保持。切替手順はRunbook化しておく。

よくある誤解/失敗と対策

  • 誤解1:Error Triggerがあれば十分
  • 対策:Error Triggerは通知の起点。根治はRetry/フォールバック/ブレーカー/冪等性の設計が本体。
  • 誤解2:リトライは多いほど良い
  • 対策:指数バックオフ+上限必須。恒久エラーは速やかにDLQへ送る。
  • 誤解3:Webhookは必ず一度しか来ない
  • 対策:重複前提でIdempotency-Key検証。N回同じイベントが来ても1回分だけ処理。
  • 誤解4:Waitがあるからいつまでも放置でOK
  • 対策:孤立した待機の監視。SLA超過の待機は通知し、適切に中断/再開。
  • 誤解5:資格情報はCodeノードに直書きでも大丈夫
  • 対策:必ずCredentialで管理。権限最小化と鍵の定期ローテーション。
  • 誤解6:本番と検証は同じ環境で効率的
  • 対策:事故率が跳ね上がる。環境分離と接続先制限を徹底。

チェックリスト(本番投入前)

  • 設計
  • エラー分類に応じた処理分岐(再試行/フォールバック/補償/隔離)がある。
  • 冪等性キーの発行・検証・保存が実装されている。
  • DLQと再生ワークフローが用意されている。
  • サーキットブレーカーの閾値とクールダウンが妥当。
  • 運用
  • Error Triggerでの通知に優先度と相関IDが含まれる。
  • SLO/エラーバジェットが定義済み。ダッシュボード稼働。
  • バックアップとリストア演習を実施済み。
  • セキュリティ/ガバナンス
  • 資格情報はCredential。不要権限なし。
  • 変更はレビュー・承認を経る(MCP推奨)。
  • 個人情報はマスキング、保持期間はポリシー準拠。

チェックリスト(定期点検・改善)

  • 直近のDLQ件数と代表原因のPareto。トップ3をつぶす改善計画。
  • ブレーカー開放の回数・時間。外部ベンダーとのSLA整合。
  • 再試行回数の分布。過剰リトライになっていないか。
  • 待機中実行の棚卸し。期限切れや長期停滞の解消。
  • 資格情報の期限監視とローテーション予定。

実装スニペット集(すぐ使える断片)

  • Retry-After尊重(HTTP Request後のIF前にCodeノード)
    const retryAfter = .headers?.[‘retry-after’];
    if (retryAfter) {
    const seconds = parseInt(Array.isArray(retryAfter) ? retryAfter[0] : retryAfter, 10);
    return [{ json: { waitMs: Math.min(60_000 * 10, seconds * 1000) } }];
    }
    return [{ json: { waitMs: 0 } }];
  • 相関IDの生成
    const id = .correlationId ?? (Date.now() + ‘-‘ + Math.random().toString(36).slice(2,8));
    return [{ json: { …, correlationId: id } }];
  • DLQ投入の共通化(Execute Workflowで呼び出す)
    入力: { correlationId, payload, error, attempt, workflowName, nodeName, timestamp }

ステップ別ハウツー:典型的な構成の作り方

  • 共通のRetry-Wrapperを作る
    1) 新規ワークフロー「HTTP-Retry-Wrapper」。
    2) 入力用のSetノードでURL/method/body/headers/maxAttempts/baseDelayMsを受ける。
    3) Code(attempt, delay計算)→ HTTP Request(Continue On Fail)→ IF(成功判定)→ 成功ならReturn → 失敗ならWait → ループ。
    4) ループはIF(attempt < maxAttempts)でSet→戻す構成で実現。
    5) 全失敗時はExecute Workflow(DLQ-Writer)を呼び出し、最終的にエラーをThrow。
  • Error Triggerで横断通知
    1) ワークフローA(本体)とは別に「Global-Error-Handler」を作成。
    2) Error Triggerノードを起点に、Slack/メール/電話通知、DLQへの記録、AI要約を実装。
    3) 通知文にはcorrelationId、workflowId、node名、エラー概要、次のアクションリンク(Runbook URL)を含める。
  • サーキットブレーカーの適用位置
  • 外部API呼び出し直前の分岐でCodeノードを差し込み、openのときはAPIノードをスキップ。
  • 成功時のカウンタリセットはAPI呼び出し直後に行う。

レート制限の実務知見

  • 外部SaaSは秒間/分間の制限がある。n8n側のワーカー数を上げると弾かれやすくなるため、ワーカー数×平均リクエスト/秒が上限以下になるよう逆算。
  • APIがバースト許容のとき:短時間バースト→長めのWaitで平準化。許容がないとき:常に一定間隔。
  • Bulkエンドポイントがある場合は積極活用。n8nでまとめ処理→1回のHTTPで送るほうが堅牢。

Webhook受信の堅牢化

  • 即時ACK+非同期処理:Webhookで受信後は速やかに200を返し、内部キューへ格納して後続処理(Execute Workflow/Queue)。
  • 重複イベント:Idempotency-Keyで検出。受信時点で重複ならACKして処理はスキップ。
  • 順序保証:イベントに昇順のversion/sequenceを付与。欠番が来たら一時DLQに保留→埋まったら処理。

データ品質と復旧

  • 入力検証:初手のIF/Codeでスキーマ検証(必須フィールド、型)。不正はDLQへ。
  • サニタイズ:外部からの文字列・HTMLの正規化。扱う文字コードや絵文字の影響も確認。
  • 部分的に欠損したデータはフォールバック値と共に「品質フラグ」を出力に残す。

ゼロからの導入手順(要点)

  • ローカル/Dockerでn8nを起動し、外部DB(PostgreSQL)を接続。Queueモード用にRedisを準備。
  • Healthエンドポイントの外形監視ワークフローを最初に作る。
  • Retry-Wrapper、DLQ、Error Trigger、Runbookの4点セットを先に整備し、各ビジネスワークフローはそれを呼び出す構造に。
  • MCPを導入できる場合はSSO/RBACと監査ログ、シークレット金庫を最初に設計。組織横断のテンプレート/ガイドラインを配布。

FAQ(よくある質問)

  • Q1. n8nでノード単位の自動リトライ設定は必要ですか?
    A. ノード個別のオプションより、共通のRetry-Wrapperサブワークフローで一元管理する方が、挙動の統一と可観測性の面で優れます。個別の挙動差が思わぬバグを生みます。
  • Q2. Error Triggerだけで自動復旧できますか?
    A. いいえ。Error Triggerは通知と横断処理の入口です。再試行、フォールバック、ブレーカー、DLQ、冪等性などの設計を併用してください。
  • Q3. 冪等性の保存先は何が良いですか?
    A. 高速性と期限管理が必要ならRedis、完全性重視ならPostgreSQLなどのRDBがおすすめです。スプレッドシートは小規模・低頻度なら可。
  • Q4. 長時間のWaitが多い場合の注意は?
    A. 実行データの保持設定とDB容量、孤立待機の監視に留意してください。期限超過は通知し、手動/自動で再開・中断できるRunbookを用意します。
  • Q5. レート制限で失敗が多発します。どこから見直せば?
    A. ワーカー同時実行数、リクエスト間隔、バッチ化の可否、Retry-Afterの尊重、時間帯の分散(ジッター)を順に調整すると効果的です。
  • Q6. MCPのメリットは?
    A. 組織規模でのSSO/RBAC、監査ログ、シークレットの一元管理、ポリシー適用が可能。セキュリティと可観測性が飛躍的に向上し、運用標準化が進みます。
  • Q7. AIはどの程度任せられますか?
    A. 要約・分類・文面生成など認知支援に有効です。意思決定や実行はルールベースで制御し、AI出力は必ずバリデーションや上限でガードしてください。
  • Q8. ワークフローのアップグレード時に止めたくない
    A. Blue/GreenかRollingで段階的切替。新旧並走し、Healthチェック合格後にトラフィックを移す。エクスポートJSONのバージョン管理とロールバック手順を用意。

まとめと次アクション
自動復旧の肝は「予め仕込む標準部品」と「正しい失敗の扱い方」です。Retry(指数+ジッター)、フォールバック、サーキットブレーカー、DLQ、冪等性、Wait/再開、Runbook。この6点をテンプレート化してすべてのワークフローに適用すれば、n8nは障害に強い業務自動化基盤へと化けます。Queueモード+外部DBでの高可用構成、Error Triggerでの横断通知、AIによる一次要約、MCPでのガバナンスまでを整備すれば、障害対応のMTTRは大幅に短縮でき、実業でも高いROIを得やすくなります。

今すぐできる3ステップ

  • 1) Retry-Wrapper/DLQ/Error Trigger/Runbookの4テンプレを作る(本稿の手順を踏襲)。
  • 2) 既存ワークフローの外部呼び出しをすべてRetry-Wrapper経由に差し替え。Idempotency-Keyを導入。
  • 3) 監視ワークフロー(/health確認)とダッシュボードを整備。SLOを定義し、月次でDLQ/ブレーカー統計をレビュー。

補足:代表的なノード設定の指針

  • HTTP Request
  • Continue On Fail: ON(再試行・分岐前提)
  • タイムアウト: 外部SLAの半分程度
  • 認証: Credentialで一元管理
  • IF
  • 成功条件はJSONの状態(statusCode, errorフラグ, 必須フィールド有無)で厳密化
  • Wait
  • 時間待ちの上限を決め、長期化したら通知(孤立待機の防止)
  • Execute Workflow
  • サブワークフロー(Retry/DLQ/Runbook)呼び出しの基本経路。戻り値をIFで検証

最後に:迷ったら「失敗を小さく、見える化を大きく」
自動復旧の設計は、派手な仕掛けより「地に足のついた標準化」が成果を生みます。小さな失敗で止めない、見える化して継続改善、そして人が介入する余地をRunbookで用意。n8nの部品を組み合わせれば、これらをローコードで堅実に実現できます。今日作ったテンプレートが、明日の障害であなたを助けます。まずは小さく導入し、段階的に組織標準へ育てていきましょう。