クラウドサービス

Azure Chaos Studio

本番前に障害への耐性を検証。意図的に障害を注入する実験を計画的に実行し、アプリの回復力と弱点を可視化できる。AWS の Fault Injection Service に相当。

中級信頼性運用上の優秀性
最終更新: 2026-07-29公式ドキュメント
3つの要点
TL;DR
  1. 公開プレビューのワークスペース/シナリオ、または一般提供の従来型実験で、制御した障害を注入する。
  2. VM やネットワークなどに作用するフォールトをエージェント型とサービス直接型で注入できる。
  3. ブラスト半径の限定や緊急停止で安全に制御でき、AWS の Fault Injection Service に相当する。

解決する課題

「障害が起きても本当に耐えられるか」は、実際に障害を起こしてみないと確証が得られません。Azure Chaos Studio は、依存先の停止やネットワークの遅延、リソースの高負荷などを意図的に注入する実験を計画的に実行し、アプリの回復力(レジリエンス)と隠れた弱点を本番障害が起きる前に可視化します。

  • 冗長化や自動フェイルオーバーが設計どおりに機能するかを、実障害を待たずに検証したい
  • 依存サービスの停止や遅延に対し、アプリがグレースフルに劣化できるか確かめたい
  • 障害時のアラートやランブックが実際に機能するかを、訓練(ゲームデー)で確認したい
  • リリースのたびに回復力の回帰が起きていないかを継続的にテストしたい
  • 障害注入を安全に制御し、検証が想定外に広がって実害を出すのを防ぎたい

主要概念と用語

  • カオス エンジニアリング: 制御された障害を意図的に注入し、システムの回復力を検証する取り組み。本サービスはこれをマネージドに支援する
  • 実験(Experiment): 障害注入の定義。どのリソースに、どのフォールトを、どの順序・並列で注入するかをまとめた単位
  • フォールト(Fault): 注入する障害の種類。VM のシャットダウン、CPU 高負荷、ネットワーク遅延、リソースのアクション実行などがある
  • ステップ / ブランチ / アクション: 実験の構造。ステップを順番に進め、各ステップ内のブランチを並列に走らせ、ブランチ内のアクション(フォールトや待機)を実行する
  • ターゲット(Target): フォールトを注入する対象として有効化したリソース。あらかじめオンボードして有効にしておく必要がある
  • 機能(Capability): ターゲットで有効にした個々のフォールト能力。対象に応じて使えるフォールトの種類を絞り込める
  • セレクター(Selector): 実験内で対象リソースをまとめて指す名前付きのグループ。フォールトをこのグループへ適用する
  • エージェント型フォールト: 対象 VM にエージェントを入れて注入する障害。CPU・メモリ・ディスク負荷などゲスト OS 内部に作用する
  • サービス直接型フォールト: エージェント不要で、Azure のリソース API を通じて注入する障害。リソースの停止や再起動など外側から作用する
  • ワークスペース/シナリオ(Workspace / Scenario): 対象スコープを検出して障害シナリオを推奨する新しい公開プレビュー。従来型実験とは別のモデルであり、全フォールト、動的対象、スケジュールが必要なら一般提供の従来型実験を使う

仕様・制限・クォータ

  • フォールトは大きくエージェント型サービス直接型に分かれる。前者は対象にエージェントの導入が必要で、後者はエージェント不要でリソースに直接作用する
  • 実験対象のリソースは、事前にターゲットとして有効化(オンボード)し、使う機能(フォールト能力)を選んでおく必要がある
  • 実験はステップ→ブランチ→アクションの階層で構成し、順次実行と並列実行、待機を組み合わせて障害シナリオを表現する
  • 対応するフォールトの種類や対象リソースは拡充され続けているため、計画時は対象サービスごとに利用可能なフォールトの最新一覧を確認する
  • 従来型実験は最大 4 ステップ・9 ブランチ・9 アクション、各アクションと実験全体は最長 12 時間、1 アクション 50 ターゲットまで
  • 同時実行はリージョン・サブスクリプションあたり15実験、履歴保持は120日。現時点でクォータ引き上げは申請できない
