蓝绿部署&滚动部署&金丝雀发布(灰度发布)&A/B测试

16 篇文章 0 订阅
2 篇文章 0 订阅

在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。为了解决这些(服务中断、失败回滚、……)问题,人们研究出了多种发布策略。

部署

1、蓝绿部署 – BlueGreenDeployment

It’s basically a technique for releasing your application in a predictable manner with an goal of reducing any downtime associated with a release. It’s a quick way to prime your app before releasing, and also quickly roll back if you find issues.

蓝绿部署的目的是——减少因发布导致的服务中断时间同时它也支持发布失败时的快速回滚。

蓝绿部署需要在发布过程中,同时运行两套程序。对硬件的要求也是当前所需的2倍,比如当前运行时,需要10台服务器支撑业务,那么使用蓝绿部署,你就需要购置20台服务器。

2、滚动发布/更新

所谓滚动发布,就是在发布过程中,并不一下子启动所有新版本,而是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到全部发布完成,这样的话,如果当前需要10台服务器支撑服务,那么升级过程中一共只需要11台就行了。

滚动发布能够解决掉蓝绿部署时对硬件要求增倍的问题。

但是滚动发布有一个问题,在开始滚动发布后,流量会直接流向已经启动起来的新版本,但是这个时候,新版本是不一定稳定/符合预期的,可能需要进一步的测试才能确认。那么在滚动发布期间,整个系统就处于较为不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题。
为了解决这个问题,我们需要为滚动发布实现流量控制能力。也就是下面的金丝雀发布/灰度发布。

2.1、金丝雀发布 – CanaryRelease (也叫灰度发布)

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

金丝雀发布(Canary Releases)名称的由来

金丝雀发布指的是在生产环境中分阶段逐步更新后端应用的版本(需要具备流量控制能力),在小范围验证符合预期之后,再推广至整个生产环境。

金丝雀发布的好处在于可以用真实环境测试新版本,当新版本存在问题时最多只影响部分用户,且支持安全快速的回滚策略(将路由到新版本上的流量切换到其它的老版本机器上即可)。

但金丝雀发布并不是完美的,如果新版本有问题,那么路由到新版本的小部分流量会有问题,就跟矿井中毒发身亡的金丝雀一样。这种做法在非常敏感的业务中几乎无法接受,但是当系统复杂的到一定程度,错误无法完全避免的时候,为了避免出现更大的问题,牺牲一小部分流量,就可以将大部分错误的影响控制在一定范围内。


测试

A/B测试 – A/B Testing

首先需要明确的是,A/B测试和蓝绿部署以及金丝雀发布,完全是不同类型的概念

蓝绿部署和金丝雀发布是发布策略,目标是确保新上线的系统稳定,关注的是新系统的BUG、隐患。

A/B测试是效果测试(一般用来验证某个想法是否符合预期)同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分。它关注的是不同版本的服务的实际效果,譬如说转化率、订单情况等。

A/B测试时,线上同时运行多个版本的服务,这些服务通常会有一些体验上的差异,譬如说页面样式、颜色、操作流程不同。相关人员通过分析各个版本服务的实际效果,以选出效果最好的版本。

参考链接:
BlueGreenDeployment


CanaryRelease


Continuous Integration


Continuous Delivery


Blue-green Deployments, A/B Testing, and Canary Releases – Software Blog


蓝绿部署、金丝雀发布(灰度发布)、A/B测试的准确定义By李佶澳


部署策略对比:蓝绿部署、金丝雀发布及其他-InfoQ
Win-Win Deployment Strategies for Modern Apps - Rollbar


http://blog.lfyzjck.com/14807508681806.html


Kubernetes常见部署方案--滚动更新、重新创建、蓝绿、金丝雀 - gao88 - 博客园


蓝绿部署、金丝雀发布(灰度发布)、AB测试||沉潜飞动|君子藏器于身,待时而动。

第十六章 灰度发布(直译:金丝雀部署)
https://jdsre.gitbook.io/sre2/di-shi-liu-zhang


灰度发布、滚动发布、蓝绿部署和两种测试方法 | 文章 | BEWINDOWEB

蓝绿部署、A/B测试以及灰度发布
https://www.v2ex.com/t/344341


蓝绿部署、金丝雀发布(灰度发布)、A/B测试的准确定义 - 网络课程 - 博客园


微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布 - 简书


金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?


运维派-Linux运维技术社区,Linux教程,云计算学习平台,Devops工具下载站


一文搞懂蓝绿发布、灰度发布和滚动发布_李振良的技术博客的技术博客_51CTO博客_蓝绿发布部署


什么是蓝绿部署、滚动发布和灰度发布? - 知乎

Colorful deployments: An introduction to blue-green, canary, and rolling deployments
Intro to blue-green, canary, and rolling deployments on OpenShift | Opensource.com


Blue Green Deployments vs Rolling Deployments? - Stack Overflow

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
灰度发布蓝绿发布金丝雀发布都是软件发布中常用的策略,用于控制新版本的上线范围和风险。 1. 灰度发布(Gray Release): 灰度发布是指将新版本的功能或者代码逐步地、部分地发布给一部分用户或者服务器,以验证新版本的稳定性和可靠性。通过逐步扩大发布范围,可以及时发现和解决问题,减少对用户的影响。在灰度发布中,可以根据不同的条件(如用户ID、地域、设备类型等)来选择参与灰度发布的用户。 2. 蓝绿发布(Blue-Green Deployment): 蓝绿发布是指在生产环境中同时部署两个完全相同的环境,一个环境为蓝色环境(Blue),另一个环境为绿色环境(Green)。初始状态下,蓝色环境对外提供服务,而绿色环境处于闲置状态。当新版本准备就绪时,先将新版本部署到绿色环境中进行测试和验证。当验证通过后,将流量切换到绿色环境,使其成为主要的生产环境,而蓝色环境则成为备份环境。这样可以实现快速回滚,降低发布风险。 3. 金丝雀发布(Canary Release): 金丝雀发布是指将新版本的功能或者代码逐步地、部分地发布给一部分用户或者服务器,以验证新版本的性能和用户体验。与灰度发布不同的是,金丝雀发布更关注新版本的性能指标和用户反馈。通过逐步增加流量,可以及时监测新版本的性能表现,并根据反馈结果决定是否继续全面发布。如果出现问题,可以快速回滚或者停止发布

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值