江苏移动DevOps探索之路:灰度发布

Posted IT运维新视界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了江苏移动DevOps探索之路:灰度发布相关的知识,希望对你有一定的参考价值。

一、背景

作为电信运营商三大支撑系统之一的业务支撑系统(BSS: Business Support System),用户量巨大、系统复杂,承载了运营商全部的业务实现与运营。随着互联网时代、华为CRM第三代的升级,业务的多样性、复杂度不断提升,对IT支撑的期望也在不断提升。

 

面对如此种种期望和困境,灰度发布给我们提供了一种很好的解决思路。


二、什么是灰度发布?

灰度发布也叫灰度放量,是对某一产品的发布逐步扩大使用群体范围,以保证整体系统的稳定,将正式版本在一定周期内平滑控分阶段上线的过程。作为DevOps开发优秀工程实践,广泛用于互联网软件产品及云服务业务发布上线过程中。


灰度发布可以保证及早获得用户的意见反馈,完善产品功能,提升产品质量;让用户参与产品测试,加强与用户互动,降低产品升级所影响的用户范围;可及时发现问题采取措施并修复,或者进行版本回滚,把问题的影响降到最低。


灰度发布的流程如下

江苏移动DevOps探索之路(一):灰度发布


三、江苏移动CRM是采用哪种策略哪种方式实现灰度的呢?

1、江苏移动CRM架构介绍

江苏移动CRM由华为BES系统承载是由4大生产中心组成,分别承载江苏的13个地市业务量。四个中心物理上独立,基于这种业务模型和系统架构以及要充分体验版本新功能的考虑,我们灰度的切换策略选型为以地市单位进行实施。

江苏移动DevOps探索之路(一):灰度发布


2、灰度总体实现思路

目前针对灰度发布互联网的普遍思路如下:1)客户在灰度发布portal上配置相关的灰度发布规则,保存到数据库并推送到注册配置中心。2)分发节点实时监控这些配置中心节点,并缓存最新的灰度发布规则。3)外部请求到达分发节点时,分发节点根据消息中的灰度分发标识(如号码、地市、操作员)以及灰度发布规则,解析灰度发布规则,根据消息中携带的参数信息进行路由分发,将解析后的消息转发到灰度环境或者稳定环境。 

江苏移动DevOps探索之路(一):灰度发布


3、灰度方案选择

方案一:物理灰度

灰度环境与非灰度环境在物理上隔离开,软负载作为灰度环境和非灰度环境的统一入口,用户访问软负载时会做消息解析,判断消息发往灰度环境或者非灰度环境。物理灰度的范围:webapp、中间件等部件单独部署,可以作为单独的一个环境。


方案二:逻辑灰度

在不增加硬件的情况下,通过发布工具将集群下的节点进行隔离,按照隔离节点的批次进行分批次升级;在升级过程中,将地市通过软负载路由转发分批次切换到隔离节点上受理业务。注:在同一个集群中,灰度环境和非灰度环境共享一套软负载。


看业界互联网大咖亚马逊灰度发布实践

亚马逊服务上线,为了减小服务出现问题后对用户的影响,一般的发布流程为:部署到Gamma环境 -> 部署到集群规模较小的Region -> 部署到集群规模较大的Region。

部署到Gamma环境:亚马逊的Gamma环境是生产环境的镜像,Gamma环境与生产环境共用一份数据,Gamma环境外部用户不可见,内部用户可以在Gamma环境上测试新版本。

部署到集群规模较小的Region:对于存在多Region部署的服务,上线新版本通常会选择先部署到集群规模较小的Region,出现问题后影响用户相对较少。


我们的选择

江苏移动DevOps探索之路(一):灰度发布


江苏移动CRM借鉴亚马逊灰度发布经验,基于生产的系统架构,选用物理灰度的架构,新建了一个可以承载一个地市业务量的独立灰度中心(相当于亚马逊的Gamma环境)。



数据库灰度适配:因为和生产环境共用数据库,物理灰度版本就要求数据库必须向下兼容。如果灰度版本的数据库无法向下兼容,则不能同时在生产和灰度环境分别部署正常的版本和灰度版本,那样会造成数据库的冲突。因此我们将很多配置表增加了灰度标签和属性,或者直接新增单独的灰度配置表。


4、江苏移动CRM的灰度发布与回退机制

灰度发布应用版本灰度发布->数据库脚本执行->地市切换灰度(分流)->问题灰度暴露解决->灰度应用版本加问题补丁全量生产发布


灰度回退应用无需回退,只需要将地市从灰度中心回切到原生产中心即可。

如果数据影响了现有生产中心,数据库也需要回退到上个版本,包括物理库上SQL脚本的回退和DDSDDL脚本的回退。


四、实施效果

1、多地市轮流切换灰度中心,上线的影响面受到了很好的控制,影响范围直接下降了92%。

2、上线次日问题数量月均下降80%。

3、灰度中心日常空置,灰度中心版本可以白天发布、白天测试,大大降低上线成本。

4、灰度中心有真实的用户数据、真实的网元,验证结果百分百准确。

5、灰度中心发布后,灰度地市验证发现的问题、新需求及功能发现的问题,可以利用正式发布前的时间完成修复,大大缩短了bug修复周期。 


五、未来灰度发布如何演进?

9-11月份,平均每个月实现一次全量版本的灰度发布,这在资源利用上是不足的,灰度中心在每月一次的全量发布之外仍然闲置,未来会结合江苏移动的DevOps发展之路,为快速版本迭代和问题解决提供发布支持。

  


以上是关于江苏移动DevOps探索之路:灰度发布的主要内容,如果未能解决你的问题,请参考以下文章

首富带你畅谈:蓝绿部署滚动发布灰度发布/金丝雀发布

互联网产品灰度发布

互联网产品灰度发布

基于 Istio 的全链路灰度方案探索和实践

基于 Istio 的全链路灰度方案探索和实践

直播 | 基于Istio的灰度平台实践