以科技为驱动,苏宁金融的DevOps度量设计思考
2020-04-13曹立龙顾黄亮
曹立龙 顾黄亮
前言
苏宁金融的FinTech实践概述
以云计算、人工智能、生物特征识别、物联网、区块链为代表的新兴技术正在重塑金融行业服务生态和竞争模式,金融科技正成为未来全球金融竞争的制高点;随着金融行业信息化、数字化和智能化的进程不断加快,数字金融的时代已经加速到来;金融即场景、金融即服务,金融即科技,金融不再是物理的网点,而是随时随地获取的服务。
自成立以来,苏宁金融始终把自己定位为一家以O2O融合发展为特色的金融科技公司,苏宁金融始终坚持并践行“场景金融+金融科技=普惠金融”的发展模式,聚焦消费金融、供应链金融、微商金融、支付、财富管理和金融科技输出“5+1”核心业务。近年来,持续推进“金融+科技”“金融+生态”战略,科技研发实力大幅提升,科技类人才占比已超60%,在数据风控、区块链、物联网、金融AI、金融云、生物特征识别等多个科技创新领域达到全国领先水平。
基于丰富的生态资源和业务场景,苏宁金融持续深耕、加大研发领先科技,通过科技全面赋能金融主业,降本增效、强化风控。且在金融科技创新成果转化与应用方面,苏宁金融也走在行业前面,已全方位赋能银行、保险、资产管理等核心金融业务,进一步提升核心竞争力。与此同时,还加大金融科技对外开放与输出,赋能行业和中小微企业,共建金融科技生态圈。
苏宁金融实施DevOps度量的背景
作为一家定位为金融科技公司的金融企业,对IT能力必然会提出更高的要求,对 IT部门更是一个巨大的挑战。更多、更快、更简单的服务渠道能力;更优越、更具有创新的用户体验无时无刻都在考验苏宁金融IT部门的敏捷交付和精益运行的能力,从根本上提升IT的生产效率,加速部门、企业的业务创新能力。而DevOps已然突破了互联网企业的阵地,悄然"入侵"了金融行业的领域。从国外相关统计数据來看,金融企业对于DevOps的接受程度比互联网企业还要广,目前国内部分大型银行也已经实现了DevOps的落地,诸多中小金融机构也已经在路上。近两年来,超过10家头部金融企业如中国银行、招商银行、工商银行、华泰证券均通过了《研发运营一体化(DevOps)能力成熟度模型》三级评估。
通过这些经典案例,我们不难看出,DevOps加速了软件产品的版本交付和部署,实现端到端的持续交付,以流程驱动的方式打通端到端的交付通道。苏宁消费金融(苏宁金三融三大板块之一)在践行DevOps的过程中,发现对于交付服务重要组成部分,交付全链路数据,还采取断点的、无序的、度量性较差的传统方式,缺乏配套的全链路数据采集、管理、汇聚和输出,将导致项目交付过程中的管控和交付后的评价缺乏科学、客观的可度量数据和度量体系,进而由流程驱动在积累一段时间后不能快速地推进至流程和数据双驱动的模式。
建立健全的度量体系的需求在DevOps领域具有普遍性,有助于在更大范围内快速实现可度量的价值交付,拓展了业界的DevOps适用范围,有助于更好提升组织级的质量和效率。在正文之前,先谈一下IT运维数据的发展历程和DevOps落地的几种方式,以及各个窗口期运维数据的输出方式。
根据《企业IT运维发展白皮书》所述,IT运维技术可以从自动化运维能力、平台化运维能力、数据化运维能力和智能化运维能力四个层次进行阶段性落地尝试,这四个阶段恰好凸显了运维数据在不同阶段对运维工具的纳管能力、数据的采集、数据的聚合、数据的计算、数据的链路构建、数据的输出、数据的驱动。从交付的层面来说,价值交付的各个节点大致分为如下,版本、产品需求、资源、研发、测试、运维、项目投产、项目后评价,仅有两个角色是贯穿始终的,那就是运维和项目管控,而这两个角色分别需要解决数据的管理和数据的度量。
DevOps落地的方式大致有四种,如下图所示,(1) 以项目周期数据为基准的;(2) 以资源数据为基准的;(3) 以交付数据为基准的;(4) 以监控数据为基准的。在这四种方式中,各窗口期的运维数据输出方式各不相同,以1、3为例,度量的手段囊括了资产、资源、版本质量、组织效率、工程环境,以2、4为例,更多的体现在项目的后评价、成本化复盘方面。
苏宁金融在DevOps度量设计的思考
度量如何做,如何通过度量来进行过程和结果的管控,如何通过度量来优化现有流程,笔者认为遵循以下几点步骤。1、归集度量数据指标;2、度量数据指标拆解;3、确定度量数据维度;4、构建DevOps全链路度量体系。
1、归集度量数据指标
在DevOps方法论的论述中,构建一个度量指标体系,首先需要根据DevOps落地的方式来了解DevOps的相关指标都有什么。在这之前需要明确一个观点,任何度量的终极目标都是为了更好管理和更有针对性的优化,从而使DevOps价值最大化。接下来就以项目生命周期管理流程为例来归集所有数据指标,下图为苏宁消费金融以项目生命周期为基准的流水线,以此为例。
(1) 基于项目生命周期管理的终极目标在于交付的价值和投入产出比的最大化。所以体现在数据指标上,最直接的两个指标就是过程管理和项目后评价,其中过程管理又分为两个大类,分别为工程效率和人员能效。而项目后评价则侧重于项目达成和资源投入,具体的在指标分解中体现。
(2) 任何项目或者产品的上线都会有生命周期,即项目版本确定到项目上线的一个过程。而这个过程是可以分成多个阶段的。只要我们思考清楚如何使每个阶段又快又好地达成终极目标,我们就可以归集出整个周期内所需要的大部分数据。项目生命周期管理按顺序可以分为五大阶段:
(3) 软件产品投产阶段是产品生命周期中的重要阶段,主要由两方面构成,产品的交付运维和产品的运营,因此产品投产阶段的质量决定着产品最大盈利的周期和产品的寿命。所以我们要做的工作就是使能够调度的资源尽最大可能性的进入这个阶段。在产品经理的眼中,也希望产品生命周期是这样演变的。
(4) 项目后评价阶段是进行成本复盘的重要阶段,是判断人力资源、软硬件资源的投入和产品运营后的产出对比,也是判断项目或产品的成功与否,更是从较高的视野来进行项目和产品优化的重要手段。
2、度量数据指标拆解
归集完所涉及的指标后,会发现指标很多。但是在具体的度量中,可能不同阶段重点关注的指标不一样。例如需求阶段关注需求的吞吐量和需求总数,研发阶段更关注研发效率和研发质量。所以对于不同的交付阶段,我们需要挑选出该阶段的核心指标,然后进行拆解,再根据拆解的指标去重点关注。
(1) 在度量数据指标拆解之前,说一下流程驱动和数据驱动的区别。流程驱动更类似于ITIL(IT服务流程),分别有问题管理、事件管理、变更管理、业务连续性管理等指标。而数据驱动更关注以结果为导向的指标,可优化可回溯的特性较为明显,即交付价值。在流程驱动的过程中,我们会发现有一个严重的问题需要我们去解决,那就是为了完成流程驱动,有可能实现的执行手段和目标所达成的愿景是相悖的,这也是流程驱动转变至数据驱动,或者说流程和数据的双轨驱动的需求。
简单的总结一下,流程驱动让你在正确的道路上往前走,而数据驱动是持续地确保你往正确的道路上走。而提升组织级的效率和质量,你需要整体性的优化,当你进行度量指标拆解的时候,你需要关注两个问题,①为什么需要这个指标;②从这些指标中,你能够获得什么。
(2) 同样拿苏宁消费金融项目生命周期为基准的流水线举例,进行指标拆解:
项目指标:项目进度、项目工时、项目质量;
需求指标:需求总数、各状态的需求总数、当前的需求完成情况、各业务方的需求总数、需求吞吐率;
版本指标:版本数量、分支数量、仓库数量、代码提交数、代码提交频率;
团队指标:团队情况、人员情况、任务分解情况、团队所管理系统情况、团队承接需求情况、团队承接任务情况;
资源指标:工程环境数量、系统分配资源情况、团队分配资源情况、人员分配资源情况、资源可用数据、资源使用数据、资源性能数据;
构建指标:构建次数、构建频率、构建时长、构建成功率;
质量指标:坏味道数量、阻塞数量、代码行数、代码重复率、代码问题数、单元测试用例数、单元测试覆盖率、单元测试执行结果、自动化测试用例数、自动化测试成功率、手动测试用例数、BUG数量、团队BUG数量、人员BUG数量、BUG修复时长、千行代码BUG数;
环境指标:环境变更时长、环境变更评率、环境不可用时长、工程环境数量;
部署指标:部署次数、部署时长、变更时长、部署成功率、总体变更成功率、一次变更成功率;
监控指标:监控覆盖率、监控送达率、监控准确率、线上问题统计、线上问题恢复时长;
项目后评价指标:以产品运营核心指标为准 ,如PV\UV、行为、转化率、利润。
3、确定度量数据维度
在确定度量数据维度之前,介绍下业内两种常用的方式:数字维度,类型维度。
软件是数字化的事物,根据度量维度的不同,涵盖相应的指标类型分别有:
可具体的;
可度量的;
可实现的;
现实性的;
有时限的。
而具体的实施有几种方式:① 计数实施,统计度量指标的数量、度量任务的数量、偏差的数量;
② 测量测算,统计状态的数据信息,如区间内递增值和递减值;
③ 数据分布,统计数据的分布情况,如最大值、最小值、平均值、中位数、百分比;
④计时,统计单位时间内的消耗时间和分布情况。
按类型维度,可分为时间维度,如秒、分、时、天、周、月、年;按组织架构,如A团队、B团队、C团队;按渠道,如A渠道、B渠道、C渠道;按系统类型,如公众号、官网、APP、IOS。
在进行度量数据维度考核的时候,会有一些难点需要考虑。① 度量的难点;② 度量的误区;③ 度量指标不能动态调整。
① 度量的难点,主要集中在度量的可视化不够健全、工作切分的随意性、敏捷交付过程中存在多项目的并行;
② 度量的误区,主要集中在过度考核虚荣性指标,如日均代码量,局部单元测试覆盖率,工时统计等等,当虚荣性指标成为核心度量指标,那就是灾难的开始。
③ 度量指标不能动态调整,随着团队的效能提升,指标也随之调整,否则将使团队的效能停滞不前。
确定度量指标维度有四个原则,分别是:
① 全局指标和局部指标的关系,过度对局部指标进行优化可能使全局劣势,因此要提升全局指标的达成率为目标。
② 定量指標和定性指标的关系,尽量使用量化指标的客观评价,让流程驱动尽快延伸至数据驱动。
③ 团队指标和个人指标的关系,指标的设定是促进团队协作,提升组织级的能效和质量,不能因个人指标的关系造成团队和谐。
④ 结果指标和过程指标的关系,通过结果指标来评估结果,通过过程指标来优化改进,二者不是简单的包含和被包含的关系。
4、构建DevOps全链路度量体系
对于流程和数据双轨驱动的DevOps,打造和构建全链路的度量体系,通过自动化部署流水线有效提高软件交付的效率,通过质量内建确保软件交付的质量,通过对过程性数据的持续收集和分析发现交付过程中存在的瓶颈,通过对软件产品和用户的线上数据获取反馈并且及时作出调整,通过结果性数据去评价团队的成效。
建立DevOps价值服务输出模型
实施DevOps的高层目标是通过提高IT的柔性,实现研发运维的一体化和流水线,最终实现敏捷交付,快速交付,最终通过科技能力实现公司的业务战略目标,这是根本,不是为DevOps而DevOps,科技没有噱头,所有的工具,流程变革都是围绕“低投入,高产出”的核心价值。
在执行层面,我们希望通过DevOps的实施,对所有的科技活动进行度量,进而建立科技大数据平台和决策分析平台,建立科技的“数据驾驶仓”和“指挥官体系”,通过数据化分析,找出短板,进行科技资源和科技流程的优化调配,科技人员的技能提升和绩效考核。下图是我们DevOps价值服务输出的模型图
路漫漫其修远兮,通过科技服务能力的不断提升,为公司发展不断赋能是我们永远努力的方向,希望这点微薄经验能对同行有所帮助!
作者简介
曹立龙:具有17年以上的金融科技规划、管理和研发运维经验。在移动互联网、大数据、人工智能、容器云、微服务、分布式、绿色机房、AI运维等方面有较多实践,多次获得人民银行科技发展奖,带领科技团队获得上百项软件著作权、几十项专利申请。目前担任苏宁消费金融CIO,領导产品规划,科技研发,安全运维和客户服务团队,承担公司数字化科技战略规划及落地工作。
顾黄亮:10年研发运维经验,涵盖基础架构、应用架构、数据库、DevOps,有互联网,电商,金融从业经历。专注于 DevOps 在企业中的应用和落地,致力于企业智慧运维体系的打造。参加多个行业、国家标准的编写,《开源许可证使用指南(2018)》作者之一,国标《研发运营一体化(DevOps)能力成熟度模型》作者之一,《企业IT运维发展白皮书》作者之一,现任苏宁消费金融安全运维部负责人。