概要
Performing chaos engineering in a serverless worldセッションを受講しました
セッションは大きく下記2つのパートに分かれ話されていました。
- ChaosEngineering について
- Serverless/ServerlessでのChaosEngineering実践について
参考リンク
- Serverless Chaos Engineering Demo
https://github.com/gunnargrosch/serverless-chaos-demo - 上記デモで利用している Lambda-Layer を利用して chaos-injection を実施するライブラリ
https://github.com/adhorn/aws-lambda-layer-chaos-injection - デモWebsite
https://demo.serverlesschaos.com/
セッションについて
詳細は書籍等を読んだ方が良さそうですので、ポイントと思われる部分のみピックアップさせて頂きました。
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テスト??も自動化出来るのでは無いかなと感じたセッションでした!