2026 年 5 月 15 日、InfoQ が Discord Reveals How a Hidden Circular Dependency Triggered Its March Voice Outage を公開し、Discord が 2026 年 3 月 25 日の音声サービス全停止を引き起こした 「未検出の循環依存」 を詳細なポストモーテムで報告しました。
要点は単純です。「サービス A は B に依存し、B は C に依存し、C が A の起動完了を待っていた」。平常時は順序で問題なく解消されていた依存関係が、ある障害復旧シーケンスで 同時起動の競合を引き起こし、音声基盤全体がカスケード障害に陥ったというものです。月間アクティブユーザー 6 億人の Discord ですら防げなかったこの種の障害は、3〜10 年運用された 中堅企業の本番システムでむしろ日常的に潜んでいます。本記事では受託で提供する 「アーキテクチャ依存性監査」 サービスの設計を整理します。
なぜ「隠れ循環依存」が中堅企業の最大の障害リスクか
| 構造 | なぜ気付けないか |
|---|---|
| マイクロサービス化の途中 | サービス境界が頻繁に揺れて依存関係図が古い |
| 共通ライブラリの双方向利用 | A → 共通 → B、B → 共通 → A の経路が見落とされる |
| DI コンテナの遅延解決 | 起動時は順序があるように見えて、再起動で破綻 |
| ベンダー製パッケージ | 内部依存がブラックボックスでスキャン不可 |
| 属人化したアーキテクチャ知識 | 設計者が退職すると依存マップが失われる |
これらの 「平常時は無害、障害復旧時に致命傷」 という構造を炙り出すには、専門のアーキテクチャ依存性監査が必要です。Netflix Model Lifecycle Graph 受託 MLOps ガバナンス でモデル依存性のグラフ管理を扱いましたが、本記事はそれを 業務システム全般に拡張するアプローチです。
Discord ポストモーテムから抽出する 3 つの教訓
教訓 1: 「平常時に検証できない依存」が最大の地雷
Discord の障害は 障害復旧シーケンスで初めて顕在化しました。カオステストで復旧シーケンスを意図的に再現しないと、依存性の問題は見えません。
教訓 2: 「サービス境界の図」と「実際の通信」は必ずズレる
Discord 内部にも依存図はありました。しかし 「半年以上更新されていない図」 が現実と乖離していたため、循環は検出されませんでした。「実際のトラフィックから依存図を生成する」 仕組みが必須です。
教訓 3: 「単体テストでは検出不能」
循環依存は 単体テスト・統合テスト・E2E テストのいずれでも検出できません。サービスメッシュ層 or eBPFで 実行時の依存関係を継続的にスキャンする必要があります。
受託で構築する「アーキテクチャ依存性監査」4 フェーズ
フェーズ 1: 現状把握(3〜4 週間)
顧客の アーキテクチャ図 / リポジトリ構成 / サービスメッシュ設定を収集し、「公式の依存図」を整備します。並行して、OpenTelemetry / Cilium Hubble / Pixieなどで 実通信ログを 2 週間収集します。
フェーズ 2: 依存図の自動生成と差分分析(2〜3 週間)
実通信ログから 動的依存図を生成し、公式図との差分をレポートします。経験的には 30〜60% の依存が公式図に載っていないケースがほとんどです。
フェーズ 3: 循環依存検出 + リスク優先度づけ(2〜3 週間)
NetworkX / Graphviz / Backstage Tech Insights などで 循環パスを抽出し、「障害時の影響範囲 × 復旧の困難さ」でリスク優先度をつけます。
フェーズ 4: カオステスト + 解消ロードマップ(4〜6 週間)
優先度上位 5〜10 件について カオステストで 障害復旧シーケンスを再現し、循環解消の改修案をロードマップ化します。短期は 再起動順序の固定化、中長期は 依存方向の一方向化を提案します。
受託向け技術スタック標準セット
| レイヤ | 推奨技術 | 代替 |
|---|---|---|
| 動的依存収集 | Cilium Hubble + eBPF | OpenTelemetry + Tempo |
| 静的依存分析 | Backstage Tech Insights | dependency-cruiser / Madge |
| 依存図可視化 | Backstage + Graphviz | Structurizr / C4 model |
| カオステスト | Chaos Mesh / Gremlin | Litmus Chaos |
| 可観測性 | Grafana + Prometheus | Datadog |
| 継続スキャン | GitHub Actions + 週次 Routine | Argo Workflows |
| 報告書生成 | Notion + Looker Studio | Confluence |
特に Grafana Pyroscope 2.0 受託継続プロファイリング と組み合わせると、「依存性 × パフォーマンス」の両面を継続観測できる強い基盤になります。
どの組織に刺さるか / 刺さらないか
| 向く組織 | 向かない組織 |
|---|---|
| マイクロサービス化を 3 年以上経験 | モノリス単独運用 |
| 過去 1 年で「説明できない障害」を経験 | 障害履歴がほぼゼロ |
| サービス境界が頻繁に変わる | アーキテクチャが安定 |
| SRE チームが立ち上げ期 | 成熟した SRE 文化が定着 |
| 内製化が進んでいる組織 | 完全外部依存パッケージ運用 |
受託契約に書く 6 つの条項
| 条項 | 内容 | 顧客が確認すべきこと |
|---|---|---|
| 監査スコープ | 対象サービス・環境(本番 / ステージング) | 範囲外システムの責任 |
| データ収集範囲 | トレース・ログ収集の合意 | 個人情報の取り扱い |
| カオステストの時間帯 | 本番 or ステージング、影響範囲 | ユーザー影響の許容 |
| 改修提案の責任分界 | 提案までか、実装まで含むか | 実装責任の所在 |
| 報告書の共有範囲 | 経営層 / 開発組織 / 監査法人 | 機密保持の対象 |
| 継続契約条件 | 監査の年次更新 / 半期更新 | 更新時の料率 |
価格モデル — アーキテクチャ依存性監査パッケージ
| プラン | 金額 | 対象 | 内容 |
|---|---|---|---|
| スポット診断 | 350 万円〜 | 4 週間 | 30 サービス規模 + 静的分析 + 改善提案 |
| Standard | 800 万円〜 | 12 週間 | 100 サービス規模 + 動的分析 + カオステスト |
| Enterprise | 2,000 万円〜 | 6 ヶ月 | 上記 + 解消ロードマップ実装支援 |
| 年次更新 | 400 万円〜 / 年 | 継続 | 半期に 1 回の差分監査 |
顧客側 ROI 試算(中堅 SaaS 社員 200 名想定)
| 項目 | 監査前 | 監査後 | 差分 |
|---|---|---|---|
| 年間障害件数 | 12 件 | 4 件 | -8 件 |
| 1 件あたり復旧時間 | 平均 4.5 時間 | 平均 1.2 時間 | -3.3 時間 |
| 年間障害ダウンタイム | 54 時間 | 4.8 時間 | -49 時間 |
| 1 時間あたり機会損失 | 100 万円 | 100 万円 | — |
| 年間機会損失 | 5,400 万円 | 480 万円 | -4,920 万円 |
Standard プラン(800 万円)でも 6 倍以上の ROI。Enterprise でも初年度回収可能な水準です。
ハマりやすい 5 つの落とし穴
落とし穴 1: 「公式図だけで監査」
公式図しか見ない監査は 30〜60% の依存を見落とすことが分かっています。実通信ログによる動的分析が必須です。
落とし穴 2: カオステストをいきなり本番
ステージング検証なしの本番カオステストは 本物の障害を起こす確率が極めて高いです。ステージング 2 サイクル → 本番の順序が必須です。
落とし穴 3: 依存解消を「再起動順序の固定」で済ます
短期処置としては有効ですが、「人間が再起動順序を覚えている」状態は属人化のままです。中長期で依存方向を一方向化するロードマップが必須です。
落とし穴 4: ベンダー製パッケージを「ブラックボックス」放置
商用パッケージの内部依存は トレース計装の追加 + ベンダーへの開示要求で可視化できます。契約交渉も監査の一部に含めましょう。
落とし穴 5: 報告書だけで終わる
経営層に報告書を提出するだけでは現場が動きません。「次年度ロードマップへの組み込み」を契約に含めるのが鉄則です。
90 日アクションプラン
| 週 | アクション |
|---|---|
| Week 1〜4 | 現状把握 + 動的依存収集 |
| Week 5〜7 | 動的依存図の生成 + 差分分析 |
| Week 8〜10 | 循環依存検出 + リスク優先度づけ |
| Week 11〜13 | カオステスト + 解消ロードマップ提示 |
まとめ — 「6 億人の Discord も防げなかった」事象を受託で先回りする
Discord の 3 月音声障害は、「平常時に検出できない依存」が 最大の障害リスクであることを世界に示しました。中堅企業がこれを自前で監査するのは現実的ではなく、専門の受託監査がもっともコスト効率の良い対策です。
弊社では スポット診断 / Standard / Enterprise / 年次更新 の 4 段階で アーキテクチャ依存性監査パッケージを提供しています。「説明できない障害が増えてきた」「サービス境界がぐちゃぐちゃで現状が見えない」というご相談は お問い合わせフォーム からお気軽にどうぞ。