研发效率破局之道
葛俊
前 Facebook 内部工具团队 Tech Lead
34093 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
开篇词 (1讲)
研发效率破局之道
15
15
1.0x
00:00/00:00
登录|注册

18 | 蓝绿红黑灰度发布:这些五颜六色的发布到底怎么用?

发布后的实践
发布阶段的实践
部署阶段的实践
蓝绿、红黑部署和灰度发布的What
蓝绿、红黑部署和灰度发布的How
蓝绿、红黑部署和灰度发布的Why
各种部署方式的定义
蓝绿红黑灰度发布

该思维导图由 AI 生成,仅供参考

你好,我是葛俊。今天,我来和你聊聊最近流行的一些部署、发布方法,以及测试右移。
最近几年,我见到了很多跟颜色相关的部署、发布方法,比如蓝绿部署、红黑部署、灰度发布等。今天,我会首先与你分享它们的基本定义和要解决的根本问题;然后,与你一起深入看一看高效应用这些方法的基本原则,以及一些具体的实践。

各种部署方式的定义

我们先来看看蓝绿部署(Blue-green Deployment)、红黑部署(Red-black Deployment)和灰度发布(Gray Release ,或 Dark Launch)的定义和流程吧。

蓝绿部署

蓝绿部署,是采用两个分开的集群对软件版本进行升级的一种方式。它的部署模型中包括一个蓝色集群 A 和一个绿色集群 B,在没有新版本上线的情况下,两个集群上运行的版本是一致的,同时对外提供服务。
系统升级时,蓝绿部署的流程是:
首先,从负载均衡器列表中删除集群 A,让集群 B 单独提供服务。
然后,在集群 A 上部署新版本。
接下来,集群 A 升级完毕后,把负载均衡列表全部指向 A,并删除集群 B,由 A 单独提供服务。
在集群 B 上部署完新版本后,再把它添加回负载均衡列表中。
这样,我们就完成了两个集群上所有机器的版本升级。

红黑部署

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了蓝绿部署、红黑部署和灰度发布等不同的部署、发布方法,以及它们的基本定义和流程。这些方法旨在解决频繁发布的生产模式带来的挑战,如减少服务停止时间和控制新版本发布风险。文章强调了将服务上线过程拆分为部署、发布和发布后三个阶段,并充分利用这些阶段的特点来提高服务上线的效率、质量和安全性。在部署阶段,可以进行集成测试、流量镜像、压测和配置方面的测试。在发布阶段,建议采用金丝雀发布和监控方法。而在发布后阶段,重点是监控、A/B测试和混沌工程。文章还提到了金丝雀发布在移动端应用或桌面应用上的实现方式。总的来说,本文对部署、发布方法的原理和实践进行了深入浅出的介绍,对于想要了解这些技术特点的读者来说,是一篇值得阅读的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《研发效率破局之道》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 技术修行者
    你觉得金丝雀发布可以用在移动端应用或者桌面应用上吗?如果可以的话,大概要怎么实现呢? 首先,我们目前一般都在采用红黑部署的模式,对于不重要的更新,偶尔会尝试灰度部署。灰度部署可能对于互联网类型的大流量高并发的应用更有意义,因为它们会涉及到更多的资源,灰度发布会更节省资源。 我理解金丝雀发布这种方式并不会和某种应用类型绑定,之所以在Web应用中流行,是因为对于用户来说,Web类型的应用,只需要在用户端安装浏览器即可,不需要有额外的配置,所有的安装部署全部在服务器端进行,更容易控制。 如果在移动端或者桌面端实施这一部署方式,需要1. 筛选种子用户,发送版本更新消息,并提供更新途径。2. 用户更新版本后,收集用户使用情况,评估新版本是否达到预期目标。3. 根据评估结果,决定是否升级版本或者回滚。 种子用户的维护比较重要,一般会先从内部用户开始逐渐扩展。 无论哪种类型的应用,采用金丝雀的方式进行部署,都会对监控提出更高的要求。

    作者回复: @日拱一卒 同学,每一次的回答都很到位。先赞一个! 这里稍微补充一点。在移动端进行金丝雀发布还是比较普遍的。因为很多移动端APP。都是强依赖一个后端服务。可以比较方便的通过后端API来进行控制。如果是桌面版的程序,要实现金丝雀发布,前提也是需要有一个和后端服务沟通的渠道。 这里的一个技巧,是使用功能开关来控制版本的回归,而不用要求客户重新安装旧版本。

    2019-10-02
    2
    7
  • 25ma
    中午知道蓝绿红黑灰的使用场景和定义,非常受用

    作者回复: 👍👍👍

    2020-03-29
    1
  • 文中
    我们通过 A/B Test 框架来实现移动端应用的金丝雀发布。具体的方式就是,A/B 的流量划分模块指引逻辑的路由,不同流量背后的实验定义完全参数化,这样就有办法通过后端的配置来控制前端行为。这种思想对于: - 待上线新功能进行内部 dog-food、线下试运营、灰度发布 - 对有特殊情况的真实用户,调整系统的业务处理逻辑 - 在并行自动化测试中,隔离其他测试用例或设置的影响 - 生产环境回归测试 都可以用到。

    作者回复: 赞!!

    2020-04-14
  • lisa
    在生产环境下做集成测试提到了两个方法对于写用例的成本太高了,尤其是测试同学来写集成用例,因为涉及到和被测系统的联动,比如识别测试标签,识别后可能会根据测试点需要做不同的处理,感觉很难落地,facebook在这块落地上有遇到什么困难,怎么解决的,可以详细说说么?

    作者回复: 我在Facebook工作的时候,Facebook没有怎么使用在生产环境下做集成测试。大家很多集成测试是在开发环境和测试环境直接做的。不过因为开发环境、测试环境和生产环境共享数据,所以集成测试跟线上环境还是很相似。这里有一个做法可以参考,对对测试数据打标签、所有业务逻辑都对测试标签进行处理。所以我觉得"识别后可能会根据测试点需要做不同的处理"这个就得这么做。

    2019-10-07
  • 一打七
    文中提到发布阶段的监控很重要,那老师之前说很多大公司的发布流程可以做到分钟级别,想咨询下他们的监控环节是怎么处理的?按理说这么短的时间也监控不到有效的信息,比如监控的波形图也不会有明显的变化
    2023-10-29归属地:北京
  • Sam_Deep_Thinking
    这篇是这个专栏里的精品文章,写的很好,优秀。
    2019-12-08
收起评论
大纲
固定大纲
各种部署方式的定义
蓝绿部署
红黑部署
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部