蓝绿部署、A/B 测试以及灰度发布 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
goodraincloud
V2EX    云计算

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

  •  5
     
  •   goodraincloud 2017-03-02 14:25:51 +08:00 27070 次点击
    这是一个创建于 3146 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    蓝绿部署

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

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

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

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

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

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

    • 当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;

    • 有可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能导致服务停止的;

    • 需要提前考虑数据库与应用部署同步迁移 /回滚的问题;

    • 蓝绿部署需要有基础设施支持

    • 在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险

    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 好雨科技

    7 条回复    2021-07-19 13:10:28 +08:00
    rgqancy
        1
    rgqancy  
       2017-12-27 11:45:12 +08:00
    感谢分享
    safeoy
        2
    safeoy  
       2018-02-01 12:51:38 +08:00
    感谢分享
    atom123123
        3
    atom123123  
       2018-05-15 14:07:02 +08:00
    感谢分享
    Michael728
        4
    Michael728  
       2018-09-04 12:23:36 +08:00
    pythonee
        5
    pythonee  
       2018-09-16 09:27:25 +08:00
    感谢分享
    leiuu
        6
    leiuu  
       2019-10-21 17:18:37 +08:00
    手动点赞,文章清晰易懂。
    wellsc
        7
    wellsc  
       2021-07-19 13:10:28 +08:00
    感谢分享
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6060 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 02:29 PVG 10:29 LAX 19:29 JFK 22:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86