本指南介绍如何在不使用负载均衡器的情况下为后端或队列处理工作负载实施金丝雀部署。通过使用 AWS CodePipeline,您可以编排一个工作流程,首先将金丝雀版本部署到低容量服务实例进行测试,然后将其传播到高容量服务实例以完成部署。此外,您还可以使用 AWS 监控功能和警报来自动启动回滚,从而在对应用程序部署新变更时更好地实施安全部署。
请注意:[免责声明]
Well-Architected 支柱

当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
CodePipeline 和 CodeBuild 可自动执行 CI/CD 流程,用于构建和部署新代码变更。本指南在 Amazon ECS 和 AWS Fargate 中部署变更,这些完全托管的无服务器服务可帮助您减轻运营任务(如升级、打补丁和扩展各种计算资源)的额外负担。
-
安全性
本指南中的所有服务均使用 AWS Identity and Access Management(IAM)进行身份验证和授权。IAM 角色和策略可授予短期访问凭证,保护 AWS 资源,并管理访问权限。通过将 IAM 策略限定在所需的最低权限范围内,您可以限制对资源的未经授权访问。
-
可靠性
本指南默认在多个可用区(AZ)部署 Amazon ECS 和 Fargate 任务、Amazon SQS 队列和 Lambda 函数,帮助您实现高可用性。此外,Amazon SQS 队列实现了应用程序组件之间的解耦,而 DLQ 则可以捕获任何处理故障,以便进行调查和重试。
-
性能效率
CodePipeline 和 CodeBuild 可在您需要将新代码变更推送到 CodeCommit 存储库时,实现 CI/CD 流程。Amazon ECS 使用应用程序自动扩缩,根据 Amazon SQS 队列深度自动调整集群中运行的 Amazon ECS 和 Fargate 任务数量。
-
成本优化
本指南使用的所有服务都是无服务器服务,因此您无需预置或管理服务器即可运行代码,而且只需为使用量付费。CodeBuild 提供按需计算能力,按代码构建持续时间计费,而 CodePipeline 则按每月管道数量计费。此外,CodeBuild 负责构建应用程序代码。应用程序自动扩缩会自动调整集群中运行的 Amazon ECS 和 Fargate 任务的数量,以满足需求,从而最大限度地降低总体计算成本。此外,您还可以选择 ARM64 CPU 架构、竞价型容量和计算类节省计划,以进一步降低计算成本。例如,如果工作负载可以容忍中断,您可以使用 Fargate Spot。
-
可持续性
本指南使用无服务器服务,您无需预置或管理服务器即可运行代码。这些服务可以根据您的工作负载进行扩展,从而避免过度预置资源,最终减少碳足迹。例如,应用程序自动扩缩可自动调整运行的 Amazon ECS 和 Fargate 任务数量,以满足需求,从而最大限度地减少计算量。您还可以在 ARM64 架构上运行 Fargate,以进一步降低功耗。
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。