蓝绿部署、A/B 测试以及灰度发布

2017-03-02 14:25:51 +08:00
 goodraincloud

过去的 10 年里,很多大公司都在使用蓝绿部署,安全、可靠是这种部署方式的特点。蓝绿部署虽然算不上” Sliver Bullet “,但确实很实用。在有关于“微服务”、“ DevOps ”、“ Cloud-native ”的讨论中,蓝绿部署、 A/B 测试、灰度发布,这三种部署方式往往同时出镜。

那么问题来了,蓝绿部署、 A/B 测试、灰度发布,这三者之间究竟有何不同?

蓝绿部署

Martin Flower 曾在文章中阐述了蓝绿部署的整体要点,建议大家看看。

基本上,蓝绿部署是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。

简单来说,你需要准备两个相同的环境(基础架构),在蓝色环境运行当前生产环境中的应用,也就是旧版本应用,如图中 App1 version1 、 App2 version1 、 App3 version3 。

当你想要升级 App2 到 version2 ,在蓝色环境中进行操作,即部署新版本应用,并进行测试。如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了。

随后你需要监测新版本应用,也就是 App2 version2 是否有故障和异常。如果运行良好,就可以删除 App2 version1 使用的资源。如果运行出现了问题,你可以通过负载均衡器指向快速回滚到绿色环境。

理论上听起来很棒,但还是要注意一些细节:

A/B Testing

A/B 测试跟蓝绿部署完全是两码事。

A/B 测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等。 A/B 测试通常用在应用的前端上,不过当然需要后端来支持。

A/B 测试与蓝绿部署的区别在于, A/B 测试目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信该结论在推广到全部流量可信;蓝绿部署的目的是安全稳定地发布新版本应用,并在必要时回滚。

A/B 测试和蓝绿部署可以同时使用。

灰度发布/金丝雀发布

灰度发布是在原有版本可用的情况下,同时部署一个新版本应用作为“金丝雀”(金丝雀对瓦斯极敏感,矿井工人携带金丝雀,以便及时发发现危险),测试新版本的性能和表现,以保障整体系统稳定的情况下,尽早发现、调整问题。

灰度发布/金丝雀发布由以下几个步骤组成:

总结

对于云计算来说,以上三种策略都是可用的。不难想象,通过 docker 和 kubernetes ,我们可以很简单的实现蓝绿部署、 A/B 测试、灰度发布……比如好雨云,深度整合 Docker 和 Kubernetes ,提供给用户包括代码滚动上线、一键代码回滚等功能和特性在内的强大的 CI/CD 体验:)

Author Christian Posta Trans by 好雨科技

25662 次点击
所在节点    云计算
7 条回复
rgqancy
2017-12-27 11:45:12 +08:00
感谢分享
safeoy
2018-02-01 12:51:38 +08:00
感谢分享
atom123123
2018-05-15 14:07:02 +08:00
感谢分享
Michael728
2018-09-04 12:23:36 +08:00
pythonee
2018-09-16 09:27:25 +08:00
感谢分享
leiuu
2019-10-21 17:18:37 +08:00
手动点赞,文章清晰易懂。
wellsc
2021-07-19 13:10:28 +08:00
感谢分享

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/344341

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX