#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 - 実験の作成がたいへん - 全ての実験種別で停止したり、ロールバックできるわけではない。