REL08-BP03 将韧性测试作为部署的一部分进行集成 - AWS Well-Architected 框架

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 的服务在非生产环境中运行受控故障模拟,以便在生产环境中部署之前增强信心。

资源

相关文档:

相关视频: