みなさん、こんにちは。サニービュー事業部の小寺です。
先週、AWS Fault Injection Simulatorのアップデートが発表されました。
AWS Fault Injection Simulatorとは
AWS Fault Injection Simulator(以下、FIS)とは、AWS でフォールト挿入実験を実行するためのフルマネージドサービスであり、アプリケーションのパフォーマンス、オブザーバビリティ、および回復性を簡単に改善できるサービスです。
「フォールト挿入実験」って聞いたことがありますか。
フォールト挿入実験はカオスエンジニアリングで利用されているものです。
カオスエンジニアリングでは、本番環境が障害等による不安定な状況にも耐えられるという自信をつけるための考え方です。
実際にクラウド障害をわざと発生させる「フォールト挿入実験」を繰り返して、システムの「弾力性」を検証します。弾力性とは、障害が起こってもユーザーに悪影響を与えないことを示す指標です。
このテストを通じてシステムの問題点をあぶり出し、可用性や耐障害性の向上につながります。Netflixが2012年にケイオスエンジニアリングのためのツール「Chaos Monkey」を公開したことにより、認知度が高まりましたね。
Fault Injection Simulator は、特定の条件が満たされた場合に自動的にロールバックしたり、実験を停止したりするなど、チームが本番環境で実験を実行するために必要なコントロールとガードレールを提供します
なお、FISの対象となるサービスは現時点でAmazon EC2,Amazon ECS/EKS,Amazon RDSです。
このアップデートでうれしいこと
スポットインスタンスを使用すると、Amazon EC2 でコンピューティングワークロードをかなりお得に使うことができます。
ただ、スポットインスタンスが中断される可能性は常にあるため、アプリケーションがスポットインスタンスの中断に備えていることを確認しておく必要がありますよね。
これまでは、スポットインスタンスが中断したときの状況を再現するのは難しく、なかなか事前に対策することは大変でした。
このアップデートにより、AWS FIS 実験を実行するだけで、Amazon EC2 がスポットインスタンスを再利用したときに何が起こるかをシミュレートできるようになります。アプリケーションの応答を観察して、パフォーマンスと耐障害性を向上させることができます。AWS FIS 実験によって設定されるスポットインスタンスの割り込みは、インスタンス終了通知、リバランス通知、指定した中断動作を含めて、Amazon EC2 によって再利用される場合と同じように動作します。
実際にためしてみる
スポットインスタンスの中断について、試してみました。
準備として、IAMロールを作成します。
IAM ロールは信頼されたエンティティでIDプロバイダーとし、「fis.amazonaws.com」を設定します。今回追加された「”ec2:SendSpotInstanceInterruptions”」をポリシーのアクションに追加しました。
1)FISをコンソールで開き、「実験用テンプレートを作成」をクリックします。
2)説明には実験の説明を入力し、IAMロールには先ほど作成した「AWSFIS-AllowAccess」を設定します。

3)アクションでは、名前を入力し、アクションタイプではプルダウンから「aws:ec2:send-spot-instance-interruptions」を選びます。 ターゲットは自動的に表示されたものを選びました。

4)停止条件は特に指定せずに、「実験テンプレートを作成」をクリックします。

5)停止条件を指定していないため、確認メッセージが表示されます。
作成を入力し、「実験テンプレートを作成」をクリックします。

6)実験テンプレートができました。

7)アクションより「実験を開始」を選びます。
8)確認メッセージが表示されるので、「開始」を入力して、「実験を開始」をクリックします。

9)完了すると「Complete」に状態が変わります。
確認したところ、spotinstanceも「終了済」になっていました。

まとめ
AWS FIS 実験を実行するだけで、Amazon EC2 がスポットインスタンスを再利用したときに何が起こるかをシミュレートできるようになりました。
アプリケーションの応答を観察して、パフォーマンスと耐障害性を向上させることができます。

どなたでもAWS利用料が5%オフになります!