导读
本文适合:
想了解 Serverless 灰度发布的同学。
认为当前 Serverless 灰度发布配置太复杂,寻求简洁版灰度发布流程的同学。
想了解 Serverless Devs 组件和插件之间关系的同学。
Serverless 灰度发布
什么是 Serverless ?
Serverless 顾名思义就是无服务器,它是一种“来了就用,功能齐全,用完即走”的全新计算提供方式,用户无需预制或管理服务器即可运行代码,只需将代码从部署在服务器上,转换到部署到各厂商 Serverless 平台上;同时享受 Serverless 按需付费,高弹性,低运维成本,事件驱动,降本提效等优势。
什么是 Serverless 灰度发布?
灰度发布又称为金丝雀发布( Canary Deployment )。过去,矿工们下矿井前,会先放一只金丝雀到井内,如果金丝雀在矿井内没有因缺氧、气体中毒而死亡后,矿工们才会下井工作,可以说金丝雀保护了工人们的生命。
与此类似,在软件开发过程中,也有一只金丝雀,也就是灰度发布(Gray release):开发者会先将新开发的功能对部分用户开放,当新功能在这部分用户中能够平稳运行并且反馈正面后,才会把新功能开放给所有用户。金丝雀发布就是从不发布,然后逐渐过渡到正式发布的一个过程。
那么对于部署在 Serverless 平台上的函数应该怎么进行灰度发布呢?
下文将以阿里云函数计算 FC 为例,为各位展开介绍。
灰度发布有一个流程,两种方式。
一个流程
Serverless 灰度发布是通过配置别名来实现的,别名可以配置灰度版本和主版本的流量比例,在调用函数时使用配置好的别名即可将流量按比例发送到相应版本。
配置灰度发布的流程如下:
- Service 中发布一个新版本。
- 创建或更新别名,配置别名关联新版本和稳定版本,新版本即为灰度版本。
- 将触发器 ( Trigger ) 关联到别名。
- 将自定义域名 ( Custom Domain ) 关联到别名。
- 在调用函数中使用别名,流量会按配置比例发送到新版本和稳定版本。
传统做法的两种方式
1、阿里云控制台 web 界面:
a.发布版本
b.创建别名
c.关联触发器
d.关联自定义域名
2、使用 Serverless Devs cli
a.发布版本
s cli fc version publish --region cn-hangzhou --service-name fc-deploy-service --description "test publish version"
b.创建别名并设置灰度
s cli fc alias publish --region cn-hangzhou --service-name fc-deploy-service --alias-name pre --version-id 1 --gversion 3 --weight 20
c.关联触发器
需要到控制台配置
d.关联自定义域名