## Memo
- ICLR2025 rejected
- [ChaosEater: Fully Automating Chaos Engineering with Large Language Models \| OpenReview](https://openreview.net/forum?id=8pbyay0prT)
- ![[Pasted image 20250414183755.png|600]]
## Memo with LLM
https://claude.ai/chat/cb1c5f16-17cf-47db-8101-d1134e8375f1
## 論文情報
- 論文のタイトル: CHAOSEATER: FULLY AUTOMATING CHAOS ENGINEERING WITH LARGE LANGUAGE MODELS
- 著者と所属: Daisuke Kikuta, Hiroki Ikeuchi, Kengo Tajiri, Yuusuke Nakano (NTT Corporation)
- カンファレンス/ジャーナル名: arXiv (Technical Report)
- 発表年: 2025年
## 論文概要
この論文では、分散システムの復元力を向上させるためのカオスエンジニアリング(CE)を大規模言語モデル(LLM)を用いて完全に自動化するシステム「CHAOSEATER」を提案している。CHAOSEATERは、カオスエンジニアリングのサイクルに沿って一般的なフローを事前定義し、そのフロー内の細分化された操作をLLMに割り当てることで、仮説定義、実験、分析、改善の各フェーズを自動化する。
## 詳細解説
### 問題設定
- 入力: Infrastructure as Code(IaC)に基づくKubernetesシステム(K8sマニフェストとSkaffold設定ファイル)と、CEサイクルに関する指示
- 出力: CEサイクルの要約と、仮説を満たすように修正されたK8sマニフェストを含むフォルダ
- 必要データ:
1. システムの通常状態(steady state)を定義するためのK8sリソースメトリクス
2. 障害注入のためのChaos Meshワークフローマニフェスト
3. 実験結果の検証のためのユニットテスト(Validation as Code)
問題は、従来のCEツールが実験の実行と分析の自動化のみを実現しており、仮説の定義、実験計画、システム再構成などの手動操作が依然として必要であることである。これらの手動操作はネットワーキングとCEのドメイン知識、システム構成やエラーメッセージの解釈能力、要件定義や問題解決のための創造的思考など、複雑なスキルセットを必要とするため、コストが高く自動化が困難であった。
### 提案手法
CHAOSEATERは以下の6つのフェーズで構成される:
1. **前処理(Pre-processing)**: ユーザー入力を解析し、システムをK8sクラスターにデプロイする。
- K8sマニフェストの要約
- レジリエンスの潜在的な問題の特定
- マニフェストの想定アプリケーションの推測
- CEサイクルに関するユーザー指示の要約
2. **仮説(Hypothesis)**: システムのsteady state(正常状態)と障害注入を定義する。
- Steady stateの定義: 測定可能な出力(Pod数、スループット、エラー率など)
- 障害注入の定義: 実世界のイベント(プロモーションキャンペーン、サイバー攻撃など)をシミュレートする障害シナリオ
3. **実験(Experiment)**: 仮説を検証するためのカオス実験を計画・実行する。
- 実験計画: 事前検証、障害注入、事後検証の3フェーズに分けて時間割り当て
- 実験再計画: 改善フェーズでの変更を反映するための調整
- 実験実行: Chaos Meshワークフローのデプロイと実行
4. **分析(Analysis)**: 実験結果を分析し、仮説が満たされているかを確認する。
- 失敗したテストの原因分析
- レジリエンス向上のための推奨事項の提示
5. **改善(Improvement)**: 仮説を満たすようにシステムを再構成する。
- K8sマニフェストの修正(作成、削除、置換)
- 改善ループ: 仮説が満たされるまで実験、分析、改善を繰り返す
6. **後処理(Post-processing)**: 完了したCEサイクルを要約する。
各フェーズでは、LLMベースのエージェントが特定の操作を実行し、ルールベースのアルゴリズムがデータの入出力を処理する。例えば、steady stateの検証には「Validation as Code(VaC)」アプローチを採用し、ロジックをコードで明示的に定義することで検証プロセスの一貫性と透明性を確保している。
### 新規性
- CEの完全自動化: 先行研究やツール(Netflix Chaos Monkey、AWS Fault Injection Service、Chaos Mesh、Azure Chaos Studioなど)は実験の実行と分析の自動化に留まっていたが、CHAOSEATERは仮説定義から改善までの全プロセスを自動化している。
- LLMによるソフトウェアエンジニアリング(SE)タスクの実行: 従来のアルゴリズムベースのアプローチでは困難だった要件定義、コード生成、デバッグ、テストなどのSEタスクをLLMを活用して実現している。
- システマティックなCEフローの設計: 一般的なCEサイクルに従ったフローを事前定義し、そのフロー内の細分化された操作をLLMに割り当てる設計により、複雑なCE操作の自動化を実現している。
### 実験設定
論文では2つのケーススタディを実施:
1. **NGINX(小規模システム)**:
- 2つのK8sマニフェスト(Pod、Service)で構成される単一のNginxサーバー
- 意図的に非レジリエントな設定(restartPolicy: Never)を施した
2. **SOCKSHOP(大規模システム)**:
- 29のマニフェストで構成される実用的なEコマースシステム
- フロントエンドのDeploymentのみレプリカ数を1に設定し、他のDeploymentは2レプリカに設定
評価指標:
- 時間コスト: CEサイクル完了までの総時間
- 金銭コスト: OpenAI API使用に基づく費用
- 完了率: ランタイムエラーなしでCEサイクルを完了した実行の割合
- 再構成率: 入力システムを正常に再構成した実行の割合
各システムに対して同じ設定で5回の単一CEサイクルを実行し、結果を集計した。
### 実験結果
**NGINX**:
- 時間コスト: 11分(実験実行の2分を含む)
- 金銭コスト: $0.21(入力トークン59k、出力トークン5.9k)
- 完了率: 100%
- 再構成率: 100%(すべての実行で複数レプリカを持つDeploymentに再構成)
**SOCKSHOP**:
- 時間コスト: 25分
- 金銭コスト: $0.84(入力トークン284k、出力トークン13k)
- 完了率: 100%
- 再構成率: 80%(5回中4回の実行でフロントエンドのレプリカ数を2以上に再構成)
NGINXとSOCKSHOPの両方において、CHAOSEATERは正常にCEサイクルを完了し、システムのレジリエンスの問題を特定して修正することができた。NGINXの場合は単一Podと再起動ポリシーの問題を、SOCKSHOPの場合はフロントエンドの単一レプリカの問題を解決した。
これらの結果から、提案システムは人間のエンジニアに比べて時間と金銭コストを大幅に削減しながら、合理的なCEサイクルを完了できることが示された。また、リソース数が10倍以上増加しても、コスト増加が最小限に抑えられることが示された。
## Abstract
[[Chaos Engineering]](CE)は、分散システムの耐障害性を向上させることを目的としたエンジニアリング手法である。人為的に特定の障害を分散システムに注入し、それに対するシステムの挙動を観察する。その観測結果に基づいて、そのような障害に対処できるようにシステムをプロアクティブに改善することができる。最近のCEツールは、事前に定義されたCE実験の自動実行を実現している。しかし、これらの実験の定義や実験後のシステムの再構成は、依然として手作業のままである。このような手作業のコストを削減するために、我々はLarge Language Models ([[LLM]])を用いたCE操作全体を自動化するためのシステム "ChaosEater "を提案します。このシステムは、体系的なCEサイクルに従って一般的なフローを事前に定義し、フロー内の細分化された操作をLLMに割り当てる。我々は、Infrastructure as Code ([[Infrastructure as Code|IaC]])に基づくシステムを想定しており、システムの構成や人工的な障害はコードによって管理される。従って、本システムにおけるLLMの操作は、要件定義、コード生成とデバッグ、テストなどのソフトウエアエンジニアリングのタスクに対応します。私たちは、小規模なシステムと大規模なシステムの両方のケーススタディを通じて、私たちの「♪textit{system}」を検証します。その結果、合理的な単一CEサイクルを完了する一方で、私たちの「♪textit{system}」が時間と金銭的コストの両方を大幅に削減することが実証されました。