软件发布的九种方式
极客时间编辑部
讲述:丁婵大小:2.36M时长:05:10
据多项调查表明,高效能组织和低效能组织在软件交付的效率上有数量级的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。下面为当今九种主流的发布方式,以及它们的优劣和适用性,希望对你有所帮助。
第一种,单服务器组蛮力发布。
此方式简单粗暴,先将老版本整体下线,再将新版本整体上线,以此完成发布。此方式简单成本低,但是发布期间服务中断业务受损,回退也慢。适用于测试环境发布或者初创公司夜间发布。
第二种,单服务器组金丝雀发布。
矿工开矿下矿洞前,先会放一只金丝雀进去试探否存在有毒气体,金丝雀发布由此得名,国内也称为灰度发布。此方式需要逐台服务器发布新版本,优势是如果有问题,影响范围也较小,随时可以中断发布,缺陷是发布速度较慢,自动化程度不够。此发布方式适用于缺乏足够自动化发布工具的场景。
第三种,单服务器组滚动式发布。
此方式是在金丝雀发布基础上的进一步优化改进,是一种自动化程度较高的发布方式,用户体验比较平滑,是目前成熟型技术组织所采用的主流发布方式。此方式弥补了金丝雀发布的缺陷,但是发布工具较为复杂,适用于具备复杂发布工具研发能力的团队使用。
第四种,双服务器组蓝绿发布。
随着云计算和虚拟化技术的成熟,特别是容器等轻量级虚拟化技术的引入,计算资源受限和申请缓慢问题已经逐步解决,可以做到弹性按需分配。为一次发布分配两组服务器,一组运行现有的老版本,一组运行待上线的新版本,再通过 LB 切换流量方式完成发布,这就是双服务器组发布方式。
双服务器组蓝绿发布是对蛮力发布的一种优化,升级切换和回退的速度很快,缺陷是全量切换出现问题时业务有损,且需要两倍机器资源。适用于云上环境的简单发布。
第五种,双服务器组金丝雀发布。
此方式是对蓝绿发布的一种简单优化,发布时先从绿组拉入 1 台金丝雀,待金丝雀验证通过再发全量。对比蓝绿发布,该发布方式的优势是有一个生产流量的金丝雀验证过程,可以减轻风险和影响面。
第六种,双服务器组滚动式发布。
此发布方式是对蓝绿和金丝雀发布的进一步优化,按批次增量滚动发布,提供更平滑的用户体验。用户体验影响小,升级切换和回退速度比单服务器组滚动发布要快,负载均衡切流量即可。不足是需要两倍机器资源,且发布工具很复杂。适用于用户体验要求高、且团队具备复杂发布工具研发能力的场景。
第七种,功能开关发布。
此发布方式是利用代码中的功能开关来控制发布逻辑,一般不需要复杂的发布工具和智能 LB 配合,是一种相对比较低成本和简单的发布方式。缺陷是对代码有侵入,代码逻辑复杂维护成本高。适用于已有配置中心,且不具备发布工具的场景。
第八种,A/B 测试发布。
A/B 测试原来主要用于产品功能的比对测试,收集用户反馈和对比数据做产品功能设计的决策。实际上,A/B 测试也可以作为一种新功能发布技术。此发布搭建复杂度相对高,有一定技术门槛,适用于核心关键业务,且具备 A/B 测试平台的场景。
第九种,影子测试发布。
对于一些涉及核心业务的遗留系统的升级改造,为了确保万无一失,有一种称为影子测试的大招,采用比较复杂的流量复制、回放和比对技术实现。此发布方式对用户体验完全无影响,还能复制线上真实流量进行对比测试,但是搭建复杂度很高,技术门槛高,数据库的导出复制是难点,而且外部依赖不能太多,否则测试部署成本很高,且比对测试更加复杂和不稳定。此发布方式适用于核心关键业务,且影子测试平台完善的场景。
以上便是软件发布的九种主流方式,根据公司业务和研发团队的现状,可以选择适合自己的发布方式。随着 DevOps 的发展,相信会有更丰富的发布方式出现。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 加菲猫单服务器的蛮力发布,金丝雀发布,滚动式发布;双服务或多服务器蓝绿发布,金丝雀发布,滚动式发布,以及功能开关发布、A/B测试发布、影子发布基本都是解决互联网下分布式架构、微服务架构下的精益开发、迭代开发发布问题
收起评论