# マイクロサービスコールグラフ ## 定義 マイクロサービスコールグラフとは、ユーザーリクエスト 1 件を起点として発生するマイクロサービス間のすべての呼び出しを有向グラフで表したものである。エントリポイントマイクロサービス(UM)がユーザーからリクエストを受け取り、その処理のために下流マイクロサービス(DM)を順次または並列に呼び出す。各呼び出しは(TraceID, rpcID, UM, DM, インターフェース, RT, 通信パラダイム)のタプルとして計装・記録される。Alibaba クラスタの実測トレース分析(Luo et al., SoCC 2021)が大規模本番環境での初の包括的な特性解析を行った。 コールグラフの通信パラダイムは 3 種類に分類される。 - **RPC(遠隔手続き呼び出し)**: 双方向の同期通信。DM は UM に結果を返す必要がある(76% を占める) - **MQ(メッセージキュー)**: 一方向の非同期通信。UM は第三者エンティティにメッセージを投入し、DM が後で取り出す(23%) - **IP(プロセス間通信)**: 主に stateless と stateful マイクロサービス間で発生(1%) コールグラフのノードはサービスタイプで分類される: stateless サービス、stateful サービス(DB・Memcached)。Stateless サービスはさらに blackhole(DM なし)・relay(必ず DM を呼ぶ)・normal(確率的に DM を呼ぶ)に分かれる。 ## 横断的知見 - Alibaba 実測(SoCC 2021)で判明したコールグラフの 4 つの固有特性は、既存の学術ベンチマーク(DeathStarBench・μSuite・Acme Air)が本番環境を代表しないことを定量的に示した。(1)ヘビーテール分布: グラフサイズが Burr 分布に従い 10% 超が 40 ノード超、(2)ツリー状拡散: 大半のノードが in-degree 1、(3)ホットスポット: 5% のマイクロサービスが 90% 以上のサービスに共用、(4)動的トポロジー: 同一サービスが 9 クラス超の異なる位相を示す(Source: [[@2021__SoCC__Characterizing Microservice Dependency and Performance]]) - 分散トレーシングの計装によって収集したコールグラフデータは、障害箇所特定([[Fault Localization]])・根本原因分析([[根本原因分析]])・マルチモーダル障害診断([[マルチモーダル障害診断]])の入力として広く使われている。トレースの量・粒度・コスト効率のトレードオフが各診断手法の設計を左右する(Source: [[@2021__SoCC__Characterizing Microservice Dependency and Performance]], [[分散トレーシング]] 横断知見) - コールグラフのトポロジーが RT に直接影響するという知見(同一クラスタ内 RT の安定性が 90% 超でイントラ/インタークラスタ比 < 0.6)は、トポロジー認識型スケジューラの必要性を裏づける。RT の変動を説明するためにコールグラフを利用する研究と、コールグラフを入力として RT を予測する研究の 2 方向がある(Source: [[@2021__SoCC__Characterizing Microservice Dependency and Performance]]) - グラフ深さが大きくなると通信パラダイムが変化し、深い階層では Memcached ヒット率が低下して DB 通信の割合が増える。一方、MQ の割合も増加し、非同期化が RT を補償する設計が自然に生まれていることが示唆される(Source: [[@2021__SoCC__Characterizing Microservice Dependency and Performance]]) ## 未解決の問い - コールグラフのトポロジークラス(9 種超)に応じた動的スケジューリングは、静的設定より有意に RT を改善できるか?実測ベースの検証が必要 - ホットスポットマイクロサービス(上位 5%)の障害は他サービスに比べてどれだけ広範囲に RT 劣化を伝播させるか?ホットスポット認識型 SLO 設計の基礎となるトレード計算が未整備 - 強結合依存ペアのインターフェース統合(単一マイクロサービス化)は、実際に通信オーバーヘッドを有意に削減し、かつ開発のルーズ結合メリットを損なわないか? - 確率的グラフ生成モデルが未対応の「ノードの複数グラフ間共有」問題をどう定式化するか。集約呼び出しトレースを活用したノードマッチングの設計が開かれている - 異なるクラウドプロバイダ(Google Cloud・AWS・Azure)のマイクロサービスでも同じ 4 特性(ヘビーテール・ツリー状・ホットスポット・動的)が観測されるか?単一プロバイダ結果の一般化可能性 ## 関連 - 概念: [[分散トレーシング]] / [[テレメトリ]] / [[Fault Localization]] / [[根本原因分析]] / [[AIOps]] / [[マルチモーダル障害診断]] / [[トレースサンプリング]] - エンティティ: [[Alibaba Group]] / [[Shutian Luo]] / [[Chengzhong Xu]] / [[DeathStarBench]] - 関連構造: `structures/LLM4SRE - MOC.md` ## 出典 - [[@2021__SoCC__Characterizing Microservice Dependency and Performance]] — Luo et al., SoCC 2021: Alibaba 本番クラスタのトレース分析