ホーム テクノロジー クラウドコンピューティング カオス エンジニアリング ツールを使用して本番環境の信頼性をチェックする

カオス エンジニアリング ツールを使用して本番環境の信頼性をチェックする

カオス エンジニアリング ツールを利用して、プロダクションの信頼性を維持する方法を見てみましょう。

カオス エンジニアリングは、システムやアプリケーションを実験してその弱点や能力の欠陥を明らかにする学問です。これらは、作成中に起こるとは考えられないことでした。したがって、システムに意図的にいくつかの障害を発生させてその弱点を明らかにし、修正を加えてシステムとアプリケーションの回復力を高めることになります。

Netflix、LinkedIn、Facebook などの多くの人気組織は、マイクロサービス アーキテクチャと分散システムをより深く理解するためにカオス エンジニアリングを実行しています。これは、実際のユーザーからの苦情よりも早く新しい問題を発見し、それらを修正するために必要な措置を講じることに役立ちます。そうすることで、これらの組織は何百万ものユーザーにサービスを提供し、生産性を向上させ、数百万ドルを節約できるのです 🤑。

カオスエンジニアリングの利点:

  • 重大な問題を見つけて収益の損失を制御する
  • システムまたはアプリケーションの障害の削減
  • 中断が少なく、サービスの可用性が高いため、ユーザー エクスペリエンスが向上します
  • システムについて学び、自信を得るのに役立ちます。

生産の信頼性についてどの程度自信がありますか?本当に災害に強いのか?

次の一般的なカオス テスト ツールを使用して調べてみましょう。

カオスメッシュ

Chaos Mesh は 、Kubernetes システムのすべての層に障害を注入するカオス エンジニアリング管理ソリューションです。これには、ポッド、ネットワーク、システム I/O、カーネルが含まれます。 Chaos Mesh は、Kubernetes ポッドを自動的に強制終了し、レイテンシをシミュレートできます。ポッド間の通信が中断され、読み取り/書き込みエラーがシミュレートされる可能性があります。実験のルールをスケジュールし、その範囲を定義できます。これらの実験は、YAML ファイルを使用して指定されます。

Chaos Mesh には、実験の分析を表示するためのダッシュボードがあります。 Kubernetes 上で実行され、クラウド プラットフォームの大部分をサポートします。これはオープンソースであり、最近 CNCF サンドボックス プロジェクトとして承認されました。カオス エンジニアリングの原則を使用すると、DevOps ワークフローにカオス メッシュを追加して、回復力のあるアプリケーションを構築できます。

カオスメッシュ - オタクフレア
カオスメッシュ – オタクフレア

カオスエンジニアリングの特徴:

  • デプロイロジックを変更することなく、Kubernetes クラスタに簡単にデプロイ可能
  • 導入に固有の依存関係は必要ありません
  • CustomResourceDefinitions (CRD) を使用してカオス オブジェクトを定義します
  • すべての実験を追跡するためのダッシュボードを提供します

カオスツールキット

Chaos ToolKit は、 カオス エンジニアリング実験自動化のためのオープンソースのシンプルなツールです。

カオスツールキット cli
カオスツールキット cli

Chaos ToolKit は、AWS、Google Cloud、Slack、Prometheus などをサポートするドライバーまたはプラグインのセットを使用してシステムに統合します。

カオスツールキット
カオスツールキット

Chaos ToolKit の機能:

  • ベンダーやテクノロジーに依存しないカオス実験を作成するための宣言型オープン API を提供します
  • 自動化のために CICD パイプラインに簡単に埋め込むことができます
  • ChaosIQ を通じて商用およびエンタープライズ サポートも提供します

カオスキューブ

名前から推測できるように、これは Kubernetes 用です。

Chaoskube は 、Kubernetes クラスター内のランダムなポッドを定期的に強制終了するオープンソースのカオス ツールです。これは、ポッドに障害が発生したときにシステムがどのように反応するかを理解するのに役立ちます。デフォルトでは、任意の名前空間のポッドを 10 分ごとに強制終了します。 Chaoskube では、名前空間、ラベル、アノテーションなどを使用してターゲット ポッドをフィルタリングできます。Chaoskube を使用して簡単にインストールできます。

