蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别

在有关微服务、DevOps、Cloud-native、系统部署等的讨论中,蓝绿部署、A/B 测试、灰度发布、滚动发布、红黑部署等概念经常被提到,它们有什么区别呢?通过搜索相关资料,做一个简单的辨析,如下:

一、蓝绿部署(Blue/Green Deployment)

蓝绿部署是最常见的一种0 downtime部署的方式,是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。蓝绿部署原理上很简单,就是通过冗余来解决问题。通常生产环境需要两组配置(蓝绿配置),一组是active的生产环境的配置(绿配置),一组是inactive的配置(蓝绿配置)。用户访问的时候,只会让用户访问active的服务器集群。在绿色环境(active)运行当前生产环境中的应用,也就是旧版本应用version1。当你想要升级到version2 ,在蓝色环境(inactive)中进行操作,即部署新版本应用,并进行测试。如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了。随后需要监测新版本应用,也就是version2 是否有故障和异常。如果运行良好,就可以删除version1 使用的资源。如果运行出现了问题,可以通过负载均衡器指向快速回滚到绿色环境。

蓝绿部署的优点:

这种方式的好处在你可以始终很放心的去部署inactive环境,如果出错并不影响生产环境的服务,如果切换后出现问题,也可以在非常短的时间内把再做一次切换,就完成了回滚。而且同时在线的只有一个版本。蓝绿部署无需停机,并且风险较小。

(1) 部署版本1的应用(一开始的状态),所有外部请求的流量都打到这个版本上。

(2) 部署版本2的应用,版本2的代码与版本1不同(新功能、Bug修复等)。

(3) 将流量从版本1切换到版本2。

(4) 如版本2测试正常,就删除版本1正在使用的资源(例如实例),从此正式用版本2。

从过程不难发现,在部署的过程中,应用始终在线。并且,新版本上线的过程中,并没有修改老版本的任何内容,在部署期间,老版本的状态不受影响。这样风险很小,并且,只要老版本的资源不被删除,理论上,可以在任何时间回滚到老版本。

蓝绿部署的弱点:

使用蓝绿部署需要注意的一些细节包括:

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

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

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

4、蓝绿部署需要有基础设施支持。

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

6、另外,这种方式不好的地方还在于冗余产生的额外维护、配置的成本,以及服务器本身运行的开销。

蓝绿部署适用的场景:

1、不停止老版本,额外搞一套新版本,等测试发现新版本OK后,删除老版本。

2、蓝绿发布是一种用于升级与更新的发布策略,部署的最小维度是容器,而发布的最小维度是应用。

3、蓝绿发布对于增量升级有比较好的支持,但是对于涉及数据表结构变更等等不可逆转的升级,并不完全合适用蓝绿发布来实现,需要结合一些业务的逻辑以及数据迁移与回滚的策略才可以完全满足需求。

二、A/B 测试(A/B Testing)

A/B 测试跟蓝绿部署完全是两码事。A/B 测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等。蓝绿部署的目的是安全稳定地发布新版本应用,并在必要时回滚。

A/B 测试与蓝绿部署的区别在于, A/B 测试目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信该结论在推广到全部流量可信。

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

三、灰度发布/金丝雀发布

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。灰度发布是增量发布的一种类型,灰度发布是在原有版本可用的情况下,同时部署一个新版本应用作为“金丝雀”(金丝雀对瓦斯极敏感,矿井工人携带金丝雀,以便及时发发现危险),测试新版本的性能和表现,以保障整体系统稳定的情况下,尽早发现、调整问题。灰度发布/金丝雀发布由以下几个步骤组成:

1、准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。

2、从负载均衡列表中移除掉“金丝雀”服务器。

3、升级“金丝雀”应用(排掉原有流量并进行部署)。

4、对应用进行自动化测试。

5、将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。

6、如果“金丝雀”在线使用测试成功,升级剩余的其他服务器。(否则就回滚)

灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

灰度发布/金丝雀部署适用的场景:

1、不停止老版本,额外搞一套新版本,不同版本应用共存。

2、灰度发布中,常常按照用户设置路由权重,例如90%的用户维持使用老版本,10%的用户尝鲜新版本。

3、经常与A/B测试一起使用,用于测试选择多种方案。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。

趣闻 :

金丝雀部署(同理还有金丝雀测试),“金丝雀”的由来:17世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。

四、滚动发布(rolling update)

滚动发布,一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本。这种部署方式相对于蓝绿部署,更加节约资源——它不需要运行两个集群、两倍的实例数。我们可以部分部署,例如每次只取出集群的20%进行升级。这种方式也有很多缺点,例如:

(1) 没有一个确定OK的环境。使用蓝绿部署,我们能够清晰地知道老版本是OK的,而使用滚动发布,我们无法确定。

(2) 修改了现有的环境。

(3) 如果需要回滚,很困难。举个例子,在某一次发布中,我们需要更新100个实例,每次更新10个实例,每次部署需要5分钟。当滚动发布到第80个实例时,发现了问题,需要回滚。此时,脾气不好的程序猿很可能想掀桌子,因为回滚是一个痛苦,并且漫长的过程。

(4) 有的时候,我们还可能对系统进行动态伸缩,如果部署期间,系统自动扩容/缩容了,我们还需判断到底哪个节点使用的是哪个代码。尽管有一些自动化的运维工具,但是依然令人心惊胆战。