ワークスペース方式は公開プレビュー

ワークスペースとシナリオは、新しいテストの推奨起点ですが公開プレビューで、運用環境向けの SLA はありません。一般提供の従来型実験とは機能とリソースモデルが異なるため、混在させず要件ごとに選びます。

内部の仕組み

横にスクロール

一般提供の従来型 Chaos Studio 実験で管理 ID が許可済みターゲットへサービス直接型またはエージェント型の障害を注入し、監視しきい値と人の停止判断で影響範囲を制御する図
実験の権限境界、2種類の注入経路、監視と停止、回復確認を一連で設計する

以下は一般提供の従来型実験の処理経路です。利用者は対象リソースをターゲットとして有効化したうえで、どのフォールトをどの順序・並列で注入するかをステップとブランチで記述します。実験を開始すると、Chaos Studio が定義に従ってフォールトを適用します。時間制フォールトは終了時に解除されますが、停止やフェイルオーバーなどはキャンセルだけで元の業務状態まで戻るとは限らないため、回復手順と確認を別に用意します。

  • サービス直接型のフォールトは、Azure のリソース API を介して対象に作用する。エージェントの導入が不要で、リソースの停止・再起動・スロットリングなどを外側から起こせる
  • エージェント型のフォールトは、対象 VM に導入したエージェントを通じてゲスト OS の内部に作用し、CPU・メモリ・ディスクの逼迫などを再現する
  • 実験はマネージド ID を使って対象リソースへフォールトを適用するため、必要な権限をその ID に限定して付与する
  • フォールトには継続時間を指定し、時間が来ると注入を解除して通常状態へ復帰させる
  • 実行中はAzure Monitor のメトリクスやログと突き合わせ、障害下での挙動(フェイルオーバー、エラー率、応答時間)を観測する
まず小さく、対象を絞って始める

最初から本番全体に障害を注入する必要はありません。セレクターで対象を絞り、影響範囲(ブラスト半径)を限定した小さな実験から始め、仮説検証を重ねながら徐々に範囲を広げると安全に学習できます。

設計パターン / ベストプラクティス

  • 仮説駆動で設計する: 「依存先が落ちてもフェイルオーバーで継続できる」など、検証したい仮説を立ててから実験を組む
  • ブラスト半径を限定する: セレクターで対象を絞り、まずは一部のインスタンスやステージング環境に注入して影響を封じ込める
  • 段階的に広げる: 小さな実験で安全性を確認してから、対象範囲・フォールトの強度・本番への適用へと少しずつ拡大する
  • 観測とセットで実施する: 実験前に正常時のメトリクスを把握し、注入中・回復後の挙動を Azure Monitor で比較して弱点を特定する
  • CI/CD やゲームデーに組み込む: 定期的な訓練やパイプラインに実験を組み込み、回復力の回帰を継続的に検出する
  • 緊急停止の手順を用意する: 想定外の影響が出たときに実験を即時停止できる手順を周知し、関係者へ事前に告知してから実施する

運用・監視

  • 実験の実行中・実行後は Azure Monitor のメトリクスとログで対象システムの挙動を観測し、仮説どおりに回復したかを検証する
  • 想定外の影響が出た場合に備え、実験を停止できる手順を整え、誰でも迅速に止められるようにしておく
  • 実験は az CLI や REST API、パイプラインから自動化し、定期的な回復力テストとして繰り返し実行する
  • 実験ごとの結果(注入したフォールト、対象、観測されたメトリクスの変化)を記録し、見つかった弱点を改善のバックログに回す
  • 対象のオンボード状況や使用する機能を点検し、実験対象から外れたリソースを整理する

コスト

課金はアクション分、つまり各実験アクションが動いた分数に基づく従量制です。並列アクションはそれぞれ加算され、対象側のスケールアウトや監視ログなど他サービスの料金も別に発生します。

