# 障害依存グラフ
## 定義
障害依存グラフ(Failure Dependency Graph、FDG)は、オンラインサービスシステムにおける障害ユニット(failure unit = コンポーネント×メトリクスグループ)間の依存関係を表す無向グラフ `G=(V, E)` である。頂点 V は障害ユニット全体の集合、辺 `(v_i, v_j) ∈ E` は障害ユニット v_i と v_j が依存関係を持つことを示す。(Source: [[@2022__ESEC FSE__Actionable and Interpretable Fault Localization for Recurring Failures in Online Service Systems]] §2.2 Definition 1)
[[サービス依存グラフ]](SDG)がサービスを頂点とするのに対し、FDG は**障害ユニット**(コンポーネント×メトリクスグループ)を頂点とする点が異なる。同一コンポーネント上の異なる障害ユニット(例: DB1 CPU と DB1 Memory)も FDG の別頂点として区別される。
**FDG の構築方法**:
1. 分散トレーシングツールからコール関係を収集(サービス→OSB→DB)
2. CMDB(構成管理 DB)からデプロイ関係を収集(サービス→コンテナ→OS)
3. コール関係とデプロイ関係を障害ユニットレベルへ変換して FDG を自動構築
4. エンジニアが手動で辺を追加・削除可能(例: 静的解析やトレーシングで捕捉できないステートフルな第三者サービス依存)
FDG はシステムのデプロイ変更・ソフトウェア変更に伴って動的に変化するため、障害ごとに最新の FDG を使用する。sysA の例では 27 コンポーネントに対して 102 頂点・109 辺の FDG が生成される。
## 横断的知見
- **FDG は SDG より細粒度で「障害伝播の方向」でなく「依存の存在」のみを表現する**: [[サービス依存グラフ]](SDG)がサービスレベルの依存を有向グラフで表すのに対し、FDG は障害ユニットレベルで無向グラフを採用する。「CPU 枯渇が Requests に伝播する」という因果方向は FDG には明示されず、GAT がデータから学習する。FDG はトポロジ構造を GAT に与えるが、伝播方向の推論は機械学習に委ねる設計である。(Source: [[@2022__ESEC FSE__Actionable and Interpretable Fault Localization for Recurring Failures in Online Service Systems]])
- **FDG の不完全性は許容範囲内で扱える**: DéjàVu の実験では、FDG の辺をランダムに 10% まで除去した場合はほぼ性能低下なし、30% まで除去しても軽微な低下にとどまった。ただし過度な辺の除去は誤った構造情報を与えるため性能低下する。(Source: [[@2022__ESEC FSE__Actionable and Interpretable Fault Localization for Recurring Failures in Online Service Systems]] §5.3.1)
- **FDG はシステム間で定義が大きく異なるため転移学習が困難**: 異なるオンラインサービスシステムではエンジニアが全く異なる障害ユニット定義を採用する。したがって DéjàVu で学習済みのモデルを別システムに転移することは現状では不可能である。(Source: [[@2022__ESEC FSE__Actionable and Interpretable Fault Localization for Recurring Failures in Online Service Systems]] §6.2)
## 未解決の問い
- FDG と[[サービス依存グラフ]](SDG)の設計空間の使い分けはどうあるべきか。有向グラフ(原因→結果)で FDG を表現した場合、GAT の学習は容易になるか困難になるか。
- FDG の自動構築において CMDB の遅延更新・トレーシングのカバレッジ不足は診断精度にどう影響するか。SDG と同様に「構造データの不完全性」問題が発生するか。
- コンポーネント数・メトリクス数が数万規模のシステム(クラウドネイティブな大規模サービス)で FDG が 100,000 頂点を超えた場合、GAT のスケーラビリティはどうなるか。
## 関連
- 上位/類縁概念: [[サービス依存グラフ]] / [[マイクロサービスコールグラフ]]
- 利用手法: DéjàVu (GAT による障害伝播モデリング)
- 概念: [[Fault Localization]] / [[再帰障害]] / [[グラフニューラルネットワーク]]
- ソース: [[@2022__ESEC FSE__Actionable and Interpretable Fault Localization for Recurring Failures in Online Service Systems]]
## 出典
- [[@2022__ESEC FSE__Actionable and Interpretable Fault Localization for Recurring Failures in Online Service Systems]] §2.2 Definition 1(FDG の定義)、§2.2(構築方法)、§5.3.1(辺の不完全性への頑健性)、§6.2(転移学習の限界)