《灰度发布探索与实践.docx》由会员分享,可在线阅读,更多相关《灰度发布探索与实践.docx(8页珍藏版)》请在优知文库上搜索。
1、随着智能终端及移动通信技术的快速发展,消费互联网已经渗透到社会生活的各个领域,人们对产品服务的要求也越来越高。一方面,银行在“互联网+”生态中扮演着越来越重要的角色,各行业对银行也提出了更高的服务标准和要求;另一方面,银行在从集中式架构向分布式架构转型的过程中,IT系统规模持续增长,系统架构、关联依赖关系日益复杂,如果版本存在缺陷,采用传统的版本发布模式将会直接影响到全部用户。针对以上情况,为控制生产风险,确保金融稳定,工商银行通过版本灰度发布模式,将版本缺陷影响控制在有限的范围内,同时,结合业界实践经验及自身的企业环境,构建了适宜的灰度发布体系。一、业界现状为了控制版本缺陷的业务影响范围,业
2、界普遍采用渐进式的发布过程,灰度版本的对客范围通常是一个逐步扩大的过程,如白名单用户一企业集团内部用户一生产特定用户一全量用户。通过阶梯扩大试点用户范围的方式,实现了对新版本质量的全方位验证,同时将验证过程中发现的问题控制在较小的范围内并快速响应,及时完成版本的修复或回退。根据不同的应用部署模式可灵活实现对版本发布范围的控制。业界主要通过以下几种部署方式实现应用新版本的灰度发布。1.金丝雀部署金丝雀部署是指先更新一小部分(如2%)服务器,然后对应用系统进行测试验证。如果验证通过,则继续更新剩余部分的服务器版本,否则进行版本回滚。金丝雀部署的优势是影响面小,出现问题时只会影响很小一部分用户,适合
3、对新功能信心不足或对服务可用性要求比较高的场景。2 .滚动部署滚动部署更像是金丝雀部署的增强版,在新版本经过灰度验证之后,逐渐增大灰度部署的范围,直到全部服务器都更新到新版本,在部署过程中需要支持平滑切换。滚动部署通常是分批次的,比如第一批为10%,第二批为30%,第三批为100%。与金丝雀部署相比,滚动部署需要自动化部署工具以及完善的路由机制支持,以保证用户体验足够平滑,发布和回滚时间也会更长。3 .蓝绿部署蓝绿部署是指同时维护两套规格相同的生产环境一一蓝色环境和绿色环境,而生产上只有一个环境负责提供完整的服务,另一个环境则处于完全空闲状态。当部署新版本服务时,首先在空闲环境进行部署和验证,
4、当验证通过后,再通过操作路由将客户端流量切换至新版本环境,而原先的环境则变为空闲环境,依次循环交替。二、工商银行灰度发布体系建设根据近两年灰度发布领域的探索与实践,工商银行结合行内应用架构现状及业界版本部署模式,形成了适合于自身系统的灰度发布体系,为版本发布质量保驾护航。工商银行的灰度发布体系主要从标准化规范、标准化管理流程、自动化工具等方面进行建设。1 .灰度发布规范工商银行主要从两个方面对灰度发布规范进行建设,包括应用系统在设计、运维等研发阶段中实施灰度发布需遵循的技术规范和最佳实践指引。灰度发布技术规范方面,一是明确了灰度发布的基本原则,根据应用的实际情况建立对应的灰度发布目标,实施与目
5、标相对应的灰度发布模型;二是在进行灰度发布设计时,针对应用的灰度用户策略设计、灰度流量引流设计及灰度发布过程的设计进行较为明确的规定,确保应用设计符合开发规范,提升灰度实施效果;三是在灰度实施过程中,对灰度验证、灰度回退及上下游关联等场景进行明确规范,实现了灰度发布全生命周期的闭环管理。灰度发布最佳实践指引方面,一是以单独“端”的维度进行架构设计指引,如前端客户端App、后端应用服务器、数据库服务器;二是从灰度交易全流程的维度提供架构设计参考,如全交易链路灰度发布、灰度发布自动化设计等。工商银行通过典型的灰度发布架构设计,有效降低了各应用系统实施灰度发布的成本,提升了灰度设计标准化程度。2 .
6、灰度发布管理制度灰度发布的实施贯穿于整个项目周期,从需求制定到灰度版本正式对外提供服务,各项目阶段均涉及项目角色的管理工作。针对以上情况,工商银行结合行内研发管理制度及灰度发布工作的具体要求,制定了独立的灰度发布管理制度,从研发管理的角度对灰度发布工作进行了明确的分工,并提出了相应的要求。3 .灰度发布支撑系统灰度发布工作涉及的角色多、流程复杂,相关支撑系统的能力决定了灰度发布实施工作的最终效果及实施效率。工商银行根据服务对象的不同,主要建设了两类系统,用以灰度发布的实施:一是灰度发布实施的过程管控系统,从灰度发布需求拆分、灰度策略的资产设计到新版本灰度流量爬坡验证、灰度版本全面对客等均实现了
7、应用灰度发布资产的线上化管理;二是应用灰度发布系统,为全流程的版本发布提供系统支持,涉及版本研发、版本交付及版本灰度发布的全流程自动化的灰度发布流水线,可提升版本交付效率和发布效率,降低应用运维的差错率。(1)灰度发布线上管控系统在需求研发阶段,灰度发布线上管控系统可对需求进行灰度标识,并在系统内进行标识传递,贯穿于开发、生产的全流程,最终将标识携带至版本灰度上线,有效解决了跨地域、跨部门的信息孤岛问题,提高了多地研发岗位间的沟通效率。(2)应用灰度发布系统应用灰度发布系统依托开发者门户、构建云、一体化灰度发布流水线及智能验证平台等一系列DevOps流水线工具的建设,从灰度版本的研发测试到灰度
8、版本全面对客均实现了高度自动化的灰度发布,使业务交付能力上了一个新台阶。开发者门户作为开发团队的一站式研发协同平台,对各研发管理工具进行有效的整合、集成、创新,实现从项目管理到版本发布的一站式、可回溯、自动化处理,通过自动化的流程和强制执行的质量门禁,实现质量和效率的双重保障,提升研发效能;通过平台界面化设置,实现高效的应用版本分支管理和灰度发布分支管理。代码提交后,自动触发提交构建流水线,进行单元测试案例执行、SOnar扫描、覆盖率统计、门禁准入控制等。流水线运行正常并符合门禁标准,开发者门户将本次提交的代码合并到发布分支管理。通过与其他平台联动实现灰度版本的交付及部署能力,为开发者提供统一
9、的管理入口。开发者门户架构如图1所示。图1开发者门户架构构建云针对构建脚本重复使用率低、版本制作人员仍需各自编写构建脚本等问题,将应用构建过程进行模块拆分,并制作独立模块的标准构建镜像,由应用根据自身情况自由组装,从而实现整个应用版本的制作,面向用户提供标准化的构建服务。目前,构建云己支持多种类型技术栈应用的构建。一体化灰度发布流水线主要涉及灰度版本投产及验证、灰度试点范围调整、灰度版本转正及验证等阶段。工商银行秉持延长持续交付流水线的思路,将上述阶段工作整合到版本投产流水线,使版本投产的流水线从投产日延展到灰转正日,实现了从灰度版本投产到灰度版本全面对客的全流程自动化(如图2所示)。(二)图
10、2一体化灰度发布流水线流程智能验证平台是实现自动化灰度发布的关键因素。结合分布式配置中心的灰度策略调整,可实现灰度版本的全面的自动化验证,打通DeVOPS流水线最后的灰度发布流程。目前,智能验证平台已支持日志验证、数据库验证、服务化验证、接口验证、文件验证、批量作业验证及配置中心验证等多种验证类型。三、灰度发布体系未来展望目前,工商银行灰度发布体系建设己基本完成,在版本风险控制、确保金融稳定等方面发挥着重要作用。随着智慧银行生态建设工程(ECoS)的持续建设,工商银行的业务产品及信息系统已驶入高速迭代的快车道,这对灰度发布能力提出了更高的要求。未来,工商银行将在灰度发布设计过程中不断提升标准化
11、、自动化程度,进一步依托现有的灰度发布机制,开展业务功能探索,提升各业务系统的客户体验。1 .灰度发布标准化实施随着下主机工程的不断深入及DevOps工作的持续推进,工商银行将基于持续交付标准化工作,建立“发布单元+服务环境”分层部署机制,通过“发布单元”部署层,支撑用户使用简单的结构化描述定义部署;通过“服务环境”部署层,实现对灰度发布、多批次发布等场景的支持。针对己经实现灰度发布机制的系统,工商银行将依据持续交付标准化要求,逐步完成灰度发布标准化改造。2 .完善灰度发布平台能力工商银行灰度发布平台已具备一定的管理能力,但在灰度发布效果评估、灰度监控、灰度大盘展示等方面与业界成熟的企业相比还有一定的提升空间。后续,工商银行将参考业界实践经验,结合行内己建设的相关灰度发布支撑系统,构建企业级、高效自动化的灰度发布管理平台。3 .提升业务创新能力工商银行拥有完整的互联网金融产品体系和深厚的用户基础,目前灰度发布机制已经在互联网金融系统广泛使用并有效支撑着业务需求的快速迭代。基于完备的灰度发布体系,工商银行将进一步在用户体验和业务创新方面进行有益的探索尝试,如通过ABTeSt等方式,获取互联网用户对于新业务功能的认可情况,协同业务部门共同提升用户体验。