最近,我在AWS中创建了一个codestar Web服务。这在内部使用具有负载均衡器,代码管道和代码部署服务的弹性beantalk环境,以实现端到端的工作。我现在能做的是在本地进行一些代码更改,然后将其部署到Codestar。我现在想做的是设置额外的环境(例如alpha环境),并将其首先部署,然后再部署到我的生产环境中以进行更好的测试。我可以做的一种方法是为alpha阶段创建一个额外的环境,对它进行一些更改,然后手动将其部署到生产阶段。但这将在AWS中创建两个不同的存储库,我不知道如何将更改从alpha环境复制到prod环境。请告诉我最好的方法,先部署到Alpha阶段,然后自动部署到Beta阶段。

最佳答案

您要执行的操作称为Canary部署(或Canary版本)。它使您可以在发行版上进行生产测试,然后再发布给所有人(如果您是用户)。它是蓝色/绿色部署的修改形式。

蓝色/绿色部署是在将当前版本(蓝色)投入生产的同时将新版本(绿色)推出生产时。从理论上讲,如果绿色部署不好,而您将蓝色部署在适当的位置,则可以在停机时间很少的情况下回滚到蓝色部署。

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

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

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

然后,您可以利用Amazons Route 53和加权路由路由策略功能。这使您可以采用一个域名,并根据策略中确定的百分比在蓝色和绿色环境之间分配流量。从小开始,如果绿色很好,则您达到100%。

以下是一些参考:

Route 53 Weighted Routing

Elastic Beanstalk Clone environment feature

Canary Test/Release/Deployment

Simple Canary release in AWS

Blue/Green available with Code Deploy

关于amazon-web-services - 为Elastic beantalk创建A/B测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50953909/

10-11 08:30