如何在Azure Web App中使用Canary(或A/B)部署
Canary(或A/B)部署介绍
大型网站升级时,常采用的方法是先将升级代码部署在过渡服务器上,并将部分用户导流到过渡服务器使用新功能。经过一段时间的用户验证,确定功能无误后才发布到生产服务器上。这样的部署策略叫做Canary(或A/B)部署。使用这种方式的好处很明显:
- 引入真实用户进行测试
- 新功能有错产生的影响也是有限的
- 原系统不受影响
本文将介绍如何使用Azure平台进行这种过渡-切换部署
Azure Web App 介绍
Azure Web App是一个Azure平台的Web应用服务器,为用户提供web服务。
Azure Slot 介绍
Slot是插槽的意思。在电脑系统的主板上,通常有多个插槽,支持外部设备的接入。例如硬盘插槽可以插硬盘,显卡插槽可以插显卡。
Azure平台上引入了插槽的概念,每个Web App缺省对应一个插槽(Producation插槽)。管理员可以为Web App增加新的插槽,系统在后台为新插槽创建一个Web App一 一对应。也就是说,每一个新插槽,都对应一个新的Web App。因此用户可以将代码发布到插槽,也既发布到插槽对应的Web App。插槽中一般用来存放待验证代码,或者待发布代码。
插槽的另一个好处是可以互换(Switch),如果待发布代码通过验证,我们可以直接将存放待发布代码的插槽和生产插槽进行互换,从而将待发布代码发布到正式生产环境,并将原生产插槽内容交换到其他插槽,这也可以算是一种备份。如果正式生产环境出现问题,还可以再次进行插槽互换,恢复之前版本代码。
如何添加一个Azure Web App
用户登录Azure Portal URL, 选择一个资源组,选择Web App,按照提示完成创建。
如何为Web App添加一个槽(slot)
选择新创建的Web App,选择槽设置
-添加槽
在弹出页面中输入名称,选择是否clone,完成创建。
Slot 创建在流量管理中对槽进行流量设置
选择新创建的Web App,选择开发工具
-在生产中测试
用户可以选择一个槽,指定流量百分比,如下图所示。
30%验证流量转移
通过Jmeter[1]验证,确实有30%左右(15/50)的流量流向了新建的slot站点。
Jmeter验证通过web app访问图标也能证明这一点:
70%slot 30%slot切换插槽将代码从过渡服务器发布到生产服务器
切换插槽可以将两个插槽的内容进行交换,意味着将代码从过渡服务器发布到生产服务器。
切换插槽而不是覆盖插槽的好处是,如果发布到生产系统出现故障,还可以再次切换恢复到原有生产系统
选择新创建的Web App,选择槽设置
-交换
网友评论