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

OPS06-BP03 采用安全部署策略

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

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

常见反模式:

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

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

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

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

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

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

实施指导

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

客户示例

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 Simple Notification Service(Amazon SNS)监控部署

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

  6. 部署问题疑难解答

实施计划的工作量级别:

资源

相关最佳实践:

相关文档:

相关视频:

相关示例: