# 灰度发布

云开发函数提供多版本管理,多个版本间可以使用函数灰度能力来调整请求流量的比例,达到线上业务可灰度,可回滚的能力,保证线上发布业务平滑过渡。

# 灰度相关概念

云函数版本,一个云函数可以发布多个版本,一个版本就是一个函数在生成版本时刻的快照,包含代码和配置(超时时间、环境变量等)。

云函数始终存在一个 LATEST 版,即最新版本,编辑器中上传云函数和在控制台更改配置始终更改 LATEST 版本。

在发布版本时,总是从 LATEST 当前的状态发布一个版本(快照),要进行灰度,只需更改版本之前的流量配比,即可实现灰度。

流量比例,在没有设置流量比例前,默认情况下都是 100% 流量导向 LATEST 版本,发布一个或多个版本后,即可调整不同版本之间的流量比例。

# 灰度使用

灰度配置可通过控制台进入,点击云开发函数控制台,点击指定灰度函数进入函数,函数代码,如下:

# 生成版本

点击【发布新版本】对 LATEST 生成一个新的版本,如下:

输入版本描述后,即可生成版本 1,生成版本 1 后无法将无法更改函数 1 的代码。

# 配置流量比例

配置不同版本中的灰度比例,如下:

这里注意调整比例后,业务立马生效,请谨慎配置后确认。

# 注意事项

设置了流量配比后,如果一个用户被分配到了该流量区间,则该用户调用该云函数时一定会走到该流量区间对应的云函数版本,不会出现随机分配的现象。

比如假设云函数 FuncLATEST 流量占比 10%,版本 1 占比 90%,如果该用户 openid_1 经系统判断落在了版本 1 上,则用户 openid_1 的对云函数 Func 的请求都一定会落在版本 1 上,而不是 90% 概率到 110 % 概率到 LATEST。这种方式可以保证灰度的用户维度的一致性。

对于没有用户信息的请求,灰度默认是随机调度。

# 最佳实践

# 第一次使用

第一次云函数灰度时只有 LATEST 版本、没有任何生成的版本,在本地改了代码后进行灰度的步骤:

  1. 用户在控制台中选择云函数,发布新版本 1,将流量设置为 100% 导向 1
  2. 用户在编辑器上传代码更新 LATEST,此时上传代码部署不影响线上业务
  3. 开始灰度 10%,用户将 LATEST1 的流量比例设为 10%90%

此时完成第一次线上灰度,第一个版本占比流量为 10%,线上正式版本占比流量为 90%

# 第二次及后续灰度

灰度目标云函数现有 LATEST 版本和版本 1,或者更多版本,需要把版本100% 导向 1或者在 LATEST 生成新的版本 2,要灰度只需更新 LATEST2 的流量配比即可。

# 版本回退/全量

全量和回退版本,只需要把流量调整,使得 100% 导向指定灰度版本/正式版本即可。