カオスモンキー

Chaos Monkey は 、クラウド システムの反応を理解するために意図的に障害を作成することで、クラウド システムの回復力をチェックするために使用されるツールです。 Netflix は、AWS インフラストラクチャの回復力と回復可能性をテストするためにこれを作成しました。失敗を試すために野生の武装した猿のように破壊を生み出すことから、カオス モンキーと名付けられました。

また、新しいエンジニアリング手法であるカオス エンジニアリングを生み出したのも Chaos Monkey でした。突然大きな失敗を避けるためには、失敗を繰り返したほうが良いという原則に基づいて作成されました。

カオスモンキー
カオスモンキー

カオス モンキーの特徴:

  • これは、インスタンスのランダムな障害に備えるのに役立ちます。
  • 予期せぬ障害に備えた冗長性の確保
  • Spinnaker を使用してクラウド間の互換性を実現
  • 障害をシミュレートするための構成可能なスケジュールを提供します
  • 新しい依存関係を Chaos Monkey に追加するために govendor と統合されました
カオス モンキー スピネーカー
カオス モンキー スピネーカー

シミー

Simmy は、.NET の Polly 復元プロジェクトと統合されたフォールト挿入カオス ツールです。コードを実行する Polly を通じてカオス注入ポリシーを作成できます。システムに例外を挿入する例外ポリシー、新しい動作を挿入する動作ポリシーなど、さまざまなポリシーが提供されます。これらのポリシーは、動作をランダムに挿入するように設計されています。

シミー
シミー

シミーの特徴:

  • カオスを注入するための Monkey ポリシーまたは Chaos ポリシーを提供します
  • 依存関係の障害を簡単にテストできます
  • これは、作業モデルにすばやく復帰し、爆発範囲を制御するのに役立ちます。
  • 実稼働グレードの準備が整っています。
  • 外部要因に基づいた障害も定義できます (たとえば、グローバル構成による障害)。

ピストル

Pystol は、クラウドネイティブ環境で欠陥のある注入を注入するために使用されるツールです。 Kubernetes オペレーターを通じて ETCD 内のイベントを監視します。フォールト挿入アクションが実行されると、オペレーターはポッドを作成し、いくつかの Ansible コレクションを実行します。したがって、開発者は実行する独自のアクションを作成する必要はありません。

Pystol は、システムをテストするための既製のアクションを提供します。それでも、開発者が新しいアクションを作成したい場合は、GoLang と Python を使用して作成できます。

すべてのジョブ操作の概要ビューを提供する継続的統合ダッシュボードが提供されます。 Pystol をローカルで実行することも、Docker イメージを使用してコンテナーにデプロイすることもできます。 Pystol は 2 つのインターフェイスを提供します。1 つは Web UI で、もう 1 つは CLI 経由です。明らかに、Web UI の方が優れた選択肢です。

ピストル
ピストル

ムクシー

Muxy は、 実際の分散システム障害に対する復元力とフォールト トレランス パターンをテストするためのプロキシです。トランスポート レベル (レイヤー 4)、TCP セッション レベル (レイヤー 5)、および HTTP プロトコル レベル (レイヤー 7) を改ざんする可能性があります。

ムクシー
ムクシー

Muxy の機能:

  • モジュール式アーキテクチャで簡単に拡張可能
  • 公式の Docker コンテナがある
  • インストールが簡単で、依存関係は必要ありません。
  • 回復力の継続的なテストに最適
  • 分散システムとモバイルデバイスのネットワーク接続の問題をシミュレートします

プンバ

Pumba は、Docker コンテナーのカオス テストを実行するコマンドライン ツールです。 Pumba を使用すると、アプリケーションの Docker コンテナを意図的にクラッシュして、システムがどのように反応するかを確認します。 CPU、メモリ、ファイル システム、入出力などのコンテナ リソースに対してストレス テストを実行することもできます。

