灰度发布
CloudBase 云函数拥有多版本管理的功能,多个版本间可以使用函数灰度能力来调整请求流量的比例,达到线上业务可灰度,可回滚的能力,保证线上发布业务平滑过渡。
相关概念
版本
每个云函数可以发布多个版本,版本就是一个函数在生成版本时刻的快照,包含代码和配置(超时时间、环境变量等)。
LATEST 版本
云函数始终存在一个 LATEST 版本,即最新版本,您上传、更新、部署云函数的代码,都是更改 LATEST 版本。
流量比例
您可以调配不同版本云函数的流量比例,CloudBase 会根据比例,自动分发请求流量。
一致性保证
CloudBase 使用用户的全局唯一 ID 来保证请求的一致性。
设置了流量比例后,如果某用户被分配到了某个流量区间,则该用户调用该云函数时一定会走到该流量区间对应的云函数版本,而不会出现随机分配的现象。
例如,云函数的 LATEST 流量占比 10%,版本 1 占比 90%,如果某个用户经系统判断落在了版本 1 上,则此用户对该云函数的所有请求都一定会落在版本 1 上,而不是 90% 概率到版本 1,10 % 概率到 LATEST。
对于没有用户信息的请求,灰度默认是随机调度。
如何灰度
推荐的灰度流程如下:
- 从 LATEST 上发布一个新版本,此版本的快照与当前 LATEST 一致;
- 将 LATEST 版本的流量设置为 0,将新发布的版本流量设置为 100%;
- 更新云函数代码(此时 LATEST 版本已经更新,但流量为 0);
- 自行调配 LATEST 版本灰度比例。
例如:
- 发布版本 1;
- 设置 100% 流量到版本 1;
- 更改 LATEST 代码,并且部署;
- 此时希望 10% 的线上流量给到需要灰度观察的最新代码,则设置 10% 流量给到 LATEST,90% 流量给版本 1。
灰度使用
生成版本
登录 CloudBase 云开发控制台,进入 云函数管理页面,点击想要灰度的函数:
在「灰度配置」中,点击「发布新版本」对 LATEST 生成一个新的版本,输入版本描述后,即可生成版本 1。
生成版本后无法将无法更改此版本的代码。
配置流量比例
配置不同版本中的灰度比例,如下:
这里注意调整比例后,业务立马生效,请谨慎配置后确认。
最佳实践
第一次使用
第一次云函数灰度时,只有 LATEST 版本,没有任何生成的版本,此时需要开发者先为当前 LATEST 版本发布一个版本:
- 在控制台中选择云函数,发布新版本 1,将流量设置为 100%;
- 更新 LATEST 版本,此时由于 LATEST 版本的流量为 0,所以不影响线上业务;
- 将 LATEST 和 1 的流量比例分别设为 10% 和 90%
此时完成第一次线上灰度,新版本(更新后的 LATEST)占比流量为 10%,老版本(版本 1)占比流量为 90%。
版本回退/全量
全量和回退版本,只需要把流量调整,使得 100%
导向指定灰度版本/正式版本即可。