科学

灰度发布

黑与白之间能够平滑过渡的发布方式

中文名:灰度发布 外文名: 所属学科: 英文名:Gray release 含义:灰度发布是指在黑与白之间 发布方式:能够平滑过渡的一种发布方式 例子:A/B测试就是一种灰度发布方式
灰度发布介绍
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。[1]

作用

及早获得用户的意见反馈,完善产品功能,提升产品质量让用户参与产品测试,加强与用户互动降低产品升级所影响的用户范围。

步骤

1)定义目标;

2)选定策略:包括用户规模、发布频率、功能覆盖度、回滚策略、运营策略、新旧系统部署策略等;

3)筛选用户:包括用户特征、用户数量、用户常用功能、用户范围等;

4)部署系统:部署新系统、部署用户行为分析系统(web analytics)、设定分流规则、运营数据分析、分流规则微调;

5)发布总结:用户行为分析报告、用户问卷调查、社会化媒体意见收集、形成产品功能改进列表;

6)产品完善;

7)新一轮灰度发布或完整发布。

分类

自然系统

系统内的个体按自然法则存在或演变,产生或形成一种群体的自然现象与特征。

自然系统包括生态平衡系统、生命机体系统、天体系统、物质微观结构系统以及社会系统等等。

人工系统

系统内的个体根据人为的、预先编排好的规则或计划好的方向运作,以实现或完成系统内各个体不能单独实现的功能、性能与结果。

人工系统包括立体成像系统、生产系统、交通系统、电力系统、计算机系统、教育系统、医疗系统、企业管理系统等等。

复合系统

复合系统是自然系统和人工系统的组合。

复合系统包括导航系统、交通管理系统和人一机系统等等。

维纳在创立控制论的过程中,把动物、机器的通讯和控制看做是一个系统。

为了明确研究的对象,人为地将物质或空间与其余物质或空间分开,被划定的研究对象称为系统。

在热学中,通常把一定质量的气体作为研究对象,此研究对象就称为系统

在流体力学中,众多流体质点的集合称为系统

人体由运动系统、神经系统、内分泌系统、循环系统、呼吸系统、消化系统、泌尿系统、生殖系统八大系统构成。

测试方法

灰度发布于互联网公司常用A/B测试似乎比较类似,老外似乎并没有所谓的灰度发布的概念。按照wikipedia中对A/B测试的定义,A/B测试又叫:A/B/N Testing、Multivariate Testing,因此本质上灰度测试可以算作A/B测试的一种特例。只不过为了术语上不至于等同搞混淆,谈谈自己理解的两者的差异。灰度发布是对某一产品的发布逐步扩大使用群体范围,也叫灰度放量,A/B测试重点是在几种方案中选择最优方案,关于A/B测试可以参考这篇文章:A/B测试终极指南。

发布引擎

对于一般的小系统并不需要单独的灰度发布引擎,可以参考A/B测试中做法,在页面javascript或服务器端实现分流的规则即可。但对于大型的互联网应用而言,单独的用于管理用户分流的发布引擎就很有必要了。“钱掌柜”分流发布模式 提到了原来阿里软件所使用的灰度发布引擎,设计思路具有普遍性,可以供参考。

常见问题

1、以偏概全

1)、问题特征:

a、选择的样本不具有代表性;

b、样本具有代表性,但选择样本用户使用习惯并没有涵盖所有核心功能。

2)、解决方案

样本选择要多样化,样本的组合涵盖大部分核心功能。

2、知识的诅咒

”知识的诅咒“的说法来自《粘住》中实验,具体可以自己搜索一下。我们自己对于自己开发的产品极为熟悉,于是乎想当然认为用户也应当能够理解产品的设计思路、产品的功能使用。

1)、问题特征:

a、结果没有量化手段;

b、只依赖于用户问卷调查;

c、没有web analytics系统;

d、运营数据不全面,只有核心业务指标(例如交易量),没有用户体验指标;

e、对结果分析,只选择对发布有利的信息,对其他视而不见。

2)、解决方案:

a、产品设计考虑产品量化指标;

b、结果分析依据量化指标而不是感觉。

3、发布没有回头路可走

1)、问题特征:

a、新旧系统用户使用习惯差异太大,没有兼容原有功能;

b、新旧系统由于功能差异太大,无法并行运行,只能强制升级;

c、新系统只是实现了旧系统部分功能,用户要完整使用所有功能,要在新旧系统切换;

d、新旧系统数据库数据结构差异太大,无法并行运行。

2)、解决方案:

前期产品策划重点考虑这些问题,包括:

回滚方案、新旧系统兼容方案、用户体验的一致性、用户使用习惯的延续性、新旧系统数据模型兼容性。

4、用户参与度不够

1)、问题特征:

a、指望用户自己去挖掘所有功能。对于一个产品,大部分用户经常只使用部分功能,用户大部分也很懒惰,不会主动去挖掘产品功能;

b、互动渠道单一;

c、陷入“知识的诅咒”,不尊重参与用户意见。

2)、解决方案:

a、善待吃螃蟹的样本用户,包括给予参与测试的用户小奖励(例如MS给参与Win7测试用户正版License)、给用户冠以title;

b、通过邮件、论坛、社区、Blog、Twitter等新媒体与用户形成互动;

c、提供产品功能向导。在hotmail最近的升级后的功能tip,gmail的tip都有类似的产品功能导向。在产品中会提示类似于:你知道吗,xx还提供xx功能,通过它你可以xx。

发布例子

Gmail Labs是一个新特性橱窗,用户可以自己选择一些未正式发布的新特性进行体验,不喜欢可以关闭,在这个过程中,吃了螃蟹,也当了Google的小白鼠。

这个做法比传统的灰度要高明很多,更加尊重用户:

1、它没有强奸用户,用户是否愿意当小白鼠完全自愿;

2、新特性不是打包在一起的一个大版本,可以选择某几个喜欢的螃蟹尝尝;

3、螃蟹不好吃可以扔掉,不用硬吃进肚子里引发肠胃炎。

当然这些好处也是有代价的:

1、要开发一个labs平台实现新特性上架、独立尝试的功能,这可能要改动Gmail的前后台架构;

2、新特性要按照一定规范来写,才能发布到这个平台上,可能会增加一些工作量;

3、小白鼠用户增多之后,对系统的压力可能会有一定提升,因为没有用户调用的界面都不一样了。

既然Gmail Labs能够顺利发布,那么说明对Google来说,以上这些问题都不算问题。另外,现在展示的新特性,都注明了开发者的名字,那么,Gmail Labs可能会开放这个平台让外部开发者也能提交特性?这倒是很open的一种开发模式,非常适合Google的web app产品线。

互联网产品有一个特点,就是不停的升级,升级,再升级。我所在的项目组,基本上保持每周一次的发布频率,系统升级总是伴随着风险,新旧版本兼容的风险,用户使用习惯突然改变而造成用户流失的风险,系统down机的风险。

为了避免这些风险,很多产品都采用了灰度发布的策略,其主要思想就是把影响集中到一个点,然后再发散到一个面,出现意外情况后很容易就回退。

很长时间,我们都一直在改进搜索引擎的排序算法,尽量让最好的商品出现在搜索结果的第一屏。我们尝试了很多中算法,不断调整各个排序因子所占的比重。但是我们无法确信我们的排序结果能满足所有用户的需求。所以我们采用了灰度发布,选取几个一级商品类目,在其中应用不同的排序算法,比如在女装类目中,我们把卖家信用所占的比率调整到60%,在珠宝类目中,我们把销售量所占的比率调整到60%然后发布出去,收集用户反馈,最终选择一种大部分人认为好的算法。

QZone是另外一个采用灰度发布的例子。大家都知道,QZone在过去的一年中改进是巨大灰度发布(2张)的,从以前慢悠悠的老爷爷变成了一个充满青春活力的小伙子。其中经历了大小无数次的发布,他们的发布也都是采用了灰度发布的策略,用户数据的升级并不是大面积的一次性升级,而是通过一个用户升级标志服务器,如果用户数据没有升级,后台会把此用户的数据逐步迁移到新版本上,然后将升级标志位置1,升级过程中,用户仍然可以访问旧的数据,升级完成后的访问都将转发给新的版本。

QQ的很多产品发布都采用灰度发布,有些是抽取部分QQ号段升级成新系统,然后根据用户反馈再大范围升级。

在传统软件产品发布过程中(例如微软的Windows 7的发布过程中),一般都会经历Pre-Alpha、Alpha、Beta、Release candidate(RC)、RTM、General availability or General Acceptance(GA)等几个阶段(参考Software release life cycle)。可以看出传统软件的发布阶段是从公司内部->外部小范围测试>外部大范围测试->正式发布,涉及的用户数也是逐步放量的过程。

在互联网产品的发布过程中也较多采用此种发布方式:产品的发布过程不是一蹴而就,而是逐步扩大使用用户的范围,从公司内部用户->忠诚度较高的种子用户->更大范围的活跃用户->所有用户。在此过程中,产品团队根据用户的反馈及时完善产品相关功能。此种发布方式,按照中国特色的叫法被冠以”灰度发布“、”灰度放量“、”分流发布“。

关于“灰度发布”叫法的来源无从考察。只不过按照中国传统哲学的说法来看,很符合中国人中庸的思维模式:自然界所有的事物总是以对称、互补、和谐的形式存在,例如黑与白、阴与阳、正与负、福与祸。在二元对立的元素间存在相互过渡的阶段,所谓”祸兮福所倚,福兮祸所伏“。具体到黑与白,在非黑即白中间还有中间色——灰色。于是出现了很多关于灰色的说法:灰盒测试,灰色管理(极力推荐任正非:管理的灰度),灰色收入,灰色地带等等。因此对于灰度发布实际上就是从不发布,然后逐渐过渡到正式发布的一个过程。

科学内涵

尽管系统一词频繁出现在社会生活和学术领域中,但不同的人在不同的场合往往赋予它不同的含义。长期以来,系统概念的定义和其特征的描述尚无统一规范的定论。一般我们采用如下的定义:系统是由一些相互联系、相互制约的若干组成部分结合而成的、具有特定功能的一个有机整体(集合)。

系统: ①有条理;有顺序:系统知识系统研究。

②同类事物按一定的秩序和内部联系组合而成的整体:循环系统|商业系统|组织系统|系统工程。

③由要素组成的有机整体。与要素相互依存相互转化,一系统相对较高一级系统时是一个要素(或子系统),而该要素通常又是较低一级的系统。系统最基本的特性是整体性,其功能是各组成要素在孤立状态时所没有的。它具有结构和功能在涨落作用下的稳定性,具有随环境变化而改变其结构和功能的适应性,以及历时性。

④多细胞生物体内由几种器官按一定顺序完成一种或几种生理功能的联合体。如高等动物的呼吸系统包括鼻、咽、喉、气管、支气管和肺,能进行气体交换。

系统:不同结构不同性质不同功能等不同的东西,但又能协调统一到一起,有联系有区分有上下左右结构层次区别的,能构互相转换互相循环,有主有次有前沿有源头,等像水系,像自然运转这样的结构层次的东西,称之为系统!一个系统是由许多相互关联又相互作用的部分所组成的不可分割的整体,较复杂的系统可进一步划分成更小、更简单的次系统,许多系统可组织成更复杂的超系统。

我们可以从三个方面理解系统的概念:

1.系统是由若干要素(部分)组成的。这些要素可能是一些个体、元件、零件,也可能其本身就是一个系统(或称之为子系统)。如运算器、控制器、存储器、输入/输出设备组成了计算机的硬件系统,而硬件系统又是计算机系统的一个子系统。

2.系统有一定的结构。一个系统是其构成要素的集合,这些要素相互联系、相互制约。系统内部各要素之间相对稳定的联系方式、组织秩序及失控关系的内在表现形式,就是系统的结构。例如钟表是由齿轮、发条、指针等零部件按一定的方式装配而成的,但一堆齿轮、发条、指针随意放在一起却不能构成钟表;人体由各个器官组成,单个各器官简单拼凑在一起不能成其为一个有行为能力的人。

3.系统有一定的功能,或者说系统要有一定的目的性。系统的功能是指系统与外部环境相互联系和相互作用中表现出来的性质、能力、和功能。例如信息系统的功能是进行信息的收集、传递、储存、加工、维护和使用,辅助决策者进行决策,帮助企业实现目标。

与此同时,我们还要从以下几个方面对系统进行理解:系统由部件组成,部件处于运动之中;部件间存在着联系;系统各主量和的贡献大于各主量贡献的和,即常说的1+1>2;系统的状态是可以转换、可以控制的。

系统在实际应用中总是以特定系统出现的,如消化系统、生物系统、教育系统等,其前面的修饰词描述了研究对象的物质特点,即“物性”, 而“系统”一词则表征所述对象的整体性。对某一具体对象的研究,既离不开对其物性的描述,也离不开对其系统性的描述。系统科学研究将所有实体作为整体对象的特征,如整体与部分、结构与功能、稳定与演化等等。

相关资讯
内容声明

1、本网站为开放性注册平台,以上所有展示信息均由会员自行提供,内容的真实性、准确性和合法性均由发布会员负责,本网站对此不承担任何法律责任。

2、网站信息如涉嫌违反相关法律规定或侵权,请发邮件至599385753@qq.com删除。

Copyright © 趣爱秀