REL 12: どのように信頼性をテストしますか?

本番環境のストレスに耐えられるようにワークロードを設計した後、ワークロードが意図したとおりに動作し、期待する弾力性を実現することを確認する唯一の方法が、テストを行うことです。

リソース

Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
Resilience Engineering: Learning to Embrace Failure
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Use CodePipeline with AWS CodeBuild to test code and run builds
Automate your operational playbooks with AWS Systems Manager
Principles of Chaos Engineering
Apache JMeter
Casey Rosenthal, Lorin Hochstein, Aaron Blohowiak, Nora Jones, Ali Basiri. “Chaos Engineering” (August 2017)
AWS Marketplace: products that can be used for continuous integration
APN Partner: partners that can help with implementation of a continuous integration pipeline

ベストプラクティス:

改善計画

プレイブックを使用して失敗を調査する

  • プレイブックを使用して問題を特定する: プレイブックは、問題を調査するための文書化されたプロセスです。プロセスをプレイブックに文書化することで、障害シナリオに対する一貫性のある迅速な対応が可能になります。プレイブックには、十分なスキルを持った人物が該当する情報の収集、障害の潜在的原因の特定、障害の切り分け、寄与する要因の特定 (インシデント後の分析の実行) を行うために必要な情報とガイダンスが含まれている必要があります。
  • インシデント後の分析を実行する

  • インシデント後の分析の標準を確立する: 優れたインシデント後の分析は、システムの別の場所で使用されているアーキテクチャパターンの問題に対して、共通のソリューションを提案する機会になります。
  • プロセスを使用して寄与した要因を判断する: イベントに寄与した要因を特定してドキュメント化するプロセスを用意しておき、再発を抑制または防止する緩和策と、迅速で効果的な対応手順を展開できるようにしておきます。対象者に合わせて調整された、寄与因子を必要に応じて伝えます。
    What is log analytics?
  • 機能要件をテストする

  • 機能要件をテストする: これには、必要な機能を検証する単体テストと統合テストが含まれます。
    Use CodePipeline with AWS CodeBuild to test code and run builds
    AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild
    Continuous Delivery and Continuous Integration
    Using Canaries (Amazon CloudWatch Synthetics)
    Software test automation
  • スケーリングおよびパフォーマンス要件をテストする

  • スケーリングおよびパフォーマンス要件をテストする: ワークロードがスケーリングおよびパフォーマンスの要件を満たしていることを検証するための負荷テストを実行します。
    Distributed Load Testing on AWS: simulate thousands of connected users
    Apache JMeter
  • カオスエンジニアリングを使用して回復力をテストする

  • カオスエンジニアリングを使用して回復力をテストする: 本番稼働前および運用環境に定期的に障害を挿入してテストを実行します。ワークロードが障害にどのように反応するかの仮説を立て、その仮説をテスト結果と比較して、一致しない場合はプロセスを繰り返します。本番稼働テストがユーザーに影響を与えないようにします。
    Principles of Chaos Engineering
    Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
    Injecting Chaos to Amazon EC2 using AWS Systems Manager
    AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
  • 定期的にゲームデーを実施する

  • ゲームデーをスケジュールして定期的にランブックおよびプレイブックを使ってみる: ゲームデーには、事業主、開発スタッフ、運用スタッフ、インシデント対応チームといった、本番環境での停止に関与すると思われるすべての人員が参加する必要があります。