REL08-BP03 将韧性测试作为部署的一部分进行集成 - 可靠性支柱

REL08-BP03 将韧性测试作为部署的一部分进行集成

集成韧性测试功能,通过在系统中特意引入故障来衡量系统在遇到破坏性情景时的功能。韧性测试不同于通常集成在部署周期中的单元和功能测试,因为它们侧重于识别系统中的意外故障。虽然在预生产环境中集成韧性测试是安全的,但您要设定一个目标,将这些测试作为演练日活动的一部分在生产环境中实施。

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

常见反面模式:

  • 部署流程中缺乏可观测性和监控能力

  • 依靠人工来解决系统故障

  • 糟糕的质量分析机制

  • 只看到系统中的已知问题,缺少通过实验来发现未知问题的手段

  • 识别故障,但没有解决

  • 没有关于调查发现和运行手册的文档

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

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

实施指导

在系统部署中,可以集成的最常见的韧性测试形式是灾难恢复和混沌工程。

  • 对于任何重大部署,都要包括对灾难恢复计划和标准操作程序(SOP,Standard Operating Procedure)的更新。

  • 将可靠性测试集成到您的自动部署管道中。AWS Resilience Hub 等服务可以集成到您的 CI/CD 管道中,用于构建持续韧性评测功能,从而在每次部署中自动进行评测。

  • 在 AWS Resilience Hub 中定义您的应用程序。韧性评测会生成代码片段,帮助您以 AWS Systems Manager 文档的形式为应用程序创建恢复程序,并提供推荐的 Amazon CloudWatch 监控和警报列表。

  • 更新灾难恢复计划和标准操作程序后,完成灾难恢复测试以验证它们是否有效。灾难恢复测试可帮助您确定,在事件发生后是否可以恢复系统并恢复正常运行。您可以模拟各种灾难恢复策略,确定计划是否足以满足您的正常运行时间要求。常见的灾难恢复策略包括备份和恢复、指示灯、冷备用、温备用、热备用和双活模式,这些方法成本和复杂性各不相同。在进行灾难恢复测试之前,建议您定义恢复时间目标(RTO)和恢复点目标(RPO),这样可以简化模拟策略的选择。AWS 提供 AWS Elastic Disaster Recovery 等灾难恢复工具,用于帮助您开始进行规划和测试。

  • 混沌工程实验会在系统中引入中断,例如网络中断和服务故障。通过模拟受控的故障,您可以发现系统的漏洞,同时控制注入故障的影响。就像其他策略一样,请在非生产环境中,使用 AWS Fault Injection Service 等服务运行受控故障模拟,以便在生产环境中进行部署之前,树立起对系统韧性的信心。

资源

相关文档:

相关视频: