OPS06-BP03 采用安全部署策略 - AWS Well-Architected Framework

OPS06-BP03 采用安全部署策略

在安全的生产环境滚动部署中,会对有益更改的流程进行控制,目标是尽可能减少这些更改让客户感知到的任何影响。安全控制措施提供检查机制,用于验证是否达成所期望的结果,并针对由于更改或部署失败所引入的任何缺陷,限制这些缺陷的影响范围。安全滚动部署可包括功能标记、单盒、滚动(金丝雀版本)、不可变、流量分割和蓝绿部署等策略。

期望的结果: 您的企业使用持续集成/持续交付(CI/CD,Continuous Integration/Continuous Delivery)系统,提供自动进行安全滚动部署的功能。团队必须使用适当的安全滚动部署策略。

常见反模式:

  • 您将不成功的更改一次性部署到所有生产环境中。因此,所有客户同时受到影响。

  • 在同时部署到所有系统时,引入的一个缺陷需要紧急进行修复。为所有客户修复该缺陷需要几天时间。

  • 管理生产版本发布需要多个团队的规划和参与。这限制了您为客户更新功能的频率。

  • 您通过修改现有系统来执行可变部署。发现更改不成功后,您被迫再次修改系统,还原旧版本,导致恢复时间延长。

建立此最佳实践的好处: 自动化的部署,在快速滚动部署与持续向客户提供有益更改之间取得平衡。限制影响范围可以防止代价高昂的部署失败,并最大限度地提高团队有效应对失败的能力。

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

实施指导

持续交付失败会导致服务可用性降低,带来糟糕的客户体验。为了最大限度地提高部署成功率,请在端到端发布流程中实施安全控制措施,以最大限度地减少部署错误,将达成零部署失败作为目标。

客户示例

AnyCompany Retail 的目标是尽可能减少部署的停机时间,甚至实现零停机,这意味着在部署期间,用户不会感觉到任何影响。为了实现这一目标,公司建立了部署模式(参见以下工作流程图),例如滚动部署和蓝绿部署。所有团队在各自的 CI/CD 管道中都采用了其中一种或多种模式。

Amazon EC2 的 CodeDeploy 工作流程 Amazon ECS 的 CodeDeploy 工作流程 Lambda 的 CodeDeploy 工作流程
Amazon EC2 的部署流程
Amazon ECS 的部署流程
Lambda 的部署流程

实施步骤

  1. 使用审批工作流程在提升到生产版本后,启动生产版本滚动部署步骤序列。

  2. 使用自动化部署系统,例如 AWS CodeDeploy。AWS CodeDeploy 部署选项 包括 EC2/本地就地部署及 EC2/本地蓝绿部署、AWS Lambda 和 Amazon ECS(参见前面的工作流程图)。

  3. 对于 Amazon AuroraAmazon RDS 等数据库,使用蓝绿部署。

  4. 监控部署 - 使用 Amazon CloudWatch、AWS CloudTrail 和 Amazon SNS 事件通知。

  5. 执行部署后的自动化测试,包括功能测试、安全测试、回归测试、集成测试以及任何负载测试。

  6. 排查 部署问题。

实施计划的工作量级别:

资源

相关最佳实践:

相关文档:

相关视频:

相关示例: