SHOEISHA iD

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

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

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

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

【AWSでカオスエンジニアリング】AWS Fault Injection SimulatorでEC2にカオスを挿入する

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

実験テンプレートの作成

 FISではまず実験テンプレートを作成する必要があります。実験テンプレートでは、はじめにどのようなカオスを挿入するかを「アクション」として定義します。FISが挿入できるカオスはAWS FIS アクションリファレンスをご確認ください。

 今回はEC2の停止/削除である「aws:ec2:terminate-instances」を利用します。「aws:ec2:terminate-instances」はインスタンスが削除され、実験前の状態に戻すことができないのですが、aws:ec2:stop-instances(EC2の停止)のように実験前の状態に戻すことが可能なアクションを選択した場合は、ロールバックアクション(aws:ec2:stop-instancesの場合はEC2の起動)を設定することが必須となります。カオスエンジニアリングの知識がなくともこうした心遣いがあるおかげで安心して実験を作ることができます(「影響範囲の限定」観点のポイント)。

 このままだとすぐに実験が終了してしまうため、30分異常がないかを待機する「aws:fis:wait」というアクションも追加します。

 その後、カオス挿入対象となるターゲットを指定します。指定する方法はリソースID、リソースタグ、属性によるフィルターの3種類から選択可能です。AWS内で一意となるリソースIDを利用することが、ターゲット指定のもっとも厳密な方法となります。

 しかし本システムのようにAuto Scaling Groupを利用したシステムだと、頻繁にインスタンスの入れ替わりが発生する可能性があり、リソースIDの指定が難しい場合があるかと思います。そうした場合は、リソースタグや属性によるフィルタリングを利用します。これらの方法を選択した場合は、条件にマッチした対象のうち、カオスを挿入する数や割合を指定できます。これにより、誤って想定以上の数のカオスを挿入することを防ぎます(「影響範囲の限定」観点のポイント)。

 今回はリソースタグでキー名が「aws:autoscaling:groupName」、値が「fis-nginx」のリソースのうち、1つにカオスを挿入(EC2の停止)が行われるように設定します。

 次に、この実験を行う際に利用するIAMロールの指定をします。他のAWSサービスだと必要な権限を持つIAMロールを自動生成する機能を持つことが多いですが、誤った実験を防ぐためにか、明示的に既存のIAMロールを指定する仕様となっています。利便性は落ちますが、こうすることで意図しない操作を防ぐことができると感じています(「影響範囲の限定」観点のポイント)。

 さらに、停止条件を指定します。これは前述の通り、CloudWatch synthetic monitoringのアラームを2つ指定します。これにより指定した2つのアラームが発生しなければ、定常状態であると定義したことになります。このアラームは最大5つ指定することが可能です。CloudWatchアラームとして定義できるものであればなんでも指定できるため、さまざまな観点で定常状態を定義できます(「定常状態の定義」観点のポイント)。

 最後に、実験のログの出力先を指定します。S3とCloudWatch Logsが選択可能です。後から実験結果を確認できるようにするため、この設定はしておくべきです。利便性観点では簡単に検索ができるCloudWatch Logsが有利で、コスト観点ではS3が有利です。今回の実験ではCloudWatch Logsに出力するように指定しました(「実験管理の負荷」観点のポイント)。

 実験テンプレートはCloudFormationで表現することも可能ですし、JSONとしてエクスポート/インポートすることも可能です。コードとして扱うことが可能なため、複製や他のAWSアカウントとの共有も簡単に実現できます(「実験管理の負荷」観点のポイント)。

 もちろん他のAWSサービスと同じくIAMによるアクセス制御も可能ですので、他のAWS利用者との共有も可能です(「実験管理の負荷」観点のポイント)。

次のページ
実験の実施

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

AWSとAzureのマネージドサービスで実践カオスエンジニアリング連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/16322 2022/08/25 11:00

イベント

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

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

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

メールバックナンバー