一、部署策略种类
应用发布策略或者叫部署策略(Deployment strategy),针对应用的部署形态、升级特征来划分类型,不同策略所需要的资源、技能、复杂度和面向的场景等等都有所差异。
1.1 停机重建(Recreate)
先停用V1版本,后在原资源上部署启用V2版本,演示如下。
1.2 滚动升级(Ramped、Rolling Update)
V2版本实例加入集群,逐个/批替换V1版本实例,演示如下。
1.3 蓝绿部署/红黑部署(Blue/Green、Red/Black)
先部署V2版本(绿),后接收V1版本(蓝)全部流量,演示如下。
1.4 灰度部署/金丝雀(Canary)
V2版本接收部分流量,后接替V1版本全部流量,演示如下。
1.5 A/B测试(A/B test)
V2版本接收特定条件(位置、浏览器等)的流量,演示如下。
1.6 影子测试(Shadow test)
V2版本镜像A版本真实流量,后接替V1版本,演示如下。
二、部署策略对比
发布策略 | 新老并行 | 不停机 | 流量控制 | 真流量测试 | 用户采样 | 资源成本 | 回滚时长 | 用户影响 | 实施复杂度 |
---|---|---|---|---|---|---|---|---|---|
停机重建 | × | × | × | × | × | 低 | 长 | 大 | 低 |
滚动升级 | √ | √ | × | × | × | 低 | 长 | 小 | 低 |
蓝绿部署 红黑部署 | × | √ | × | × | × | 高 | 短 | 中 | 中 |
灰度部署 金丝雀 | √ | √ | √ | √ | × | 中 | 短 | 小 | 中 |
A/B测试 | √ | √ | √ | √ | √ | 高 | 短 | 小 | 高 |
影子测试 | √ | √ | × | √ | × | 高 | 无 | 无 | 高 |
三、示例说明
前后三种(灰度、A/B、影子)分别被Google单独划分为部署策略和测试策略,这里全部作为部署策略来看待。其中的蓝绿、灰度和A/B都和流量的多少有关。蓝绿是一把全流量切换,A/B是无筛选的部分流量切换,而A/B是特定流量的切换。蓝绿,注定了需要全局充分测验之后才能接受整体切换的流量,灰度的新版本即便造成故障也只是一部分的流量,而A/B更多的在于比较不同用户(区域、浏览器版本等)针对不同版本的体验,可以用来做比对性选择,本质上是用“小白”来试验。
举个例子,假设在全球不同区域都部署了同一个版本的集群实例,我们做版本升级的时候,肯定是逐个区域地实施。一来,把控实施进度;二来,即便故障也好及时识别和完善。这个场景下,说它是滚动升级、灰度部署和A/B都可以。时而看到一个电子商务站点,不同区域的人访问同一个页面却有所差异就是这么回事。也就是说,这几个策略,在大小实例/集群都是适用的,不用角度或者视角上表现有所差异,主要看到底目的是什么。