实战Practice丨民生银行互联网服务灰度发布的应用实践

实战Practice丨民生银行互联网服务灰度发布的应用实践

本文节选自《金融电子化》2018年3月刊

作者:中国民生银行信息科技部?楼晔?彭宇?杨朝





编 者 按

本文从目标确立、发展过程、发布实践三个方面介绍了民生银行的互联网服务灰度发布的应用实践。 

行业背景:

当前金融科技的概念与技术应用已成为热点,金融科技正向生态化和开放化发展,以输出为途径,以赋能为目标,成为新金融领域的主流风向。



面临的问题:

各种变革为银行科技带来了前所未有的挑战,其中一个突出矛盾就是要让系统同时满足安全稳定与快速迭代两项要求。



实战经验:

民生银行的互联网服务灰度发布为后台系统的服务连续性提供了充分保障,降低了上线风险,简化了升级步骤,打造了坚实稳固的生产运行环境。



灰度发布目标确立

互联网服务治理是对银行内部服务向互联网发布的全面管控措施,它不仅继承了传统服务治理的核心理念,包含了服务全生命周期管理、服务注册、服务路由寻址、流量管控、服务监控等功能。在此基础上针对互联网服务风险高、快速迭代的特点,增加了对服务安全、鉴权验证和灰度发布的支持。灰度发布就是解决系统安全稳定的同时,满足快速迭代发布这一矛盾的关键技术。

目前民生银行在各主要系统中运用灰度发布来替代一刀切的上线模式,通过平滑升级,防范未知事件的影响范围。基于互联网服务治理体系,我们总结了灰度发布的经验,并对其升级完善,在微服务架构中引申出了互联网服务灰度发布体系,确立了互联网服务灰度发布的三大目标:合理控制新版本的发布范围,以应对高速迭代的服务发布要求;发现问题快速回滚,保证服务连续性;支持多版本并行,为互联网服务的A/B test提供可能。

围绕此目标,我们建立了一套集升级管控、用户灰度策略、运营数据收集与分析于一体的互联网服务灰度发布体系,以保障系统的安全稳定,有效管控上线的风险。

灰度发布的发展过程

1.内测灰度。

早期,灰度发布的目的仅在于提供一种类生产的验证机制,其实现方式也相对原始,即搭建一套类似生产环境的灰度环境。灰度环境允许连接生产数据来执行服务,但连接到该环境必须通过特定验证终端或服务地址。以互联网渠道系统为例,灰度环境需仿照生产环境配备负载均衡器、WEB前置机、应用服务器、数据库服务器一整套基础设施,后台对接真实的产品系统及银行核心。应用发布时,先将程序包、配置、脚本等完整发布到灰度环境,验证通过后再正式发布生产环境。这种灰度发布机制的优点在于,提供了独立的灰度服务入口,确保了影响隔离,而缺点在于灰度环境搭建复杂、成本高,发布步骤较为繁琐。此外最为突出的问题是缺乏灵活的用户灰度策略,虽然能很好地控制影响面,但样本用户仅限于内部用户,分析数据不全面。这种灰度模式主要用于新版本发布前,内部用户做最后一次验证。



2.白名单灰度。

中期,为了解决早期灰度发布存在的发布繁琐、灰度策略不够灵活等缺点,我们设计了基于白名单的灰度发布机制。白名单针对用户、设备或其他可标识验证者的信息,在应用代码中增加通用的白名单权限控制,如某些功能只能指定用户或设备进行验证,验证无误后关闭白名单,功能面向所有用户开放。以网上银行为例,后端系统根据当前用户特征控制其可访问的功能范围,同时还根据配置下发白名单菜单数据,前端根据此数据展示具体功能菜单。相比于客户端灰度,白名单灰度发布机制的优点在于扩展了灰度策略,且策略可灵活配置,无需通过搭建独立的灰度环境就可进行功能验证;缺点在于白名单校验逻辑会对代码产生侵入,若逻辑处理不当,仍可能会对既有功能产生影响,届时需要进行完整回退才能恢复服务。这种灰度主要用于部分重大新功能或新服务的有限范围内部测试。

3.服务接口灰度。

现在,灰度发布已融入互联网服务治理体系。近年来民生银行大力推动互联网渠道的整合,发展对外输出金融科技的能力,我们的应用架构也开始全面转向微服务架构。面对后台服务的快速增长和重构,我们设计并实现了一套互联网网关产品,并将互联网服务灰度发布体系设计为网关的核心功能之一。

传统的灰度实现通常是建立在反向代理层,相比之下在应用网关层上实现灰度有以下优势。

更灵活的用户灰度策略:网关层可以通过调用后台服务的方式确定用户的划分策略,因此控制逻辑不仅灵活可控,而且还可以包含业务含义。这一设计使我们可以继承原来的白名单模式来执行灰度,并在此基础上实现更灵活的分级放量策略。有助于我们在严格控制体验用户范围的同时,挑选最符合代表性的用户群。这对于安全稳定性至上的银行系统而言是至关重要的。

