お客様のDXの推進やクラウド活用をサポートする
NRIグループのプロフェッショナルによるブログ記事を掲載

システムをより安定稼働させるために ~カオスエンジニアリングツール AWS FISの紹介~

前原 良美

 

はじめに

こんにちは、NRI OpenStandiaに所属している前原です。

OpenStandiaでは、様々なオープンソースソフトウェア(Open Source Software、OSS)に関する問い合わせサポートを行っております。

また、部内には技術に興味をもっているメンバーが多く、昨年末は技術記事をリレー形式で執筆するイベント(通称:アドベントカレンダー)を開催しました。

qiita.com

今回は、このイベントにて私がとりあげた「カオスエンジニアリングツール AWS Fault Injection Simulator(AWS FIS)」について紹介させていただきます。

 

カオスエンジニアリングとは

システムが大規模で複雑になればなるほど、障害が発生した際の影響は甚大になります。
そして、万が一、障害が発生したときには、迅速に復旧することが求められます。

そのため、「障害が発生したときにシステムがどのような挙動となるのか」や「どのように対応すれば、障害を即座に復旧できるか」を事前に認識しておくことが非常に重要です。

そこで生まれた考え方が「カオスエンジニアリング」です。
カオスエンジニアリングとは、システムの本番環境で意図的に障害を発生させ、システムの挙動を検証することです。

カオスエンジニアリングでは原則として、検証を4つのステップで行います。

  1. 通常の動作を示すシステムの測定可能な出力として「定常状態」を定義することから始めます
  2. この定常状態は、対照群および実験群の両方で継続すると仮定します
  3. サーバーのクラッシュ、ハードドライブの誤作動、ネットワーク接続の切断など、現実世界のイベントを反映する変数を導入します
  4. 対照群と実験群との間の定常状態の違いを調べることによって仮説を反証しようとします

(※https://principlesofchaos.org/ja/ より引用)

定常状態とは「システムが安定して稼働している状態」のことです。

この定常状態を指標とし、「実験群(障害を意図的に発生させるシステム)」と「対照群(定常状態なシステム)」を比較することで、障害時のシステム挙動が想定通りかどうかを確認します。

この結果に基づいて、システムの耐障害性を高めるように改修をしたり、障害発生時に即座に復旧できるように準備をしたりすることで、万が一の障害時もシステムを安定稼働させられるようになっていきます。

AWS Fault Injection Simulator(AWS FIS)とは

AWS FISは、様々なAWSサービスに対して疑似的に障害を発生させることができるカオスエンジニアリングツールです。

カオスエンジニアリングの原則に従い、AWS FISは以下の手順で利用可能です。

  1. 定常状態を定義する

まずは、システムが安定して稼働している状態を決めます。
このとき、システムにアクセスしたりAWSマネジメントコンソール上でシステム稼働状況を確認したりするだけでなく、Amazon CloudWatchやPrometheusといったモニタリングツール等も用いて定常状態を定めることを推奨します。実験群と対照群の比較項目が増えるため、より精密な検証ができるようになります。

 

  1. 実験群と対照群を用意する

戦略としては、「システムの一部を実験群として取り扱い、その他の部分を対照群に分ける」か「同一システムを、まずは対照群とみなして挙動を確認し、その後実験群とみなして取り扱う」かのどちらかになります。より適切な比較ができる戦略を選ぶことが望ましいです。

 

  1. 実験群に障害を発生させる

AWS FISでは障害を発生させることを「実験」と呼び、どのような実験を行うかを「実験テンプレート」に記載します。
実験テンプレートでは下記図の通り、「障害をおこす対象」と「発生させる障害」と「障害を停止する条件」を設定できます。

 

 

作成した実験テンプレートを選択することで、実験を何度でも行うことができます。

 

  1. 結果をモニタリングし、考察する

実験を通して、実験群と対照群で差異が発生した箇所について考察し、これをもとにシステムや運用方針を改善していきます。

これを何度も繰り返すことで、システムを万が一の障害にも強くすることができます。
AWS FISは2021年にリリースされ、現在も発展途上のサービスですが、「スポットインスタンスを中断する」や「ある特定のAmazon Virtual Private Cloud(Amazon VPC)のネットワークを遮断する」といった機能もあり、カオスエンジニアリングを行うにあたってとても有用です。

AWS FISに興味を持たれた方は、ぜひアドベントカレンダーの記事の方もご覧ください。AWS FISの操作方法や設定できる内容、実験を行う際のTipsを記載しております。

qiita.com

 

終わりに

本ブログでは、カオスエンジニアリングとAWS FISの概要を紹介しました。
大規模システムを運用するとなると、幅広い技術知識が必要となってきます。

OpenStandia事業部では、運用を行っている皆さまのサポートができるよう、日々新しい技術について調査をおこなっております。

OpenStandiaの技術サポートについて詳しく知りたい方はこちらをご覧ください。

OSSサポート・保守サービス | OpenStandia™【NRI】

 



NRIの キャリア採用

採用情報

NRIの IT基盤サービスでは、キャリア採用を実施しています。様々な職種で募集しておりますので、ご興味を持たれた方は キャリア採用ページも ぜひご覧ください。

・NRI / キャリア採用情報 / 職種一覧 ※NRIサイトへ

※ 記載された会社名 および ロゴ、製品名などは、該当する各社の登録商標または商標です。
※ アマゾン ウェブ サービス、Amazon Web Services、AWS および ロゴは、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。