Kubernetes クラスター上で Pumba を実行することもできます。 Kubernetes ノードに Pumba をデプロイするには、DaemonSet を使用する必要があります。複数の Pumba コンテナーを使用して、同じ DaemonSet 内で複数の Pumba コマンドを実行できます。

プンバ
プンバ

カオスブレード

ChaosBlade は 、Alibaba がシステムに実験を注入するためのオープンソース ツールです。過去 10 年間にアリババが直面したすべての失敗をテストし、それらを回避するためのベスト プラクティスを適用します。カオス エンジニアリングの原則に従って、分散システムのフォールト トレランスをチェックします。

カオスブレード
カオスブレード

ChaosBlade の特徴:

  • CPU、ネットワーク、メモリ、ディスクなどの複数のリソースの実験シナリオを提供します。
  • Kubernetes プラットフォーム上のノード、ネットワーク、ポッドの実験的シナリオを提供します
  • 実験を実行するための使いやすい CLI コマンドを提供します

リトマス

Litmus は、 クラウドネイティブのカオス エンジニアリングの原則に従っています。リトマス ツールの使命は、Kubernetes システムおよび Kubernetes 上で実行中のアプリケーションの弱点を見つけるための完全なフレームワークを提供することです。

Chaos Operator とその周囲の CRD (CustomResourceDefinitions) があり、プラグ アンド プレイ機能が可能です。すべては、カオス ロジックを Docker イメージに組み込み、それをリトマス フレームワークに投入し、CRD を使用してオーケストレーションすることです。

リトマスの特徴:

  • サイト信頼性エンジニアと開発者が Kubernetes システムの弱点を見つけるのを支援します
  • すぐに使える汎用実験を提供
  • カオスワークフロー管理のためのChaos APIを提供
  • Litmus SDK は、独自の実験を作成するための Go、Python、および Ansible をサポートしています。

グレムリン

Gremlin は、 エンジニアがより回復力の高いソフトウェアを構築するのに役立ちます。カオス エンジニアリングの実験を安全、確実、そして簡単に実行するためのプラットフォームを提供します。

gremlin を使用すると、ホストやコンテナがどこにあるか (パブリック クラウドか独自のデータ センターか) に関係なく、慎重に障害をホストやコンテナに注入できます。

グレムリン
グレムリン

グレムリンの特徴:

  • ホストまたはコンテナに軽量エージェントをインストールして障害を挿入します
  • 10 種類以上の異なるインフラストラクチャ攻撃モードを提供
  • ステート グレムリンを使用すると、システム時間を操作したり、ホストをシャットダウンまたは再起動したり、プロセッサを強制終了したりできます。
  • ネットワーク グレムリンは、遅延を発生させてパケット損失を引き起こしたり、トラフィックをドロップしたりする可能性があります。
  • Gremlin の Alfi ライブラリ攻撃は、Web アプリ経由で設定、開始、停止できます。 API または CLI
  • 攻撃したい爆発範囲を正確に狙うことができます
  • すべての攻撃を停止し、システムを定常状態にロールバックできます。

ステディビット

Steadybit は、 ダウンタイムを積極的に削減し、システムの問題を可視化することを目指しています。このツールは、インフラストラクチャまたはサービスとしてのクラウド (SaaS) 上でローカルに実行できます。

ステディビット
ステディビット

Steadybit を使用するには、状況を定義し、実験をシミュレートし、本番環境でシミュレートされた実験を実行し、すべての実験を自動化します。システム上でインテリジェントなエージェントを実行し、潜在的な問題や弱点を発見します。複数のシステムと簡単に統合できます。

結論

勇気を持ってカオス エンジニアリングの原則を適用し、上記のツールを使用してプロダクションをテストしてください。これらのツールは、システム内の複数の未確認の弱点を発見し、システムの回復力を高めるのに役立ちます。

「カオス エンジニアリング ツールを使用して本番環境の信頼性をチェックする」についてわかりやすく解説!絶対に観るべきベスト2動画

実験!カオスエンジニアリング
「動いてるからヨシ!」よりも実験してみませんか?カオスエンジニアリングのススメ #devio2020