SH

Soloharness

概念 · 辨析 · Agent

← 返回概念辨析

Concept Contrast Fable

金丝雀发布和蓝绿部署

金丝雀发布是先把一小批用户放上新版本,观察一阵没问题再逐步扩大。蓝绿部署是准备两套完整环境,旧的在用,新的备好,一键切换。一个讲的是渐进验证,一个讲的是完整隔离和快速回滚。

寓言

换车道和换桥

城南有一座老桥要翻新,交通局收到了两套施工方案。第一套叫「换车道」:不封桥,先翻修最右侧一条车道,车流走另外三条。右道修好了,开放通车,再封左二道,依次轮换。全程不中断交通,但工期长,一条道修两个月,四条道工期八个月。

第二套叫「换桥」:在老桥旁边同步建一座一模一样的新桥。新桥建好后,挑一个凌晨三点,把路障一移,车辆全部转到新桥上,老桥封闭翻新。工期总共四个月,但切换那一晚需要封路四小时。

交通局开评审会。赞成换车道的人说:风险分散,出一段问题只影响一条道,不会全线瘫痪。赞成换桥的人说:旧桥新桥物理隔离,任何问题都可以瞬间切回去,恢复时间按分钟算。

评审会上有个工程师提了一个关键问题:如果新铺的路面有问题,在换车道方案里,车已经在上面跑了,颠簸的反馈马上就来了,但只能倒回去重铺,倒回去的成本是一条道的工期。在换桥方案里,新桥路面如果没经过车辆碾压,铺得好不好只能靠检测报告,切换之后才发现问题,整座桥的车都颠。

总工拍板:两种方案都保留,看桥况决定。结构隐患大、可能随时恶化的情况用换桥方案——准备一个安全的备用桥,随时能切。只是路面老化、不影响结构的情况用换车道——小范围试,错了只影响一小段。

后来换车道方案的施工队遇到了麻烦:单条车道修完后,发现新旧路面接缝处有沉降,车辆经过颠簸明显。他们立刻停了剩余车道的施工,先把接缝处理好,再继续推进。因为只放开了一条车道,受影响的车流有限,投诉量可控。

换桥方案也经历过一次考验:新桥切换后第二天,桥头伸缩缝异响,检测确认是安装偏差。指挥中心在十五分钟内把全部车流切回了老桥,新桥封闭抢修。没有一辆车因为伸缩缝问题受到影响。

年底交通局总结,副局长说了八个字:渐进控风险,隔离保切换。两种方案不是谁更好,是你更担心慢慢出问题还是一下子出问题。

金丝雀发布

渐进式部署策略:先将新版本开放给一小部分用户(如 5%),监控指标正常后逐步扩大比例,直到全量。风险是逐步暴露的,回滚只需退回受影响的那部分流量。

蓝绿部署

并行部署策略:维护两套完整环境(蓝=当前生产,绿=新版本),新版本在绿环境部署并验证后,通过路由切换将全部流量瞬间转到绿环境。回滚也是瞬间切回蓝环境。

故事对应

  • 换车道:金丝雀发布——逐步替换,小范围验证,风险渐进暴露。
  • 换桥:蓝绿部署——完整并行环境,瞬间切换,瞬间回滚。
  • 颠簸反馈的差异:金丝雀的验证反馈来自真实流量,蓝绿的验证依赖测试环境。
  • 看桥况决定方案:根据风险特征选择策略——渐进风险用金丝雀,需要快速切换用蓝绿。
  • 接缝沉降事故:金丝雀的优势——问题影响面可控。
  • 伸缩缝十五分钟切回:蓝绿的优势——回滚速度快。

落到项目里

选发布策略时问三个问题:回滚需要多快(秒级选蓝绿,分钟级可考虑金丝雀)?有没有双倍基础设施的预算(蓝绿需要两套环境)?新版本的问题能不能靠小流量验证发现(数据一致性、用户行为变化类更适合金丝雀)?一个常见的错误决定是:有蓝绿的环境预算但选了金丝雀,验证期太长拖慢迭代;或者没环境预算却选了蓝绿,造成资源浪费。