摘 要:移动互联网繁荣的背景下,移动应用的可靠质量变得非常重要,而移动应用的灰度是质量保障的重要手段。本篇主要研究基于前后端全链路移动应用灰度模型,首先研究其全链路灰度模型的必要性,其次给出灰度模型三位一支撑的组成框架,最后给出此灰度模型的实践,以指导在实际工作中具体运用。
关键词:灰度模型 应用网关灰度 全链路
对于任何移动应用程序来说,任何恢复移动应用质量的费用都会很高,在这种环境下,移动终端需要一个完整的灰度模型,对拟发布的移动版本进行快速和可控制的核查,以确保其质量符合用户和服务的需要。
这个灰度模型即基于前后端全链路的移动应用灰度模型,共包含四个部分:Native应用的灰度、应用网关的灰度、应用后端服务的灰度和一个支撑即灰度数据支撑。
一、全链路灰度模型的必要性
随着移动互联网用户规模增大,移动终端服务生产事故的影响越来越大。一般来说,未被测试覆盖的较低层次的错误可能导致许多用户无法使用的故障。
如果没有移动应用全链路灰度模型:
1、影响范围以及程度是无法控制的。一旦实施生产变更中出现问题,尤其是诸如关键产品访问、主页、个人会员等特别重要的服务出现问题,所有用户都会崩溃。
2、午夜版本发布后认证,开发者需要24小时等待处理,以确保在联网后的第一时间进行生产验证,这是对开发者的一个重大的考验。否则当生产问题出现时,我们只能通过消极的投诉来发现这些问题。
3、恢复错误的应用程序并不容易,Native应用程序通常要求用户点击安装,一旦发现了致命的错误,用户就必须卸载错误版本并返回稳定版本,从而导致用户的切换成本很高。
而全链路灰度模型覆盖了前后端整条链路,对于整个用户使用周期中,移动应用前端的灰度用户所依赖的后端支撑也在灰度环境,避免了大规模的生产污染。最大限度地减少网络问题的影响,而不影响正常用户发布后的使用,并且支持生产环境核查。
二、全链路灰度模型
全链路灰度模型,可以用三位一支撑来概述,三位即Native应用灰度、应用网关灰度、后台应用灰度,并且三个部位处于同一条用户访问链路上,一支撑即灰度数据支撑。
.png)
图1 全链路灰度模型
Native应用灰度:此部分的灰度是控制用户终端中的应用升级来达到新版本的分发,即通过一定的灰度的策略来选择某一小部分用户参与到新版本的灰度使用,而对于绝大部分正常用户还是使用老的应用程序版本。如果新版本某些功能出现非预期的错误情形,则仅仅这部分灰度的用户受到错误功能的影响,正常用户仍能使用健康的版本。
Native应用灰度核心是怎么制定灰度策略,即从全部用户群中应该要选择哪些用户作为灰度用户,例如用户的应用类型,是轻量级应用还是全量级应用。用户的终端类型:移动电话类型(IOS,安卓)、移动设备型号(华为,OPPO,VIVO),移动设备的操作系统(安卓7,安卓10)等。用户类型:当前用户省份城市区域、IP和基于用户行为数据的分析的群标签、特定用户,如不稳定贷款用户等。按比例计算的随机用户:例如随机抽样5%或者10%等。
应用网关灰度:应用网关灰度关键点是如何来分流移动终端流量,即对于同一应用网关系统,既有正常用户流量也有灰度用户流量,通过何种分流手段使正常用户走正常系统链路,而灰度用户流量走灰度发布系统链路。
这里一般利用一种流量分拨的技术,流量进入应用网关之前会打上不同的标签,标签会代表这种访问来自于哪里,应用网关的流量分拨功能会根据不同的标签分发到不同的服务器集群,从而达到灰度的目的。
后台应用灰度:后台应用是用户逻辑功能执行的地方,当前端移动应用流量通过网关分发时,后台应用是流量的承接者,所以后台应用灰度需要根据不同的流量进行适当的服务集群的分组,一般地划分为正常版本集群组和灰度版本集群组,正常版本集群组承接正常用户的访问流量,灰度版本集群组承接灰度版本访问流量。后台应用灰度关键是远程调用框架支持集群的分组功能。
三、全链路灰度模型实践
我们利用此模型搭建了一个全链路的灰度平台,
.png)
图2 灰度模型实践
1、发布前所有用户流量均在所有灰度与正常服务器组之间进行分配,当全链路灰度被激活时,所有访问流被传送到普通服务器以确保对外部用户的正常访问,而灰度服务器群集将用于灰度层次的发布。
2、灰度服务器集群发布:通过持续交付平台,只在灰度服务器网络中发布了新的代码,而正常服务器组保持之前的版本。
3、内部灰度:在第二步之后,测试人员通过管理灰度环境,在灰度列表中配置移动测试设备。测试设备将自动传送到一组灰度等级服务器,使测试人员不仅能够检查生产环境中新公布的功能,同时也保证了旧版本的功能,以确保新发布的功能与网上客户兼容。
4、外部灰度:如果内部环境和生产环境中的测试都是顺利的,可以根据诸如客户版本号码、终端类型等参数选择合适外部用户范围进行灰度检查,并跟踪外部用户缺陷。
5、数据配置与实时数据分析:这里数据配置主要是指灰度信息配置,里面存储有海量的移动设备信息,用户各维度信息,移动应用版本信息,供选择合适的灰度流量。而实时数据分析灰度信息自动采集,异常信息自动告警,出现问题一键降级,以及支撑在线异常分析,最终根据新增异常数据给出版本质量评分。
四、结束语
此灰度模型是从移动Native端到应用网关再到后端服务全链路的,它有一个强大的数据支撑平台,能进行实时数据分析和综合给出灰度软件版本的质量评价。并且此文详细给出了如何在实际工作中运用,具有很好的参考意义。
参考文献:
[1]楼晔, 彭宇, 杨朝. 银行系统互联网服务灰度发布的应用实践[J]. 金融电子化, 2018.
作者简介:戴治波(1977- ),男,江苏南京人,硕士,工程师,主要从事移动互联网、大数据、人工智能方面研发工作。