コスト要因効きどころ最適化のポイント
フォールト注入時間実験の実行時間と並列度必要な時間に絞って実行する
実験頻度繰り返し実行する回数重要な変更時やゲームデーに集約する
対象リソース対象側の稼働・再構築検証に必要な範囲へ限定する
観測コストログ・メトリクスの収集量必要な指標に絞って収集する

セキュリティ

  • 実験から対象リソースへの作用はマネージド ID を使い、その ID に必要最小限の権限だけを付与して影響範囲を限定する
  • 実験の作成・実行権限は Microsoft Entra ID と Azure RBAC で制御し、誰がどの環境に障害を注入できるかを厳密に管理する
  • 障害注入は実害につながり得る操作のため、対象環境を明確に区別し、本番への適用は承認と告知のうえで慎重に行う
  • 実験定義やログに機微情報を残さないよう注意し、対象の指定やパラメーターに秘匿値を直書きしない
  • ターゲットとして有効化するリソースと使う機能を最小限にとどめ、不要なフォールト能力を有効化したままにしない
本番への注入は影響範囲を必ず制御する

カオス実験は対象に意図的な障害を起こす行為です。制御を誤ると実ユーザーへ影響が及びます。ブラスト半径をセレクターで限定し、緊急停止の手順と関係者への事前告知を用意したうえで、ステージングでの検証を経てから本番へ段階的に適用してください。

関連サービス・比較

回復力の検証という点では Azure Load Testing が近い関係にあります。Load Testing が「高負荷をかけて性能とスケール限界を測る」のに対し、Chaos Studio は「障害を注入して回復力と弱点を測る」もので、目的が補完的です。両者を組み合わせると、負荷と障害の両面から本番前の堅牢性を高められます。

観点Azure Chaos StudioAzure Load Testing
主目的障害注入で回復力を検証高負荷で性能・限界を検証
与える刺激停止・遅延・高負荷などの障害大量リクエストの負荷
主な指標回復・フェイルオーバーの可否応答時間・スループット
安全制御ブラスト半径限定と緊急停止自動停止とエラー率しきい値
相当する AWSFault Injection Service分散負荷テスト

ハンズオン / CLI 例

# 以下は従来型実験の例。ワークスペース/シナリオとはリソースモデルが異なる
az extension add --name chaos

# 対象リソースをターゲットとして有効化(オンボード)
# 例: VM をサービス直接型のターゲットとして登録
az resource create \
  --resource-group demo-rg \
  --namespace Microsoft.Chaos \
  --resource-type targets \
  --name Microsoft-VirtualMachine \
  --parent "providers/Microsoft.Compute/virtualMachines/demo-vm" \
  --properties "{}"

# 定義した実験を作成(実験本体は ARM/JSON テンプレートで指定)
az chaos experiment create \
  --resource-group demo-rg \
  --name demo-experiment \
  --location japaneast \
  --steps @experiment-steps.json \
  --selectors @experiment-selectors.json \
  --identity-type SystemAssigned

# 実験を開始(障害注入を実行)
az chaos experiment start \
  --resource-group demo-rg \
  --name demo-experiment

# 想定外の影響が出たら実験を停止
az chaos experiment cancel \
  --resource-group demo-rg \
  --name demo-experiment

Azure Service

Azure Chaos Studioを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

開発者ツール

比較で見る軸

クラウド: Azure / カテゴリ: 開発者ツール / 難易度: intermediate

導入後に効く点

VM やネットワークなどに作用するフォールトをエージェント型とサービス直接型で注入できる。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Azure
カテゴリ
開発者ツール
難易度
intermediate
関連資格
設計柱
reliability / operational

判断チェックリスト

  • 自社の用途が「開発者ツール / reliability」に近いか確認する。
  • 強みである「公開プレビューのワークスペース/シナリオ、または一般提供の従来型実験で、制御した障害を注入する。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

開発者ツールreliabilityoperational