【AWS re:Invent2019】CMY301 Performing chaos engineering in a serverless worldセッションを受講しました

概要

Performing chaos engineering in a serverless worldセッションを受講しました
セッションは大きく下記2つのパートに分かれ話されていました。
- ChaosEngineering について
- Serverless/ServerlessでのChaosEngineering実践について

セッションについて

詳細は書籍等を読んだ方が良さそうですので、ポイントと思われる部分のみピックアップさせて頂きました。

ChaosEngineering について

カオスエンジニアリングとは何ではないのか

  • カオスエンジニアリングはなにかを壊すことでは無い
  • カオスエンジニアリングはレジリアンスエンジニアリングでは無い
  • カオスエンジニアリングは本番環境だけのための物では無い
    ...

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

  • カオスエンジニアリングはシステムの脆弱な部分を探し事前に修正する事である
  • カオスエンジニアリングはシステムの信頼を置くために実施する事である
    ...

カオスエンジニアリングの実践

Step1-5までに分けて進め方 (抜粋)

  • Step1 Define steady state (安定状態の定義)
    • Normal behavior of our system
    • System/Business metrics
  • Step2 Form your hypothesis (仮設)
    • データベースが落ちたらどうなるか
    • 電源が落ちたらどうなるか
  • Step3 Plan and run your experiment
    • Whiteboardに書き出し
    • 組織に伝える
  • Step4 Measure and learn
    • 仮説検証
    • 想定していない事が起こらなかったか
  • Step5 Scale up or abort and fix

Serverless/ServerlessでのChaosEngineering実践について

サーバレス共通の脆弱を生みやすい(テストするポイントとなる)部分

  • Error Handling
  • Timeout values
  • Events
  • FallBacks
  • Failovers

Serverless chaos experiments

様々なポイントで仮説が存在する (抜粋)

  • APIGateway
    • CORS設定がなければ
  • Lambda
    • Latencyが長くなった場合 (Layerを追加する等でテスト)
    • Exceptionを返した場合
  • S3バケット
    • アクセスポリシーを間違えたら

Serverless chaos demo

  • もしLambdaFunctionsが300ms余計に時間がかかったらどうなるか
  • errorcode xxx が返却されたらどうなるか
  • lambdaがexception messageを返却したらどうなるか

上記参考リンク先に記載されている内容を読むとわかりやすいのですが、構成としてAPIGatewayの先に3つのLambdaFunctionsが存在し
SystemManager Parameter Storeを利用し、どのような動作をするかパラメータとして設定し実際に試すという事をDemoされていました。

色々なテストケースを試しやすいように、CLIにてSSMParameterStoreの値をUpdateし、動作確認を実施

RobotFramework等と組み合わせてChaosテスト??も自動化出来るのでは無いかなと感じたセッションでした!

投稿者プロフィール

takashi
Japan AWS Ambassadors 2023, 2024
開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て
2010年よりスカイアーチネットワークスに在籍しております

機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。

ABOUTこの記事をかいた人

Japan AWS Ambassadors 2023, 2024 開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て 2010年よりスカイアーチネットワークスに在籍しております 機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。