更可靠的路由控制:网关记录了用户的会话,可以保证在一次用户会话中,用户绝不会产生跨版本访问,可以避免“脏数据”的产生。

集中监控与应急处理:网关接管了所有互联网请求到后台的路由,作为定制化的应用系统,其内部集成了完善的服务监控,可以很清晰地展现所有后台系统的运行情况。而灰度环境的监控更是重中之重,同时网关还可在不停机的情况下实现灰度下线功能,这些功能为灰度环境问题的快速发现和恢复提供了保障。

互联网网关的灰度发布除了控制后台访问以外,还通过继承白名单灰度时期的动态菜单功能,关联了前端展现的控制。通过互联网网关,我们将前端和后台的灰度进行了统一。

内测灰度、白名单灰度和服务接口灰度这三种灰度发布模式各有各的应用场景,在生产上依据实际需求各有应用。但在用户灰度策略、自动化程度和灵活度方面,服务接口灰度运用范围更广。

互联网服务灰度发布实践

民生银行的互联网服务灰度发布是互联网服务治理中的重要一环,而互联网网关是我们对互联网服务治理的实现。正因如此,我们将互联网服务灰度发布的核心控制逻辑实现在了网关层面。

1.互联网网关的设计目标与定位。

互联网网关是“微服务”架构的中枢,其主要目的是将银行内部的无状态服务发布到互联网上。为了实现这一目的,互联网网关包含了对服务的安全、会话、流量控制和监控的处理。互联网网关的核心处理逻辑是对请求的路由,每个请求需要经过哪些检查逻辑,调用到哪一个后台服务,都是通过配置决定的。我们针对服务接口的灰度,就是基于网关到后台系统的服务路由层而实现的(如图1所示)。

实战Practice丨民生银行互联网服务灰度发布的应用实践

图1?互联网网关技术架构

2.实现互联网服务灰度发布的方法。

在基于互联网网关的互联网服务灰度发布体系中,我们通过对服务的版本管理,实现服务的发布和下线功能。在此基础上,我们将版本控制作为互联网服务灰度发布的核心,将版本号从前到后予以贯彻,应用在互联网服务灰度发布相关的各项要素当中。

首先,每一次应用后台的发布,都需要先确立一个版本号,服务框架会将这个版本号标记到应用后台所发布的每一个服务上,网关则通过这个标记来识别灰度环境并完成服务路由。其次,对于通过客户端访问的渠道,动态菜单也与版本号关联,确保同一版本下展现层与后台服务可以准确对应。最后,在网关层通过网关配置,将应用后台和动态菜单的版本与用户灰度策略绑定在一起,然后将版本号标记在网关配置上。这样就把互联网服务灰度发布的控制归结到了网关配置的控制上,将灰度环境与网关上的一套新版本配置划上了等号。这就将版本的切换动作进行了大幅的简化(如图2所示)。

实战Practice丨民生银行互联网服务灰度发布的应用实践

图2?互联网服务灰度发布原理

3.互联网服务治理运营配套体系。

灰度发布能力作为互联网服务治理体系中的重要组成部分,除了实现上述的灰度发布控制以外,还要将灰度发布后续的运营监控、用户数据分析、放量策略控制等配套功能进行整合,形成发布控制、数据反馈、决策分析为一体的闭环,构建出一套完整的互联网服务治理运营配套体系(如图3所示)。

实战Practice丨民生银行互联网服务灰度发布的应用实践

图3?互联网服务灰度发布运营体系

MAM是民生银行自主研发的移动金融应用运营平台,提供了包括灰度发布数据采集、数据分析在内的多项运营支持功能,通过MAM可实时的监控灰度发布的效果及问题。基于MAM的数据采样和分析功能,我们能从网关采集的监控数据中实时查看服务的调用次数、平均响应时间、成功率等技术性指标,并配以监控告警。当灰度服务出现成功率低,响应时间变长等情况时就能快速进行服务回退。

此外,MAM还能基于客户端埋点等方式采集的数据获得用户体验数据的分析。基于这些数据,就能够对新版本的用户满意度进行量化,将A/B test作为灰度发布的场景之一运用到日常运营中。这些数据也可作为用户放量策略的调整依据,还能据此完成流量增幅的计算,联动自动构建模块,实现放量策略与部署自动化的整合。

综合以上各点,我们在互联网服务治理控制中心将灰度发布的全流程进行了整合,实现了对互联网服务灰度发布的全方位掌控。



实战Practice丨民生银行互联网服务灰度发布的应用实践

欢迎金融科技工作者积极投稿!

各抒己见!

实战Practice丨民生银行互联网服务灰度发布的应用实践





实战Practice丨民生银行互联网服务灰度发布的应用实践






《金融电子化》新媒体部

主任 / 邝源   编辑 / 潘婧