REL08-BP03 将韧性测试作为部署的一部分进行集成
集成韧性测试功能,通过在系统中特意引入故障来衡量系统在遇到破坏性情景时的功能。韧性测试不同于通常集成在部署周期中的单元和功能测试,因为它们侧重于识别系统中的意外故障。虽然在预生产环境中集成韧性测试是安全的,但您要设定一个目标,将这些测试作为 GameDay 活动的一部分在生产环境中实施。
期望结果:韧性测试有助于建立信心,确信系统能够承受生产环境中的性能降级。通过实验来找出可能导致故障的薄弱环节,这可以帮助您改进系统,从而自动有效地减少故障和性能降级的情况。
常见反模式:
-
部署流程中缺乏可观测性和监控能力
-
依靠人工来解决系统故障
-
糟糕的质量分析机制
-
只看到系统中的已知问题,缺少通过实验来发现未知问题的手段
-
识别故障,但没有解决
-
没有关于调查发现和运行手册的文档
建立最佳实践的好处:部署中集成的韧性测试有助于识别系统中的未知问题,以防因忽视这些问题导致生产中断。识别系统中的这些未知问题可以协助您记录调查发现,将测试集成到 CI/CD 流程中,并制定运行手册,从而通过高效、可重复的机制简化缓解措施。
在未建立这种最佳实践的情况下暴露的风险等级:中
实施指导
在系统部署中,可以集成的最常见的韧性测试形式是灾难恢复和混沌工程。
-
对于任何重大部署,都要包括对灾难恢复计划和标准操作程序(SOP)的更新。
-
将可靠性测试集成到自动部署管道中。诸如 AWS Resilience Hub
的服务可以集成到 CI/CD 管道中 ,用于建立持续的韧性评测,这些评测将作为每次部署的一部分自动进行评估。 -
在 AWS Resilience Hub 中定义应用程序。韧性评测会生成代码片段,帮助您以 AWS Systems Manager 文档的形式为应用程序创建恢复程序,并提供推荐的 Amazon CloudWatch 监控和警报列表。
-
更新灾难恢复计划和标准操作程序后,完成灾难恢复测试以验证它们是否有效。灾难恢复测试可帮助您确定,在事件发生后是否可以恢复系统并恢复正常运行。您可以模拟各种灾难恢复策略,确定计划是否足以满足您的正常运行时间要求。常见的灾难恢复策略包括备份和恢复、指示灯、冷备用、温备用、热备用和主动-主动模式,这些策略的成本和复杂性各不相同。在执行灾难恢复测试之前,建议先定义恢复时间目标(RTO)和恢复点目标(RPO),简化模拟策略的选择。AWS 提供 AWS Elastic Disaster Recovery
等灾难恢复工具,可帮助您开始规划和测试。 -
混沌工程实验会在系统中引入中断,例如网络中断和服务故障。通过模拟受控的故障,您可以发现系统的漏洞,同时控制注入故障的影响。与其他策略一样,使用诸如 AWS Fault Injection Service
的服务在非生产环境中运行受控故障模拟,以便在生产环境中部署之前增强信心。
资源
相关文档:
-
Experiment with failure using resilience testing to build recovery preparedness
-
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
-
Verify the resilience of your workloads using Chaos Engineering
相关视频: