灰度发布是什么意思,真正指的是什么

更新过程可以暂停,停在一个既有新版本又有旧版本的状态,然后选择升级或者回滚。精确的流量分发控制;监控系统的支撑;灵活的发布系统

灰度发布是什么意思,真正指的是什么

究竟什么才是灰度发布其实并没有一个严格的标准,因为这个东西不是黑的也不是白的是个中间过渡地带,这类的东西定义都会比较麻烦。由于工作的原因看到好多友商所谓的灰度发布产品,有意思的是他们实现的是完全不一样的功能,对外都说自己是灰度发布。我看到的有三种:

1. 更新过程可以暂停,停在一个既有新版本又有旧版本的状态,然后选择升级或者回滚

2. 支持流量比例分配,可以把百分之几的流量分配给一个服务,剩下的给另一个服务

3. 支持 url 路径流量分配,一个路径下的流量给一个服务,另一个路径流量给另一个服务

那究竟哪个才能算是灰度发布呢?抛开具体的技术实现,让我们从需求的角度来考虑一下为什么要有灰度发布?灰度发布究竟是要做什么?从目的出发再来看技术实现就会清晰很多。

既然要灰度就是不希望所有人都看到,就是为了控制影响范围,之所以要做这种限制就说明发布的人心里对这个发布的版本就是不确定的,害怕影响范围太大风险不可控。也就是说这个风险因素在开发和测试环境都没有办法控制,只能在生产环境来观察,那究竟是怎样的因素会导致必须要上线观察而不是在开发测试环节来解决呢?主要有从运维和产品两大方面的考量因素。

从运维的角度讲,任何一次上线都是有风险的,或者有一些步骤的遗漏,流程的不规范,或者有一些隐藏的代码 bug都会导致线上的不稳定。控制风险的办法就是小批量上线,验证之后在全部更新。此外一些稳定性和性能的问题在开发测试环境很难复现,因此这一类的修复和功能只能到生产环境来验证,同样由于效果的未知也不可能全量更新。再有一些大的重构,比如编程语言的变化,框架的变化,基础库的更新,操作系统的更新都会有未知的影响,而这些影响也需要生产的检验。

从产品的角度讲,有一些产品设计,交互,界面展现形式都不是坐在办公室里拍桌子就可以定出最佳实践的。产品经理的视角和用户的视角是不同的,即使是产品经理之间的风格,偏好也是不一致的。小到按钮的顺序,弹框展示的位置,大到页面整体的布局,广告位的展示策略,究竟用哪种设计更好并没有理论上的最佳实践。而这种情况就需要大家分别作出自己的方案,去线上收集真实的用户数据作对比。也就是硅谷里常说的 A/B testing,也可以归到灰度发布的范畴。本质上就是基于数据驱动来作抉择,在用户的投票中选择哪种方案,而不是传统的看谁嗓门大会拍桌子,看谁官大来做决策。

了解了需求,我们就很容易推导出所有人都在说的灰度发布真正是什么了。

1. 精确的流量分发控制

这是一切的核心,从运维风险控制的角度,需要把受影响的流量控制在一个精确的范围内,在上线前就知道哪部分用户会有问题,而不是真出问题谁受到影响都不知道。一个常见场景是新版本只让公司内部的员工能访问到,再一个市,一个省的一点点推上去。从产品角度看要做 A/B test,就需要控制测试样本,哪些用户是 A 版本,哪些用户是 B 版本,在发布后应该就是固定的,而不是一个用户一会儿访问 A,一会儿访问 B。而传统的负载均衡器策略只能做到粗犷的比例分配,并没有细粒度的流量规则控制。而一个理想的灰度发布系统应该有很细粒度的流量规则,比如匹配 android 用户,匹配某个地区的用户,甚至能组合多种条件匹配到特定的人群。

2. 监控系统的支撑

流量精确分配只是第一步,接下来更重要的是获得多个版本的关键指标。对运维来说可能是看错误率,吞吐量,延迟,cpu 内存消耗这些系统层面指标。对于产品来说可能是要看点击率,pv,uv 等业务指标的变化。这些都需要能把数据收集并作展示,来方便后续决策:全量推还是回滚?使用方案 A 还是 B?不然的话灰度发布带来不了更多业务方面的促进,也不能帮你更好的了解业务的状态和用户行为。

3. 灵活的发布系统

