
9

灰度发布与蓝绿发布的原理及实现方式
source link: http://dockone.io/article/2434772
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

灰度发布与蓝绿发布的原理及实现方式
通常产品优化迭代,直接将某版本上线发布给全部用户,若遇到线上事故(或BUG),解决周期较长,则不得不回滚到前一版本,会严重影响用户体验。使用灰度发布或蓝绿发布,能够有效避免因发布导致的流量丢失或服务不可用问题。究竟什么是灰度发布和蓝绿发布,怎么实现,让我们一探究竟。
应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。如果直接将某版本上线发布给全部用户,一旦遇到线上事故(或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体验。
长期以来,业务升级逐渐形成了几个发布策略:灰度发布、蓝绿发布、A/B测试、滚动升级以及分批暂停发布,尽可能避免因发布导致的流量丢失或服务不可用问题。本文着重介绍灰度发布和蓝绿发布的原理及实践。
灰度发布,又称金丝雀发布,是版本升级平滑过渡的一种方式,当版本升级时,使部分用户使用新版本,其他用户继续使用老版本,待新版本稳定后,逐步扩大范围把所有用户流量都迁移到新版本上面来。
这样可以最大限度地控制新版本发布带来的业务风险,降低故障带来的影响面,同时支持快速回滚。
以下示意图可描述灰度发布的大致流程:先切分20%的流量到新版本,若表现正常,逐步增加流量占比,继续测试新版本表现。若新版本一直很稳定,那么将所有流量都切分到新版本,并下线老版本。
切分20%的流量到新版本后,新版本出现异常,则快速将流量切回老版本。
蓝绿发布提供了一种零宕机的部署方式,是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。
在保留老版本的同时部署新版本,将两个版本同时在线,新版本和老版本相互热备,通过切换路由权重的方式(非0即100)实现应用的不同版本上线或者下线,如果有问题可以快速地回滚到老版本。
如果您的灰度或蓝绿发布需求较复杂,可以向集群额外部署其他开源工具,例如Nginx Ingress、Traefik,或将业务部署至应用服务网格(Application Service Mesh,简称ASM),利用开源工具和服务网格的能力实现。
三种实现方式对比:
这三种方式是如何实现灰度发布和蓝绿发布的,我们将在后续文章解答,敬请期待!
原文链接:https://mp.weixin.qq.com/s/V8Y8fHBOUgLtPb0YPuaqXg
应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。如果直接将某版本上线发布给全部用户,一旦遇到线上事故(或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体验。
长期以来,业务升级逐渐形成了几个发布策略:灰度发布、蓝绿发布、A/B测试、滚动升级以及分批暂停发布,尽可能避免因发布导致的流量丢失或服务不可用问题。本文着重介绍灰度发布和蓝绿发布的原理及实践。
灰度发布,又称金丝雀发布,是版本升级平滑过渡的一种方式,当版本升级时,使部分用户使用新版本,其他用户继续使用老版本,待新版本稳定后,逐步扩大范围把所有用户流量都迁移到新版本上面来。
这样可以最大限度地控制新版本发布带来的业务风险,降低故障带来的影响面,同时支持快速回滚。
以下示意图可描述灰度发布的大致流程:先切分20%的流量到新版本,若表现正常,逐步增加流量占比,继续测试新版本表现。若新版本一直很稳定,那么将所有流量都切分到新版本,并下线老版本。
切分20%的流量到新版本后,新版本出现异常,则快速将流量切回老版本。
蓝绿发布提供了一种零宕机的部署方式,是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。
在保留老版本的同时部署新版本,将两个版本同时在线,新版本和老版本相互热备,通过切换路由权重的方式(非0即100)实现应用的不同版本上线或者下线,如果有问题可以快速地回滚到老版本。
灰度发布或蓝绿发布实现方式
利用Kubernetes原生的特性可以实现简单的灰度发布或蓝绿发布,比如:通过修改Service的selector中决定服务版本的label的值来改变Service后端对应的Pod,实现让服务从一个版本直接切换到另一个版本,从而实现蓝绿发布。如果您的灰度或蓝绿发布需求较复杂,可以向集群额外部署其他开源工具,例如Nginx Ingress、Traefik,或将业务部署至应用服务网格(Application Service Mesh,简称ASM),利用开源工具和服务网格的能力实现。
三种实现方式对比:
这三种方式是如何实现灰度发布和蓝绿发布的,我们将在后续文章解答,敬请期待!
原文链接:https://mp.weixin.qq.com/s/V8Y8fHBOUgLtPb0YPuaqXg
2021-12-28
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK