灰度发布:灰度很简单,发布很复杂&灰度发布(灰度法则)的6点认识
什么是灰度发布,其要点有哪些?
最近跟几个聊的来的同行来了一次说聚就聚的晚餐,聊了一下最近的工作情况如何以及未来规划等等,酒足饭饱后我们聊了一个话题“灰度发布”。
因为笔者所负责的产品还没有达到他们产品用户的量级上(最低的都在1千万+),也就谈不上灰度发布这一环节,所以只有听的份。
虽然笔者暂时没有涉及到,但在工作中也听过关于灰度发布的一些信息,只不过这一次听他们几个交谈后更是增长了不少知识,为了让自己更加的了解这一个“新”概念,回到住处就在网上慢慢的“啃”起来,下面则是我对“灰度发布”的理解,现分享出来。
我理解的灰度发布,主要是按照一定策略选取部分用户,让他们先行体验新版本的应用,通过收集这部分用户对新版本应用的反馈(如:微博、微信公众号留言或者产品数据指标统计、用户行为的数据埋点)以及对新版本功能、性能、稳定性等指标进行评论,进而决定继续放大新版本投放范围直至全量升级或回滚至老版本。
1、什么是灰度发布,有哪些好处?
答:灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。
在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。(来源于百度百科)
好处:
- 提前获得目标用户的使用反馈;
- 根据反馈结果,做到查漏补缺;
- 发现重大问题,可回滚“旧版本”;
- 补充完善产品不足;
- 快速验证产品的 idea。
2、那么灰度发布的流程是咋样的呢?
相关解释:
- 选定策略:包括用户规模、发布频率、功能覆盖度、回滚策略、运营策略、新旧系统部署策略等
- 筛选用户:包括用户特征、用户数量、用户常用功能、用户范围等
- 部署系统:部署新系统、部署用户行为分析系统(web analytics)、设定分流规则、运营数据分析、分流规则微调
- 发布总结:用户行为分析报告、用户问卷调查、社会化媒体意见收集、形成产品功能改进列表
【某宝的案例.来源网络】
产品需求收集和确定 –>; 技术方案出具和分工协调 –>; 开发编码 –>; 内部服务器环境的测试 –>; 联调(又名预发环境) –>; 小淘宝环境发布,内部员工喷喷喷 –>; 小流量(具体有多少取决于业务影响面)公网测试 –>; 收集数据写反馈 –>; 全量上线。
3、灰度发布的方式方法有哪些?
产品Q群、产品微信群、内部用户、app自升级、换量渠道、不会被抓包的小市场,在这些渠道将灰度包放还出去。这里边可控度最强的当属app自升级了。根据时间段,用户版本,升级请求数量,实际升级数等等
4、灰度发布三大类型?
- web页面灰度:按照ip或者用户id切流啊。具有随机性,可以控制比例
- 服务端灰度:考验主系分能力了,可以做逻辑切换开关,按照义务相关属性逐渐切流
- 客户端灰度:一般按照用户逐渐推送包,主要是PC端(WIN,MAC)、移动端(安卓,OS)内部大规模内测
5、灰度发布时,目标用户选取策略?
即选取哪些用户先行体验新版本,是强制升级还是让用户自主选择等。可考虑的因素很多,包括但不限于地理位置、用户终端特性(如分辨率、性能)、用户自身特点(性别、年龄、忠诚度等)。
对于细微修改(如文案、少量控件位置调整)可直接强制升级,对于类似新浪微博改版这样的大型升级,应让用户自主选择,最好能够提供让用户自主回滚至旧版本的渠道。
对于客户端应用,可以考虑类似Chrome的多channel升级策略,让用户自主选择采用stable、beta、unstable channel的版本。在用户有明确预期的情况下自行承担试用风险。
6、A/B测试云服务提供商
海外应用:optimizely
国内应用:AppAdhoc(简单够用)、optimizely(相当强大,尤其在native app A/B测试这块)
7、延伸阅读:
2015年5月31日,马化腾在香港大学李兆基会议中心大礼堂举办了一场创业演讲,演讲中爆了一个大料:微信的诞生史。
微信在诞生之前,在腾讯内部有三个团队在同时做微信,主要竞争者为张小龙的e-mail团队和手机QQ团队。做这个产品之前,腾讯内部并没有给这个产品定一个完整的基调,而是让公司内部形成一个激烈的竞争,通过观察用户对产品的喜好程度和产品的实际完成情况决定上线结果。
马化腾的灰度机制是这样的:很多公司在一开始做产品定义时,要么确定它是黑的,要么确定它是白的。但是马化腾发现,互联网产品的定义是有用户投票决定的。在一开始,我们不定义它是黑,还是白,有一个灰度的周期。在这个灰度周期里,让用户的口碑决定它是生是死,是白还是黑。
说的再直接点,这也是马化腾创新上的灰度机制:容忍失败,允许适度浪费,鼓励内部竞争内部试错。马化腾说过,在产品研发过程中,我们还会有一个困惑:自己做的这个产品万一失败了怎么办?
我的经验是,在面对创新的问题上,要允许适度的浪费。怎么理解?
就是在资源许可的前提下,即使有一两个团队同时研发一款产品也是可以接受的,只要你认为这个项目是你在战略上必须做的。
很多人都看到了微信的成功,但大家不知道,其实在腾讯内部,先后有几个团队都在同时研发基于手机的通讯软件,每个团队的设计理念和实现方式都不一样,最后微信受到了更多用户的青睐。
你能说这是资源的浪费吗?我认为不是,没有竞争就意味着创新的死亡。即使最后有的团队在竞争中失败,但它依然是激发成功者灵感的源泉,可以把它理解为内部试错。
具体内容,请参考:《马化腾致信合作伙伴:灰度法则的七个维度》
- 需求度:用户需求是产品核心,产品对需求的体现程度,就是企业被生态所需要的程度;
- 速度:快速实现单点突破,角度、锐度尤其是速度,是产品在生态中存在发展的根本;
- 灵活度:敏捷企业、快速迭代产品的关键是主动变化,主动变化比应变能力更重要;
- 冗余度:容忍失败,允许适度浪费,鼓励内部竞争内部试错,不尝试失败就没有成功;
- 开放协作度:最大程度地扩展协作,互联网很多恶性竞争都可以转向协作型创新;
- 进化度:构建生物型组织,让企业组织本身在无控过程中拥有自进化、自组织能力;
- 创新度:创新并非刻意为之,而是充满可能性、多样性的生物型组织的必然产物。
http://www.woshipm.com/pmd/573429.html
灰度发布(灰度法则)的6点认识
1、什么是灰度发布?
有所控制地选择发布的人群及其比例。
2、为什么要做灰度发布?
1、灵活选择用户参与产品测试。
2、规避一定的发布风险,降低产品迭代升级所影响的范围。
3、快速获取用户的反馈意见,完善产品功能,提升产品质量。
4、避免停服发布给用户带来不便。
5、具有容灾能力:降低全量发布引起的服务器崩溃等风险,逐步发布产品,逐步控制服务器压力。
3、什么时候需要进行灰度发布?
任何时候。
4、灰度发布 VS A/B测试
目的
灰度发布:减少bug风险
A/B测试:对比多种方案,得出最好的优化方案
数据指标
分流控制
灰度发布:逐步扩大用户
A/B测试:选定在某个流量上进行较长时间的试验
5、如何进行灰度发布?
1、定义目标
降低产品BUG风险;
试验新功能,看这个新功能的指标是否能达到预期,或者是否会对产品造成损失。
2、选定灰度策略
用户选择:地理位置、终端特性等
功能覆盖度:逐步,还是全部开放功能
提供数据反馈入口
回滚或发布上线
公关运营
3、筛选用户
用户特征
用户流量
用户范围:内部用户 > 种子用户 > 活跃用户 > 所有用户。
体验一致性:新旧方案用户使用习惯差异太大没有兼容原有功能,新旧方案功能差异太大无法并行必须强制升级,新方案只实现了旧方案的部分功能,用户要使用完整功能需要来回切换等。
4、灰度发布上线
集成灰度、分析平台
设定分流规则
灰度发布新版本
运营数据采集分析
分流规则微调
灰度发布 产品完善 新一轮灰度发布 完整发布
6、灰度发布常见问题
1、以偏概全
选择的样本不具有代表性
样本用户使用习惯并没有涉及所有升级的核心功能。
2、无法定量分析
结果没有量化手段,只依赖用户问卷调查,没有分析灰度系统。
运营数据不全面,只有核心业务指标,没有用户体验指标等。
对结果分析只发布有利的信息,对其他视而不见。
3、用户参与度不够
很多产品期望用户自己发掘所有功能,而大部分用户经常只使用部分功能,或者说互动的渠道非常单一,或者陷入知识的诅咒不尊重用户的意见。
4、灰度发布不是万能的
前期规划要充分。
7、互联网产品创新“灰度法则”的七个维度
1、需求度
用户需求是产品的核心,产品对于需求的体现程度,就是企业被用户所需要的程度。用户不需要的东西就是舍本逐末。一边要做自己产品的忠实用户,一边把自己的触角伸到其他用户当中,去感受他们真实的声音。
2、速度
快速实现单点突破,角度、锐度尤其是速度,是产品在生态中存在发展的根本。快速向完美逼近。为了实现单点突破允许不完美,但要快速向完美逼近,市场不是一个耐心的等待者。
3、灵活度
互联网生态瞬息万变,更早地预见问题,主动变化,就不会在市场中陷入被动。在维护根基,保持和增强核心竞争力的同时,企业各方面灵活性非常关键。敏捷企业、快速迭代产品的关键是主动变化,主动变化比应变能力更重要。
4、冗余度
容忍失败,允许适度浪费,鼓励内部竞争内部试错,不尝试失败就没有成功。
5、开发协作度
最大程度地扩展协作,互联网很多恶性竞争都可以转向协作型创新。互联网将更大范围的卷入协作,越多人参与,网络的价值就越大,用户需求就越能得到满足,每一个参与的组织从中获得的收益也越大。在聚焦于自己核心价值的同时,适当深化和扩大社会化协作。
6、进化度
一个企业的文化、DNA、组织方式是否具备自主进化、自主生长、自我修复的能力。构建生物型组织,让企业组织本身在无控过程中拥有自进化、自组织能力。
7、创新度
创新并非刻意为之,而是充满可能性、多样性的生物型组织的必然产物。
注:以上内容来源于“三节课”的公开课《给产品运营的技术课:A/B测试和灰度发布》,及“腾讯马化腾的‘互联网产品:灰度法则的七个维度’”。
作者:鲤洋Mark
链接:https://www.jianshu.com/p/ad25d2a44cd9
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
灰度发布:灰度很简单,发布很复杂&灰度发布(灰度法则)的6点认识的更多相关文章
- 【结果很简单,过程很艰辛】记阿里云Ons消息队列服务.NET接口填坑过程
Maybe 这个问题很简单,因为解决方法是非常简单,但填坑过程会把人逼疯,在阿里云ONS工作人员.同事和朋友的协助下,经过一天的调试和瞎捣鼓,终于解决了这个坑,把问题记下来,也许更多人在碰到类似问题的 ...
- java(itext) 一个很简单的PDF表格生成工具
先上个效果图 因为做的项目涉及到数据预测,其中有大量打印业务来支撑实体店的运营,因为注重的是数据,要求简洁,清晰,所以写了个很简单也很实用的工具类. 如果需要编写样式或者插入背景,都可以查阅itex官 ...
- java实现 redis的发布订阅(简单易懂)
redis的应用场景实在太多了,现在介绍一下它的几大特性之一 发布订阅(pub/sub). 特性介绍: 什么是redis的发布订阅(pub/sub)? Pub/Sub功能(means Publ ...
- 最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)
===================================================== 最简单的基于libRTMP的示例系列文章列表: 最简单的基于librtmp的示例:接收(RT ...
- 把H5打包成IOS APP其实可以很简单!签名?越狱?都不需要!
很多小伙伴都在开发自己的app, 有的实现实现比较简单,就是一个h5页面,然后想要打包成app发布出去. 这个想法很单纯 打包生成个app这个是很简单的,网上一堆打包工具,分分钟可以完成 BUT…… ...
- Delphi中的动态包,有详细建立包的步骤(答案很简单:因为包的功能强大)
为什么要使用包? 答案很简单:因为包的功能强大.设计期包(design-time package)简化了自定义组件的发布和安装:而运行期包(run-time package)则更是给传统的程序设计注入 ...
- 手把手教你用CAB发布OCX的简单办法
CAB是一种文件压缩格式,把OCX文件(ActiveX插件)压缩成CAB文件是为了发布它,这种发布方式给人感觉“浏览器会自动安装该插件”,很多朋友钟情于此.目前流行很多压缩工具,但WINRAR这类工具 ...
- 我在阿里这仨月 前端开发流程 前端进阶的思考 延伸学习的方式很简单:google 一个关键词你能看到十几篇优秀的博文,再这些博文中寻找新的关键字,直到整个大知识点得到突破
我在阿里这仨月 Alibaba 试用期是三个月,转眼三个月过去了,也到了转正述职的时间.回想这三个月做过的事情,很多很杂,但还是有重点. 本文谈一谈工作中遇到的各种场景,需要用到的一些前端知识,以及我 ...
- Unity3D入门其实很简单
在上次发布拙作后,有不少童鞋询问本人如何学习Unity3D.本人自知作为一名刚入门的菜鸟,实在没有资格谈论这么高大上的话题,生怕误导了各位.不过思来想去,决定还是写一些自己的经验,如果能给想要入门U3 ...
随机推荐
- Chapter 3 Phenomenon——24
My mom was in hysterics, of course. 我的母亲当时是歇斯底里的发疯了. I had to tell her I felt fine at least thirty t ...
- docker(二)部署docker容器虚拟化平台
yum安装方法参考:https://www.cnblogs.com/yufeng218/p/8370670.html https://www.cnblogs.com/straycats/p/84112 ...
- paxos协议
两将军问题 有两支军队,它们分别有一位将军领导,现在准备攻击一座修筑了防御工事的城市. 这两支军队都驻扎在那座城市的附近,分占一座山头. 一道山谷把两座山分隔开来,并且两位将军唯一的通信方式就是派各自 ...
- 第一个 smarty 程序
原来使用普通的 PHP 代码,只需要一个文件,就可以完成功能. 而使用了 smarty后,会分成两个文件来完成,一个是模板文件,用于显示内容,一般后缀名为 *.tpl (但实际上任何后缀名都可以,建议 ...
- Linux下清除catalina.out文件
在当前目录输入如下命令即可: cat /dev/null >catalina.out
- 第一次项目上Linux服务器(四:CentOS6下Mysql数据库的安装与配置(转))
一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱 ...
- LR监测windows资源一般监测哪几个项?
计数器 指标 1. 平均事务响应时间 Average Transation Response Time 优秀:<2s 良好:2-5s 及格:6-10s ...
- 并发编程——ConcurrentHashMap#addCount() 分析
前言 ConcurrentHashMap 精华代码很多,前面分析了 helpTransfer 和 transfer 和 putVal 方法,今天来分析一下 addCount 方法,该方法会在 putV ...
- ASP.NET MVC加载用户控件后并获取其内控件值或赋值
有网友看了这篇<ASP.NET MVC加载ASCX之后,并为之赋值>http://www.cnblogs.com/insus/p/3643254.html 之后,问及Insus.NET,不 ...
- (转)mssql sp_addextendedproperty 用法,作用
sp_addextendedproperty [ @name = ] { 'property_name' } [ , [ @value = ] { 'value' } [ , [ @level0typ ...