## Memo
## Memo with LLM
### 論文情報
- **論文タイトル**: TraceWeaver: Distributed Request Tracing for Microservices Without Application Modification
- **著者と所属**:
- Sachin Ashok, Vipul Harsh, P. Brighten Godfrey, Radhika Mittal (University of Illinois Urbana-Champaign)
- Srinivasan Parthasarathy, Larisa Schwartz (IBM Research)
- **カンファレンス名**: ACM SIGCOMM 2024
- **発表年**: 2024年
### 論文概要
本論文では、マイクロサービスアーキテクチャにおいて、アプリケーションレベルでのコード変更を一切必要とせずに分散リクエストトレーシングを実現するTraceWeaverシステムを提案している。従来の分散トレーシングフレームワークが必要とするコンテキスト伝播のためのアプリケーション計装を不要にし、本番環境から収集可能な情報(タイムスタンプなど)とテスト環境から得られる情報(コールグラフなど)を組み合わせることで、約90%の高精度でリクエストトレースの再構築を実現する。
### 詳細解説
#### 問題設定
**入力**: 各マイクロサービスから観測可能なスパン情報(リクエスト-レスポンスのペアとそのタイミング情報)とコールグラフ(サービス間の依存関係と呼び出し順序)
**出力**: 完全なリクエストトレース(各リクエストとそれが生成するすべての子リクエストの階層構造)
**必要なデータ**: eBPFフックやサービスメッシュのサイドカーを通じて収集されるネットワークシステムコール情報、テスト環境またはプロダクション環境から推定されるコールグラフ情報
#### 提案手法
TraceWeaverは以下の6つのステップからなるアルゴリズムを使用:
1. **候補特定**: 各着信スパンに対して、コールグラフと依存順序から導出された制約を使用して候補マッピングを特定
2. **バッチング**: 最適化の範囲を制限するため、Mスパンを重複する候補マッピングを最小化するバッチに分割
3. **分布生成**: サービス間のスパン間時間分布を推定(初回はガウス分布、以降はGMM(ガウス混合モデル)を使用)
4. **候補ランキング**: 確率密度関数を使用して候補マッピングをスコア化・ランク付け
5. **合同最適化**: 最大独立集合(MIS)問題として定式化し、各バッチ内で最適なマッピング割り当てを決定
6. **反復**: ステップ5の結果を使用してステップ3の時間分布を改善し、精度向上のため反復実行
数式例:各候補マッピングZのスコアは
`score(Z) = scoreAB(t1,t2) + scoreBC(t5,t6) + scoreCA(t7,t8)`
として計算され、各項は
`scoreAB(t1,t2) = log P(t=t2-t1|Θ) = log(Σ πi P(t|μi,σi))`
で表される。
#### 新規性
先行研究との主要な違いは以下の通り:
1. **スレッドモデルへの非依存性**: vPathや[[2023__SIGCOMM__Network-Centric Distributed Tracing with DeepFlow - Troubleshooting Your Microservices in Zero Code|DeepFlow]]が前提とする特定のスレッドモデル(スレッド間でのリクエストハンドオフなし、非同期呼び出しなし)に依存しない汎用的なソリューション
2. **統計的タイミング解析**: リクエスト-レスポンスのタイムスタンプを効果的に利用した検索空間の刈り込み
3. **動的コールグラフ対応**: キャッシュ、サービス障害、セマンティクス理由による部分的なコールグラフトラバースに対応
4. **合同最適化**: 個別スパンではなくバッチ単位での最適化により全体的な精度を向上
#### 実験設定
**データセット**:
- [[DeathStarBench]]スイートのHotelReservationおよびMedia Microservicesアプリケーション
- Node.jsベースのマイクロサービスデモ
- Alibabaクラスターからの本番トレースデータセット
**評価指標**:
- エンドツーエンドトレースの再構築精度
- システム負荷に対する精度の変化
- レスポンス時間パーセンタイルごとの精度
**実験環境**: 3台のVM(各4コア、4GB RAM、Ubuntu 16.04)、32コアIntel Xeon Silverサーバー上で実行
#### 実験結果
- **ベースライン比較**: 最良のベースライン手法(WAP5)が70%の精度に対し、TraceWeaverは93%を達成
- **負荷耐性**: システム負荷100%でも高精度を維持(他手法は負荷増加で急激な精度低下)
- **本番データ**: Alibabaデータセットで80-99%の精度を実現
- **Top-K精度**: 候補上位5つの中に正解が含まれる確率はさらに高く、実用的なデバッグ作業に有効
- **動的環境対応**: キャッシュヒット率80%まで段階的精度低下を示すが実用範囲内
- **パフォーマンス**: 単一インスタンスで約200 RPSの処理能力(~1000スパン/5秒)
論文中で報告されている具体的数値として、TraceWeaverは異なるアプリケーション環境で一貫して90%以上の高精度を維持し、特にテール遅延分析やA/Bテストといった実用的ユースケースで有効性を実証している。
## Abstract
現代のクラウドベースアプリケーションの監視とデバッグは困難です。なぜなら、単一のAPI呼び出しでさえも、相互に依存する多くの分散マイクロサービスが関与する可能性があるからです。このような複雑なシステムに[[Observability|可観測性]]を提供するため、分散トレーシングフレームワークは、マイクロサービスのコールツリー全体にわたってリクエストフローを追跡します。しかし、このようなソリューションでは、分散アプリケーションのすべてのコンポーネントを計装してトレーシングヘッダーを追加・伝播する必要があり、これが普及を遅らせています。本論文では、アプリケーションの計装を一切行わずにリクエストをトレースできるかどうか、すなわちリクエストトレース再構築について探求します。そのため、本研究では、本番設定から容易に入手可能な情報(タイムスタンプなど)とテスト環境から得られる情報(コールグラフなど)を組み込み、実用的に高い精度でリクエストトレースを再構築するシステムであるTraceWeaverを開発します。TraceWeaverの中核は、リクエスト-レスポンスのタイムスタンプを使用してリクエストマッピングの検索空間を効果的に刈り込み、統計的タイミング解析技術を適用してトレースを再構築する再構築アルゴリズムです。(1)ベンチマークマイクロサービスアプリケーションと(2)本番マイクロサービスデータセットによる評価により、TraceWeaverは約90%の高精度を達成し、複数のユースケース(遅いサービスの発見やA/Bテストなど)に有効に適用できることが実証されました。