実験内容
実験ではタスクを2つ起動するようにしておき、そのうちの1つを停止しても、利用者が継続してシステムを利用し続けることができることを確認します。
前述の疑似リクエストを利用者からのリクエストと見立て、定義したCloudWatchアラームが発報されなければ、正常状態であると定義します。
実験テンプレートの作成
前回の記事と同じく、まずは実験テンプレートの作成を行います。
今回のシステムはFargate起動タイプで動作させているため、アクションはタスクの停止である「aws:ecs:stop-task」を利用します。またすぐに実験が終了してしまうことを防ぐため、今回も待機する「aws:fis:wait」のアクションを追加します。5分間待機するように設定します。
ターゲットとして、clusterとserviceを指定します。前述のサンプルソリューションでは、cluster名はtwelve-factor-app-環境名、service名はtwelve-factor-app-serviceとなります。
実験の実施
実験を実施する前に、疑似リクエストを作成する処理を実行しておきます。先ほどの設定の場合、最初の1分間は多数のリクエストが集中するため、少々時間を置いてから、実験を開始します。実験を開始する前にCloudWatchアラームのステータスがOKとなっていることを確認しておいてください。
実験が完了すると、下記のような結果の確認が可能になるかと思います。
また、ECSの画面で下記のようにイベント履歴を確認できます。タスクの停止された数十秒後に別のタスクが立ち上がっていることが確認できるかと思います。
まとめ
この回では、Amazon ECSのFargate起動タイプで構成されたシステムに対してFISでカオスを挿入する方法を紹介しました。システムが稼働中の状況を再現させ、リアルに近い実践的なカオスエンジニアリングの方法も併せて紹介しました。
次回予告
次回はAzure Chaos Studioによるコンテナに対するカオス挿入の方法を紹介します。ぜひAWSとの違いにご注目ください!