Fault Injection Testing の概要

Fault Injection Testing では、フォールト インジェクション テストを実施できます。これは、システムに障害を発生させて、顧客に影響を与える予期しない実際の障害が発生する前に、システムの復元力をテストする方法です。Fault Injection Testing を使用すると、 Google Cloud 環境のさまざまなコンポーネントに障害を挿入して、アプリケーションが予測可能な方法で障害を処理することを確認できます。

Fault Injection Testing の初回リリースでは、一般的に、障害はターゲット リソースの障害と同等です。アプリケーションにフォールト トレランスを組み込んでいる場合、これらの障害が発生すると、アプリケーションがトラフィックを正常なインスタンスにリダイレクトします。

障害を挿入する前、挿入中、挿入後にアプリケーションをモニタリングし、アプリケーションが障害を期待どおりに処理したことを確認する必要があります。

Fault Injection Testing を使用する理由

Fault Injection Testing を使用すると、 Google Cloud さまざまな障害シナリオでアプリケーションの復元力に関するテストを実行できます。このスペクトルの主な部分は、ゾーンとリージョンの障害を近似するテストを実行することです。これは、ユーザーが単独で完全に実行することが難しいか、不可能なことです。 Google Cloud また、Fault Injection Testing は、設計された復元メカニズムを本番環境に導入する前にテストできるため、開発と改善に役立つツールとしても機能します。問題が本番環境で発生する前に検出することで、設計の改善を迅速に行い、費用のかかるダウンタイムや評判の低下を回避し、全体的なエクスペリエンスを向上させることができます。

Google Cloudネイティブの障害注入プロダクトがない場合、独自のテストを実施する必要があります。独自のテストを行うのは問題があります。Google Cloud は共有環境であり、多くの場合、基盤となるサービスとインフラストラクチャに直接アクセスできない可能性があります。このシナリオでは、不十分で手間のかかるテストが行われ、最終的にアプリケーションの復元力を適切にテストするという目標を達成できない可能性があります。Fault Injection Testing は、これらのテストを自動化する労力を軽減し、通常はアクセスできない障害モードへのアクセスを可能にし、テストの忠実度を高めます。

規制対象のお客様の場合、業界の規制機関のコンプライアンスを維持するために、定期的なテストの実施が要件となることがよくあります。このような場合、多くの場合、実験は災害復旧テストの形式で行われ、ゾーンまたはリージョンの障害によってアプリケーションの効率的な動作が停止しないことが示されます。

テストに使用できる障害

次の障害が利用可能です

  • Cloud SQL のフェイルオーバー - データベースをプライマリからスタンバイにフェイルオーバーします。
  • アプリケーション トラフィックの劣化 - レイヤ 7 ロードバランサを介したトラフィックの劣化をシミュレートする

これらの障害は、実験の範囲を単一リージョンまたはそれよりも狭い範囲の単一プロジェクトのリソースに制限するように設計されています。テストが意図した範囲よりも広範囲に影響することはありません。ただし、これらの障害により、環境内のターゲット リソースで実際のエラーが発生します。

Cloud SQL データベースやアプリケーション ロードバランサなどのインフラストラクチャ コンポーネントや、今後サポートされる他のコンポーネントをターゲットにすることで、独自のアプリケーションのコンテキストでゾーンまたはリージョンの障害を合理的に近似できます。

Fault Injection Testing の使用方法

Fault Injection Testing を使用する前に、次のことを確認してください。

  • テスト対象の環境には、ある程度の冗長性が確保されています。障害が挿入されても、この環境のアプリケーションは冗長インフラストラクチャで引き続き実行できます。
  • Google Cloud リソースの管理者またはオーナーの場合: Fault Injection Testing のテストを設定して実行する権限を付与するユーザーを慎重に検討してください。 Google Cloud 環境で実行中のインフラストラクチャ コンポーネントで障害が発生すると、停止が発生します。したがって、クラウド環境のアーキテクチャと、そのアーキテクチャの復元力を安全にテストする方法を理解しているオペレーターにのみ権限を付与し、意図しない中断が発生しないようにテストを構成できるようにする必要があります。

Fault Injection Testing を使用するには、テストを設定する必要があります。新しいテストを設定するには、まず、挿入する障害とターゲット リソースを定義するテスト テンプレートを作成します。次に、テンプレートからテストを実施します。テストは、テンプレートで定義された一連のアクションであり、テンプレートで選択したリソースに対して実行されます。