首页 > 解决方案 > 为 Elastic beanstalk 创建 A/B 测试

问题描述

最近我在 AWS 中创建了一个 codestar Web 服务。这在内部使用带有负载平衡器、代码管道、代码部署服务的弹性 beanstalk 环境来实现端到端工作。我现在能做的就是在本地进行一些代码更改并将其部署到 codestar。我现在要做的是设置额外的环境,比如 alpha-environment 并首先将其部署到我的生产环境中,以进行更好的测试。我可以做的一种方法是为 alpha 阶段创建一个额外的环境,对其进行一些更改部署,然后手动部署到 prod 阶段。但这将在 AWS 中创建两个不同的存储库,我不知道如何将更改从 alpha-environment 复制到 prod-environment。请告诉我首先部署到 alpha 阶段然后自动部署到 beta 阶段的最佳方式。

标签: amazon-web-servicesamazon-ec2amazon-elastic-beanstalkaws-codepipelineaws-codestar

解决方案


您想要做的是称为 Canary 部署(或 Canary 版本)。它允许您在发布之前对发布进行一些生产测试,然后再将其发布给所有用户(如果您的用户)。它是蓝/绿部署的一种修改形式。

蓝/绿部署是指在当前版本(蓝色)投入生产的同时将新版本(绿色)部署到生产环境。理论上,如果绿色部署很糟糕,而您将蓝色部署留在原地,则可以在很少停机的情况下回滚到蓝色部署。

Canary 部署是蓝/绿部署,您将一小部分流量路由到绿部署,以确保绿部署稳定并按预期工作。如果 Canary 测试成功,那么您将 100% 的流量路由到绿色环境。Blue 环境可以删除或重新用于下一个版本。

另一方面,如果 Canary 测试失败,您将 100% 的流量路由回 Blue 环境,并取消 Green 环境或将其重新用于下一个版本。

Elastic Beanstalk 允许您快速创建应用程序的两个版本,以将 Elastic Beanstalk 环境与克隆环境分开(通过控制台或命令行)。新克隆的环境将是您的绿色环境。

然后,您可以利用 Amazons Route 53 以及加权路由路由策略功能。这允许您采用单个域名,并根据您在策略中决定的百分比在蓝色和绿色环境之间分配流量。从小处着手,如果绿色很好,你就可以达到 100%。

以下是一些参考资料:

Route 53 加权路由

Elastic Beanstalk 克隆环境功能

Canary 测试/发布/部署

AWS 中的简单 Canary 版本

Code Deploy 提供蓝色/绿色


推荐阅读