概念区分:灰度、蓝绿、滚动发布

背景

线上的项目最容易出现问题的时候就是发布过程中.如果将某变化较大的版本一次性全部线上发布给用户,遇到生产事故对用户影响会非常大,甚至需要紧急回滚到前一版本.因此在发布的时候可以采取一些措施防止问题的扩散

常见的方案有

蓝绿发布

在蓝绿部署时,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版本上。
例如发布前,在蓝色的系统上进行测试,测试完成后切换为蓝色系统,同时观察蓝色系统的运行状态,如果运行出现问题可以及时切回绿色系统。

优点:这样做可以减少发布影响的时间。例如某网站要进行后端升级,无需完全停掉服务更新,且出现问题后可以及时切回老版本。

缺点:需要两倍的硬件资源,需要额外进行付费;微服务架构很难这样进行迁移;要求蓝绿两套系统完全没有耦合;迁移后未完成的任务进行迁移需要一定的成本,如数据库的迁移。

滚动发布

一般是取出部分服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本。

优点:不需要准备俩套完善的机器,节约资源

缺点:回滚困难,流量直接到新的机器上,出现问题后,无法实现快速回滚;更新时间长,带来额外的风险,如果80%完成更新后发生重大漏洞,回滚时,比较耗时和困难

灰度发布

又名金丝雀发布,是指在黑与白之间能平滑过渡的一种发布方式,.在骑上可以进行A/B testing,即让一部分用户继续灰度发布是对某一产品发布逐步扩大使用群体的范围,也叫灰度放量.灰度发布可以保证系统的稳定,在初始灰度时就可以发现调整问题,以保证其影响度

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

在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来。测试成功后,将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比。当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。

常见名词

灰度期

灰度发布开始到结束这段时间称为灰度期.需用产品A特性,一部分用户开始使用产品特性B,如果用户对B没什么意见,那么逐步扩大范围,把所有的用户都迁移到B上面来

流量切分

列入具体在部署的服务器上,给最初更新的10台服务器设置较低的权重,控制发送给这10台服务器的请求书,然后主键提高权重,增加请求数.这个过程叫流量切分

灰度期

常见的灰度策略

按照比例划分
可以搭配负载均衡使用,如5%的用户首先使用新的版本,95%的仍然使用老版本。
按照用户属性划分
如限制IP、地域、性别、年龄或者浏览时间、客户等级等等用户画像,例如活跃度高的用户优先使用新版本
按照渠道划分
如内部客户优先使用新版本,大客户要保证服务稳定,使用旧版本
可以根据自己的业务情况以及变更情况修改自己的灰度策略。例如,某产品UI发生了变化,可以根据比例进行流量切分;某产品上线了新的接口,可以按照用户属性,优先内部客户和中小客户使用新版本。

但是,为了找到符合业务逻辑和需求的灰度发布,是需要开发人员进行额外的开发工作的,尤其项目如果同时涉及前端和后端,需要两边都要进行灰度发布的支持。

A测与B测

定义:α测试是在用户组织模拟软件系统的运行环境下一种验收测试,又用户或第三方测试公司进行测试,模拟各类用户为对即将面市的软件产品进行测试,试图发现并修改错误。
β测试是用户公司组织各方面的典型终端用户在日常工作中实际使用beta版本,并要求用户报告异常情况,提出批评意见。
两者的主要区别:
1、测试的场所不同。
α测试是指把用户请到开发方的产所来测试,β测试是指在一个或多个用户的场所进行测试。
2、测试环境不同。
α测试的环境受开发方控制的用户的数量相对较少,时间比较集中。而β测试的环境是不受开发方控制的,谁也不知道用户如何折磨软件,用户数量相对较多,时间不集中。
3、测试周期的不同。
一般地,α测试先于β测试执行通用软件产品需要较大规模的β测试,测试周期较长。

A/B测试

A/B测试,和蓝绿,滚动,金丝雀,完全是俩马事,和A测与B测也不是一个概念

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

A/B测试是效果测试,同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分(它们上线时可能采用了蓝绿部署的方式)

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

a/b测试是一种用数据进行产品决策的方法,它用于比较网页或应用程序的两个或多个版本,以确定哪一个版本更好。

Last modification:September 6, 2022
如果觉得我的文章对你有用,请随意赞赏