并不是说滚动发布不好,滚动发布也有它非常合适的场景。

五、红黑部署(Red-Black Deployment)

这是Netflix采用的部署手段,Netflix的主要基础设施是在AWS上,所以它利用AWS的特性,在部署新的版本时,通过AutoScaling Group用包含新版本应用的AMI的LaunchConfiguration创建新的服务器。测试不通过,找到问题原因后,直接干掉新生成的服务器以及Autoscaling Group就可以,测试通过,则将ELB指向新的服务器集群,然后销毁掉旧的服务器集群以及AutoScaling Group。

红黑部署的好处是服务始终在线,同时采用不可变部署的方式,也不像蓝绿部署一样得保持冗余的服务始终在线。

文章转载:twt企业IT社区

(版权归原作者所有,侵删)

(0)

相关推荐

  • 虽迟但到!谷歌开始推送安卓11 beta版系统更新

    受到今年新冠肺炎疫情的影响,谷歌的安卓11系统的发版计划也是进行了不可避免的时间调整.从6月3日的跳票之后,谷歌在今天面向Pixel系列手机用户推送了新版本系统的首个beta版更新,具体支持机型有Pi ...

  • 微信发布重大更新!- 有关版本的那些事儿

    大家周末好,新年快到了,咱们先来听首欢乐的歌. 昨天晚上,微信低调发布了 iOS 新版本:7.0.之所以说这是一个重大更新,是因为上次微信的版本号由 5.x 升级到 6.0 已经是 2014 年的事情 ...

  • V咖分享会第十六期-软件安全测试101-下

    跟着芒果一起好好学习,天天向上~ 在这周五我们举办了V咖分享会第十六期的分享,现在就由芒果为大家整理这次分享会的知识.本次整理内容包含我们的V咖刘冉老师的分享内容,部分提问及回复.想要提问或者观看完整 ...

  • 医用红外热成像仪,红黄蓝绿黑紫:人体也有自己的颜色

    红外热成像系统扫描后形成的热图 人体也有自己的颜色 在全国高温预报.大风降温预报的图片中,每个温度区间都有着不同的颜色作为代表.与之相似,人体热成像图片中的不同颜色,也代表有不同的含义. 高热区:桔红 ...

  • 绿的红的黄的蓝的黑的白的粉的……上海公交车色号指南请收好!

    市交通委说,缤纷多彩的上海交通行业总能给市民乘客带来别样的惊喜,不仅是地铁拥有不同颜色的外观和彩色的座椅,阿拉上海公交车也有许多色号,你pick哪种呢? 清新的绿色 绿色是上海公交车的主要颜色之一,绿 ...

  • 天津印发生活垃圾分类指导目录 记牢“绿蓝红黑” 垃圾轻松分类

    12月1号起,<天津市生活垃圾管理条例>将正式施行.届时,如果没有将生活垃圾分类投放至相应收集容器的,将由城市管理部门责令改正,拒不改正的要有相应的罚款.为规范我市生活垃圾分类工作,按照国 ...

  • 【META】“新”标准第三周——纯绿猛袭、红黑牺牲分别席卷!

    [META]"新"标准第二周--毒瘤苏勒台统治一切 上个周末苏勒台统治一切后,本周末的两场大比赛依旧如此,但也有许多值得关注的变化.除了毒瘤内斗演变出多种不同版本的苏勒台以外,还有 ...

  • 红的,绿的,黑的,介绍3种极早熟葡萄新品种

    中国大棚葡萄之乡--温岭 浙江省温岭市是"中国大棚葡萄之乡",现有大棚葡萄种植面积6万余亩,主栽品种为"巨峰".由于受台风影响,该产区主打"促早&qu ...

  • 「翔博精选指标」抄底红蓝绿(通达信公式 副图 源码 测试图)

    抄底红蓝绿 你是否每天还在花费大量的时间? 你是否每天还在3000多支股票中人工去找新增一线天筹码股? 你是否每天很想精准. 快速找到新增一线天筹码股? 我来为你解密!一线天3.0选股指标可以帮你搞定 ...

  • 蓝绿红3色可选,BAPE STA 全新迷彩鞋款系列强势回归!

    潮牌是当下年轻人的第一选择.普通品牌穿不出年轻个性.所以选择一款适合自己的潮牌,则是对你年轻态度最好发声方式,今天一起来看看最新潮鞋资讯. 1.蓝绿红3色可选,BAPE STA 全新迷彩鞋款系列强势回 ...

  • 翡翠为什么有绿、红、紫、白、黑等颜色

    翡翠中的绿色主要是铬离子致色,它属于原生色.在翡翠中只要铬的含量在万分之几就可以致色.翠绿.阳绿,铬的含量在万分之几:祖母绿.深绿,铬的含量在千分之几.如果有铁离子参与致色,就可以改变绿的色调,变成暗 ...

  • 成化斗彩红黄蓝绿

    成化瓷,是继永宣之后中国陶瓷发展史上另一座难以逾越的高峰.自明代开始就有成窑佳器一杯十万钱之说,时至今日动辄千万过亿的拍卖价格,更让广大收藏爱好者对成化瓷器趋之若鹜.围绕成化瓷器如何鉴别,不少人做出了 ...