SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

AWSとAzureのマネージドサービスで実践カオスエンジニアリング

カオスエンジニアリングを安全に行うには? AWSとAzureのマネージドサービスの特徴を解説

AWSとAzureのマネージドサービスで実践カオスエンジニアリング 第1回

AWSとAzureのマネージドサービスの実装状況の比較

 以下の観点に基づき、記事執筆時点(2022年6月)での各サービスの実装状況を見ていきます。

  1. 定常状態の定義
    1. 定常状態を定義する方法
    2. 異常状態の検知方法
  2. 影響範囲の限定
    1. 事前シミュレーション機能
    2. カオス挿入の対象の選定方法
    3. ロールバック機能
  3. 実験管理の負荷
    1. 実験の記録
    2. 実験のコード管理
    3. 実験の共有
    4. 実験からの示唆

定常状態の定義

 AWS、Azureのどちらもまず異常状態を定義し、その異常状態でなければ定常状態であるという逆説的に定常状態を定義する実装です。どちらも異常状態は監視サービスを利用して検知する方式となり、定常状態の定義に関する機能はほぼ同一です。

定常状態の定義
観点 AWS Fault Injection Simulator(FIS) Azure Chaos Studio
定常状態の定義方法 異常状態を定義することで逆説的に定常状態を定義する。 Chaos Studioの機能として定常状態を定義できず、Azure Monitor等の他の監視サービスにて異常状態を定義する。
異常状態の検知方法 異常状態の定義はCloudWatchアラームで表現が可能なものであればなんでもよい。
異常状態は最大で5つまで指定可能である。
異常状態の定義はAzure Monitor等の監視サービスで表現が可能なものであればなんでもよい。

影響範囲の限定

 AWSでは、元の状態に戻すロールバックが可能な実験の場合、ロールバックを設定しないと実験ができない仕様とすることで影響範囲の限定ができる特徴を持っています。一方Azureでは、実験を行う側(Chaos Studio)と実験の対象側(仮想マシンなど)の双方でアクセス権付与を明示的に行わないと実験ができない仕様とすることで影響範囲の限定ができる特徴を持っています。

 システム規模が大きくなるにつれ想定外の状況になる可能性も高くなるため、シミュレーションできる機能があると望ましいと筆者は考えていましたが、どちらも該当する機能は現時点ではありません。

影響範囲の限定
観点 AWS Fault Injection Simulator(FIS) Azure Chaos Studio
事前シミュレーション機能 事前シミュレーションは不可である。 事前シミュレーションは不可である。
カオス挿入の対象の選定方法 AWSリソースIDを指定することで厳密にカオス注入の対象を選定可能である。
上記に加えてタグによるターゲット選定やリソース属性を指定したフィルタリングでのターゲット選定も可能である。
Chaos Studioの実験作成時に対象のリソースを指定するだけでなく、対象のリソース(たとえばVMなど)からもChaos Studioの実験にアクセス権を付与し、相互に設定しなければ実験が実行できないようにしている。
ロールバック機能 インスタンスの停止やインスタンへの負荷掛けや一時的なネットワーク不通などの実験以前の状態に戻すことが可能なアクション(カオスの注入)に関しては、必ずロールバックを設定しなければ、実験として登録することができない。実験終了時に実験以前の状態に戻すロールバックが自動実施される。 Chaos Studioの機能としてはロールバックはなく、別の仕組みを用意する必要がある。

実験管理の負荷

 AWS、Azureのどちらも実験結果を保存し、後から参照することが可能です。また実験をコードとして管理でき、実験を他者と共有する仕組みも備えており、実験管理に関する機能はほぼ同一です。

 影響のある実験を安易に行われないようにするための承認ワークフローや実験結果から示唆を提示してくれる機能があると望ましいと筆者は考えていましたが、どちらも該当する機能は現時点ではありません。

実験管理の負荷
観点 AWS Fault Injection Simulator(FIS) Azure Chaos Studio
実験の記録 実験ごとに一意のIDが付与され、過去の実験は最大120日間保持される。
実験の詳細として、どのリソースに対してどのようなカオス注入を行ったかやその結果について確認することができる。
CloudWatch LogsまたはS3に実験時のログを保存することができる。
実験の詳細として、どのリソースに対してどのようなカオス注入を行ったかやその結果について確認することができる。
実行ログをChaos Studio外に保存することは不可であるが、実験を削除しない限り無期限に保存される。
実験のコード管理 実験自体の管理ではなく、実験のもととなるテンプレートをCloudFormationにてコード管理することが可能である。 ARM Templateにて管理が可能である。
実験の共有 IAMにてFISの権限を付与することで、複数人で実験テンプレートや結果を共有が可能である。
実験テンプレートはjson形式でエクスポート/インポートすることが可能なため、別AWS環境でも再利用が可能である。
IAMにてChaos Studioの権限を付与することで、複数人で結果を共有することが可能である。
承認フロー FISの機能だけで承認フローは持っていない。そのためStep Functions等を利用し、別途作り込むことで実現が可能である。 Chaos Studioの機能だけで承認フローは持っていない。Azure Logic AppsからChaos Studioを呼び出し、Azure Logic Appsにて承認フローを組み込むことで実現が可能である。
実験からの示唆 実験結果を受けて、FISから推奨事項などが提示されることはない。 実験結果を受けて、Chaos Studio から推奨事項などが提示されることはない。

次回予告

 実際にAWS Fault InjectionおよびAzure Chaos Studioを利用して、AWSおよびAzure環境へのカオス挿入の方法について紹介します。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
AWSとAzureのマネージドサービスで実践カオスエンジニアリング連載記事一覧

もっと読む

この記事の著者

奥村 康晃(株式会社NTTデータ)(オクムラ ヤスアキ)

 NTTデータ入社以来、クラウドサービスのAPIを連携させることで効率的な管理を可能とするクラウド管理プラットフォームの開発に従事。現在では、クラウド導入の技術コンサルや組織での技術戦略立案にも携わる。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

石崎 奏(株式会社NTTデータ)(イシザキ ソウ)

 入社以来、NTTデータグループにおけるWindows/Linuxシステムの技術問合せ、トラブルシュート支援、アーキテクチャレビューに従事。現在は、Azureを中心としたクラウド技術者の能力開発や、グループ全体へのAzure活用支援にも携わる。Microsoft MVP for Azure (2022-) Twitter LinkedIn

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

伊藤 歩(株式会社NTTデータ)(イトウ アユム)

 入社以来、公共系システムの基盤開発に従事。昨今はパブリッククラウド ( AWS, Azure, GCP ) を中心にシステム開発を行う。現場でのシステム開発の他に NTT データグループの技術者育成施策を通じて Azure の技術検証を行い、Azureを強みとしている。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/16172 2022/07/21 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー