

# REL08-BP03 将韧性测试作为部署的一部分进行集成
<a name="rel_tracking_change_management_resiliency_testing"></a>

 集成韧性测试功能，通过在系统中特意引入故障来衡量系统在遇到破坏性情景时的功能。韧性测试不同于通常集成在部署周期中的单元和功能测试，因为它们侧重于识别系统中的意外故障。虽然在预生产环境中集成韧性测试是安全的，但您要设定一个目标，将这些测试作为 [https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays)的一部分在生产环境中实施。

 **期望结果**：韧性测试有助于建立信心，确信系统能够承受生产环境中的性能降级。通过实验来找出可能导致故障的薄弱环节，这可以帮助您改进系统，从而自动有效地减少故障和性能降级的情况。

 **常见反模式：**
+  部署流程中缺乏可观测性和监控能力 
+  依靠人工来解决系统故障 
+  糟糕的质量分析机制 
+  只看到系统中的已知问题，缺少通过实验来发现未知问题的手段 
+  识别故障，但没有解决 
+  没有关于调查发现和运行手册的文档 

 **建立最佳实践的好处：**部署中集成的韧性测试有助于识别系统中的未知问题，以防因忽视这些问题导致生产中断。识别系统中的这些未知问题可以协助您记录调查发现，将测试集成到 CI/CD 流程中，并制定运行手册，从而通过高效、可重复的机制简化缓解措施。

 **在未建立这种最佳实践的情况下暴露的风险等级：**中 

## 实施指导
<a name="implementation-guidance"></a>

 在系统部署中，可以集成的最常见的韧性测试形式是灾难恢复和混沌工程。
+  对于任何重大部署，都要包括对灾难恢复计划和标准操作程序（SOP）的更新。
+  将可靠性测试集成到自动部署管道中。诸如 [AWS Resilience Hub](https://aws.amazon.com/resilience-hub/) 的服务可以[集成到 CI/CD 管道中](https://aws.amazon.com/blogs/architecture/continually-assessing-application-resilience-with-aws-resilience-hub-and-aws-codepipeline/)，用于建立持续的韧性评测，这些评测将作为每次部署的一部分自动进行评估。
+  在 AWS Resilience Hub 中定义应用程序。韧性评测会生成代码片段，帮助您以 AWS Systems Manager 文档的形式为应用程序创建恢复程序，并提供推荐的 Amazon CloudWatch 监控和警报列表。
+  更新灾难恢复计划和标准操作程序后，完成灾难恢复测试以验证它们是否有效。灾难恢复测试可帮助您确定，在事件发生后是否可以恢复系统并恢复正常运行。您可以模拟各种灾难恢复策略，确定计划是否足以满足您的正常运行时间要求。常见的灾难恢复策略包括备份和恢复、指示灯、冷备用、温备用、热备用和主动-主动模式，这些策略的成本和复杂性各不相同。在执行灾难恢复测试之前，建议先定义恢复时间目标（RTO）和恢复点目标（RPO），简化模拟策略的选择。AWS 提供 [AWS 弹性灾难恢复](https://aws.amazon.com/disaster-recovery/) 等灾难恢复工具，可帮助您开始规划和测试。
+  混沌工程实验会在系统中引入中断，例如网络中断和服务故障。通过模拟受控的故障，您可以发现系统的漏洞，同时控制注入故障的影响。与其他策略一样，使用诸如 [AWS Fault Injection Service](https://aws.amazon.com/fis/) 的服务在非生产环境中运行受控故障模拟，以便在生产环境中部署之前增强信心。

## 资源
<a name="resources"></a>

 **相关文档：**
+  [Experiment with failure using resilience testing to build recovery preparedness](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/qa.nt.6-experiment-with-failure-using-resilience-testing-to-build-recovery-preparedness.html) 
+  [Continually assessing application resilience with AWS Resilience Hub and AWS CodePipeline](https://aws.amazon.com/blogs/architecture/continually-assessing-application-resilience-with-aws-resilience-hub-and-aws-codepipeline/) 
+  [Disaster recovery (DR) architecture on AWS, part 1: Strategies for recovery in the cloud](https://aws.amazon.com/blogs/architecture/disaster-recovery-dr-architecture-on-aws-part-i-strategies-for-recovery-in-the-cloud/) 
+  [Verify the resilience of your workloads using Chaos Engineering](https://aws.amazon.com/blogs/architecture/verify-the-resilience-of-your-workloads-using-chaos-engineering/) 
+  [混沌工程原则](https://principlesofchaos.org/) 
+  [Chaos Engineering 讲习会](https://disaster-recovery.workshop.aws/en/intro/concepts/chaos-engineering.html) 

 **相关视频：**
+  [AWS re:Invent 2020: Testing Resilience using Chaos Engineering](https://www.youtube.com/watch?v=OlobVYPkxgg) 
+  [Improve Application Resilience with AWS Fault Injection Service](https://www.youtube.com/watch?v=N0aZZVVZiUw) 
+  [Prepare & Protect Your Applications From Disruption With AWS Resilience Hub](https://www.youtube.com/watch?v=xa4BVl4N1Gw) 