金丝雀发布

让少量真实用户先触达新版本。

难度

中等

参与者

  • 两人以上

定义

这是一种在软件开发过程中的,让产品的少量真实用户先触达到新版本的持续交付方式。产品团队应当实时监控发布对系统可能会造成的性能回归,或者性能方面的问题,以及任何其他的不良影响。一旦发现到了任何问题,就可以比较轻松地将用户流量切换回工作正常的旧版本。

这个术语来自于煤矿,矿工为了尽早的发现有毒气体,从而将一种关在笼子中的鸟带入井下。在有害气体对矿工造成生命威胁之前,小鸟便会提前丧命。正如矿井里的金丝雀,这种发布方式的目的是:为避免出现更大的问题,提供了一种早期的预警机制。

使用场景

这是一种循环反馈的做法,这使得团队能从真实的生产环境中,实时的获取产品更改的反馈。它使持续交付成为可能。

实现方式

金丝雀发布与A/B 测试相似,只让一部分用户先触达新版本。但是与A/B 测试不同的是,新特性通常是一个全新的特性,而不只是对已有旧特性的微调。两者的目的也是不同的,A/B 测试是为了取得业务产出(如:营业额、订单数量等)而改进产品表现,而金丝雀发布则完全侧重于技术上的性能。

金丝雀发布与暗发布也有相似,两者都只对一部分用户发布新版本。暗发布关注于理解用户对新特性的反应以及使用情况,而金丝雀发布真正的关注于变更的整个产品,或者某个独立特性在技术方面的性能(是否可以从架构中隔离使用)。

‘功能开关’也是一种有意义的方式,它可以让我们在已经投产的系统中实施金丝雀发布。

相关实践:

延伸资源

原文作者

  • Val Yonchev
  • PUBLISHED DECEMBER 18, 2018

原文链接:https://openpracticelibrary.com/practice/canary-release/

Image credit: Photo by Julia Craice on Unsplash

0%