从上面的介绍可以看出灰度发布并不是个短暂的过程,可能会持续很久。例如某个重大的框架或者系统更新可能会持续很久,有可能整个服务在几个月内都是新旧并存,甚至有可能需要两个版本分别各自迭代。而从产品的角度来看可能就会更灵活,很有可能线上有五六个方案都在收集数据,每天有了一些新想法都要上一些小版本看效果,每个版本上线后可能都要再各自做优化调整观察效果。这种情况可能线上就永远不会有一个统一的版本灰度反而是个常态来应对不断变化的需求和挑战。而发布系统也需要做相应的调整,不在把每个服务看成一个单一版本的运行体,只在更新的短时间内出现多版本共存,只允许全量推和回滚这种粗粒度策略。而是应该将多版本共存看成常态,允许每个版本各自迭代,版本之间又能区分对应的监控日志信息,这样灵活的发布系统才能配合灵活的灰度策略。

说了这么写灰度系统要做的事情其实就是流量控制和数据收集,来控制风险并帮助产品做决策。再看一下最开始提出的三个所谓的灰度发布:更新过程可以暂停,流量比例分配,url分流。它们充其量也只是做到了流量精确分配的某几个特殊情况,而且还都是不很精确的分配。而如果结合使用场景就会发现,这几种在实际中是很难用起来的,因为没有流量的精确控制很难控制风险范围,如果风险都不可控,那还要灰度发布干什么呢?更不要提后面的监控数据收集和灵活的发布了。

所以说一个真实好用的发布系统是十分复杂的,绝对不是页面上点两三下就可以完成的,而后面的实现更需要一整套体系来支撑。如果你想打造一个灰度发布系统,希望这篇文章能对你有所启发。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月11日
下一篇 2024年4月11日

相关推荐

  • 网络安全知识指的是什么,网络安全知识指的是什么内容

    网络安全有哪些基本知识? 网络安全的基本知识:网络安全的定义、机关单位最常接触的网络、网络安全的主要特性、计算机网络的泄密隐患、机关单位网络安全工作要点。网络安全的定义 网络安全从本质上讲,就是网络上的信息安全。 密码长度不少于8个字符。不要使用单一的字符类型,例如只用小写字母,或只用数字。用户名与密码不要使用相同字符。常见的弱口令尽量避免设置为密码。自己、…

    2024年5月19日
    3800
  • 智汇推的闪屏广告指的是什么,价格是多少

    闪屏广告是指:在你打开应用(腾讯新闻APP、天天快报APP)开启时加载,展示时间固定(5秒),广告可点击,支持定向投放,展示完毕后自动关闭 这几天,小编留意发现到智汇推推出了新的广告资源位置:在腾讯新闻app客户端、天天快报app客户端的开屏位置。据了解,这个是属于腾讯智汇推的闪屏广告,那么,什么是腾讯智汇推闪屏广告?腾讯智汇推闪屏广告又是怎么做的? 闪屏广…

    2024年5月1日
    5900
  • 黑客技术具体指的是什么(黑客技术具体指的是什么)

    今天给各位分享黑客技术具体指的是什么的知识,其中也会对黑客技术具体指的是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! 本文目录一览: 1、黑客指的是什么?2、黑客是什么意思3、黑客是什么意思?干什么的?4、什么是黑客? 黑客指的是什么? 黑客(hacker)是一个喜欢用智力通过创造性方法来挑战脑力极限的人,特别是他们所感兴趣的领…

    2024年4月6日
    3800
  • c语言%值(c语言指的是什么)

    本篇文章给大家谈谈c语言%值,以及c语言指的是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、c语言的%怎么算的2、c语言中%是什么意思?3、C语言中%什么意思 c语言的%怎么算的 在C/C++中,“%”是求余运算符,适用于无符号整形变量。对于无符号整形变量m和n,则 m%n的结果是0 ~ n – 1,例如 105…

    2024年4月1日
    3900
  • c语言读取256级灰度bmp

    如何用C语言程序从bmp格式的图片中读取图片的灰度值 1、如果是8bit的灰度图像,总共能表示2^8共=256种颜色,此时用调色板保存颜色信息,而像素矩阵则保存调色板索引,这样更能节省空间。 2、可以变成灰度图也可以不变。这里假设你的图像都是IPL_DEPTH_8U类型。如果变成灰度图,就是单通道图像,获取的就是每一个像素点的灰度值。 3、2013-10-2…

    2024年3月20日
    4000

发表回复

登录后才能评论



关注微信