カオス エンジニアリングと回復力を理解する

Azure Chaos Studio の使用を開始する前に、適用される中核となるサイトの信頼性エンジニアリングの概念を理解しておくと有用です。

回復性とは

大規模な分散アプリケーションの構築は、かつてないほど簡単になりました。 インフラストラクチャはクラウドでホストされており、プログラミング言語のサポートは多岐にわたります。 また、構築するためのオープンソースおよびホストされたコンポーネントとサービスも多数あります。

これらの基になるコンポーネントと依存関係、またはそれらに基づいて構築されたシステムに対しては、残念ながら信頼性は保証されません。 インフラストラクチャはオフラインになることがあり、サービスの中断や停止がいつでも発生するおそれがあります。 1 つの領域での軽微な中断は、影響を広げることがあり、別の領域に長期の副作用を及ぼす可能性があります。

アプリケーションとサービスは、次のような問題を計画し、対応する必要があります。

  • サービスの停止。
  • 既知および不明な依存関係の中断。
  • 突然の予期しない負荷。
  • システム全体の待機時間。

アプリケーションとサービスは、障害に対処するように設計し、中断に対して強化される必要があります。

ストレスや問題に対処するアプリケーションやサービスは、回復性に優れています。 個々のコンポーネントの信頼性は優れていますが、回復性はシステム全体のプロパティです。 エンドツーエンドのシステム回復性は、統合的な、運用環境で発生する可能性のある条件と負荷を備えた運用環境に似た環境で検証する必要があります。

カオス エンジニアリングおよびフォールト インジェクションとは

  • カオス エンジニアリング: アプリケーションとサービスが実際のストレスや障害を受ける行為。 目標は、信頼性の低い条件と不足している依存関係に対する回復性を構築して検証することです。
  • フォールト導入: システムに障害を導入する行為。 ネットワーク待ち時間やストレージへのアクセスの損失など、さまざまな障害を使用して、システム コンポーネントをターゲットにすることができます。 アプリケーションまたはサービスが処理または復旧できる必要があるシナリオを作成できます。

カオス実験とは、1 つ以上のサブスクリプション リソースまたは依存関係に対して個別に、並列に、または順番に障害を適用することです。 目標は、発生した問題に対処できるように、システムの動作と正常性を監視することです。

実験は、データセンターの停電や DNS サーバーへのネットワーク待機時間など、実際のシナリオを表すことができます。 また、発生するエッジ条件のシミュレーションにも使用できます。 たとえば、ブラック フライデーの爆買いや、人気バンドのコンサート チケットの発売などです。