#chaos
[Chaos Engineering tools comparison](https://www.gremlin.com/community/tutorials/chaos-engineering-tools-comparison/)
各ツールの機能,使いやすさ,システム/プラットフォームのサポート,および拡張性についての客観的な考察が目的。
## Chaos Monkey
Netflixは,このツールから,Simian Armyと呼ばれる障害注入ツール群全体を構築したが,これらのツールの多くは,引退したり,Swabbieのような他のツールに組み込まれたりしている。
攻撃タイプは、仮想マシンインスタンスの終了だけ。一般的な実行時間を設定すると、その時間内のある時点でランダムにインスタンスを終了させる。
Cons:
- SpinnakerとMySQLが必要
- shutdownのみのサポート
...
## ChaosBlade
- Alibabaが2019年にリリース。
Pros:
- Kubernetes、クラウドプラットフォーム、ベアメタルなど幅広いプラットフォームに対応しており、パケットロス、プロセスキル、リソース消費など数十種類の攻撃を提供。
- Java、C++、Node.jsのアプリケーションレベルのFIにも対応。
Cons:
- 中央集権的なレポーティング、実験計画、ターゲットのランダム化、ヘルスチェックなどが欠けている。
- 詳細ドキュメントが中国語しかない。
## [[Chaos Mesh]]
2020年にPingCapがリリース。CNCFのsandbox project。
Pros
- リソース消費、ネットワークレイテンシー、パケットロス、帯域制限、ディスクI/Oレイテンシー、システム時間の操作、さらにはカーネルパニックなど、17種類のユニークな攻撃をサポート。
- Kubernetesのツールなので、Kubernetesのラベルやセレクタを使って、爆発範囲を細かく調整できる。
- Chaos Dashboardと呼ばれる完全な機能を持ったWebユーザーインターフェース(UI)を備えている。新しい実験を作成するだけでなく、ダッシュボードを使って実行中の実験を管理し、実行のタイムラインを見れる。また、Chaos MeshはGrafanaと統合されており、実行結果をクラスタのメトリクスと一緒に表示して、直接的な影響を確認できる。
- 実験はすぐに実行できるし、cronを使ってスケジュールもできる。Chaos Meshはビルトインのスケジューリング機構をもつわけではなく、デフォルトでは、アドホックな実験は無期限に実行される。
- GitHub Actionを提供している。Kubernetes in Docker (kind)を使って一時的なKubernetesクラスタを作成し、アプリケーションとChaos Meshをデプロイし、検証のために指定したコマンドを実行する。
Cons
- ノードレベルの実験ができない。
- ネイティブなスケジューリングができない
- アドホックな実験に時間制限がない
- ダッシュボードがセキュリティリスク
## [[LitmusChaos - MOC]]
2018年にMayaDataがリリース。CNCF sandbox project。
EC2インスタンス停止したり、Kafkaクラスタのディスク故障をシミュレートしたり、OpenEBSのPodをkillしたりできる。
Litmus Probesと呼ばれるヘルスチェック機能があり、実験前、実験中、実験後にアプリケーションの状態を監視できる。Probesでは、シェルコマンドの実行、HTTPリクエストの送信、Kubernetesコマンドの実行などを行い、実験を行う前に環境の状態を確認できる。これは、エラー検出の自動化や、システムが不安定な場合に実験を中止するのに役立つ。
しかし、Litmusを使い始めるのは、他の多くのツールに比べてはるかに難しい。デフォルトでは、Litmusは実験するアプリケーションとネームスペースごとに、サービスアカウントとアノテーションを作成する必要がある(管理者モードでLitmusを実行すると、リソースを1つのネームスペースに統合することで、この管理オーバーヘッドを減らせる)。これにより、セキュリティが強化され、偶発的な障害が発生しにくくなる一方で、実験が複雑になる。
Pros:
- 成功したワークフローに基づいて、ダッシュボードとレジリエンスのスコアを提供するWeb UI。
- ChaosHubによる大量の実験
- 自動化されたシステムヘルスチェック
Cons:
- 実験の実行プロセスが長くて複雑。
- 実験を掃除するときに、多くの管理オーバヘッドがある。
- Web UI(Litmus Portal)の機能が制限されており、ドキュメントも不足している。
- パーミッションは実験ごとに割り当てられるため、アクセスを追跡・管理するのは困難。
![[Chaos Toolkit]]
## PowerfulSeal
## Toxiproxy
## Istio
## Kubedoom
## AWS Fault Injection Simulator
RDS、EC2、ECS、EKSで動作する。
2021年にAWSよりリリース。
Pros:
- エージェントインストール不要
- AWSのAPIレベルの故障をサポート
- 並列に実験を実行できる。
- AWSコンソールから利用可能。
Cons:
- 4 AWSサービスでしか動作しない
- 限られたfailure mode
- 実験の作成がたいへん
- 全ての実験種別で停止したり、ロールバックできるわけではない。