含ppt下载|支付宝是怎么炼成的?蚂蚁金融级研发效能实践解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
日志服务 SLS,月写入数据量 50GB 1个月
简介: 蚂蚁金融级研发效能实践解析

蚂蚁金服开展的“共战‘疫情’,技术破局”数字课堂线上直播近期火热上线。我们将系列演讲整理并发布在 “蚂蚁金服科技” 微信公众号上,欢迎关注。 

今天的整理来自SOFA-LinkE研发效能平台的吕中邦,为大家分享蚂蚁金融级研发效能实践解析,以下为演讲整理全文:

大家好,我是来自蚂蚁金服研发效能部的解决方案架构师吕中邦,很高兴今天和大家做交流分享。最近SOFAStack在阿里云商业化发布,借着这股东风今天给大家带来研发效能相关的内容,题目叫做《蚂蚁金融级研发效能实践解析》,介绍如何基于 SOFAStack研发效能平台来开展持续交付和稳妥创新兼顾的持续交付、风险防控及质量保障的最佳实践,来赋能金融产品高可用和研发效能的持续提升。

今天的分享分四个部分,首先我们看看行业的当前背景和主要挑战,然后分享蚂蚁金服在研发效能领域的最佳实践,最后介绍支撑这些最佳实践落地的平台产品,以及我们提供的在研发效能领域的解决方案。

背景与挑战

进入第一部分,简单介绍一下蚂蚁现在的业务现状,首先看到的是大家熟知的业务,比如说花呗,借呗、芝麻分这些东西。下面是支撑这些业务的实践能力,比如说包括风控、反套现、精算这些。看到这个场景,大家很容易就知道蚂蚁是做金融的,不仅是做金融而且是互联网金融。提到互联网金融,具体到研发效能领域,我们把它归结到两个关键词:一方面需要保障资金、安全、高可用,我们把第一个关键词定义成“稳”,稳妥的稳;另外一个方面互联网是一个VUCA的时代,最直接的要求就是速度,快速的交付产品价值,支持业务的快速创新,我们把第二个关键词定义成“快”,快速的快。不仅要稳,而且要快,看似矛盾的两个方面缺一不可。

基于这样的业务形态,蚂蚁在研发效能领域做的怎么样,几个数据报告给大家。首先,我们有近万名研发工程师,应用系统的规模有数千个,每天提交的代码行有数百万级,每天有200多次的应用发布,代码从提交到发布的平均周期6.2天,线上服务的可用率达到了99.99%,所有这一切都是基于SOFAStack研发效能平台LinkE来来支撑和实现的。

看完蚂蚁,我们再看看整个金融行业,金融行业做研发效能和DevOps,有哪些共同的挑战?我们总结下来四个方面:

第一,管理者认知方面的挑战。很多中小机构的管理者,对研发效能的认知是严重不足的,不会把这些东西纳入到紧急重要的日程事项中去。所以说就需要在意识上给他们做破冰。

第二,团队协作,典型的重业务、轻it,业务主导性特别强。需求就一句话,随意变更,这都是常态。然后研发运维各自为政,彼此之间的协作多基于文档,整体沟通和协作的效率是非常低下的。

第三,技术人员的能力参差不齐,导致交付质量千差万别。包括技术栈各种各样、外包难于管理,所有这些东西都影响交付的质量和效率。

第四,就是体系规范和工具方面,整个IT的基础管理规范和标准文件都比较老比较重,执行依赖于人肉,落地就比较困难,更不用提数据积累了,整体缺少自动化方面的全局的建设,整个DevOps工具链是比较初级的。

那么要解决这些我们刚才提到的内部和外部的挑战和问题,蚂蚁金服也给出了自己的一些解法和答案,赋能伙伴最终实现又快又稳的持续交付。微观上,我们希望我们的方案能够尽量自动化减少人肉,提升研发同学的幸福感,让研发过程丝般顺滑。宏观上可以提升团队的研发,持续交付的效能,进而赋能企业去升级组织效能。其中,最重要的还是把我们蚂蚁金服这么多年在这个领域积累下来的经验和最佳实践,对外提供赋能使其价值。

研发效能实践

接下来我们就分享蚂蚁在研发效能领域里具体的实践,我们将按照软件生命周期的逻辑来进行讲解。

需求项管

经过不断的实践,蚂蚁金服自己也沉淀出了一套敏捷研发实践的框架。第一个就是文化引领,面向一线的研发团队进行敏捷文化的培训,让团队成员能够理解敏捷的基本理念和指导思想。第二个是实践落地方面,是一个逐步演化的过程,团队范畴到项目范畴,以价值交付为最终目标,然后通过不断的迭代,实现持续集成、持续交付。在整个过程里边又不断的去收集数据,做统计分析,建立数据模型,从而形成适合团队及项目的可视化的度量指标,持续的反馈到这个项目的迭代中去, 从而形成统一的节奏、统一的心跳,缩短和消除项目组内不同团队间的等待和浪费。在不断的实践过程中,蚂蚁也沉淀了大量的最佳案例、最佳实践,可以逐步的对外输出,来帮助到伙伴和客户。

刚刚谈的是偏方法论的,具体到敏捷项目管理的实践。首先看看在蚂蚁项目是如何组织的,在我们内部按照项目的规模我们有不同的叫法,比如说战役、战场这些概念,但无论是怎么样的规模,都涉及到三个核心的角色:PD产品经理、PM项目经理、技术架构师,我们叫做项目的三驾马车,所有工作都围绕这三个关键角色来展开。在项目的执行过程中,我们引入了SCRUM一些管理实践,需求和迭代的进展通过电子看板能够清晰的展示出来,使得敏捷所倡导的原则和理念能够得到比较好的落地。

这里边我们分享三点:

第一,敏捷是贯穿软件研发全生命周期的。敏捷不是说越重越好,适合的才是好的,我们称之为轻量级的敏捷实践。

第二,平台覆盖项目协作的全部领域,项目集、工作项、冲刺、里程碑、风险这些领域都能实现很好的管理。

第三,利用高效灵活的可视化看板,来提高整个项目的透明度,从而激发整个团队及组织的热情和文化。

我们通过平台也固化了一套比较有特色的迭代研发的模型。它通过发布、迭代、应用、流水线四层模型对研发过程进行有效的管控:

流水线维度,我们具备PUSH、MR、手动等多种触发模式;流水线的所有的组件和节点,可编排、可扩展。然后应用层面,我们的所有研发活动都是按应用去组织和推进的,包括质量的门禁和阶段的卡点,都是应用维度进行管控。在一个研发迭代中我们可以管理多个应用,一个发布窗口又可以管理和发布多个迭代,从而实现从微观到宏观,多个维度的、立体的项目协作和管控。

持续集成

那么接下来是持续集成环节,首先给大家介绍的是统一的应用元数据管理。在蚂蚁我们有5000多应用,规模非常之大,而且支撑的业务也各不相同。我们给应用做了分级定义,主要是从服务依赖、交易/资金量以及每天的PV UV这些维度对应用进行分级,并在平台中进行统一管理。第一个好处,所有的应用以及架构一盘棋,组织层面可看到全貌,为整个架构的规划以及架构的治理,提供比较好的输入以及基础;第二个好处,每个架构域每个应用的技术负责人、质量负责人、运维负责人等角色一清二楚,有利于在项目中进行协作;第三个好处是应用的属性,通过应用分级和应用属性,为精益研发流程定制提供依据,做到研发流程的千人千面,每个应用都可以定制自己的个性化的研发流程。

除了应用原数据的统一管理,我们还提到配置统一管理,这里边配置就包括环境的配置、中间件的配置、CI配置、技术栈软件配置等。蚂蚁研发效能平台可以按照不同的环境,对所有的配置项进行集中管理,在研发迭代推进的过程里边,还可以实现配置项在不同环境间的自动转化和生效,这样就避免了研发同学频繁访问配置项控制台进行人肉配置,提效的同时避免人肉错误。

接下来介绍代码质量内建,其实代码质量在整个研发过程里边是非常关键的一环,我们鼓励第一时间就把代码写好写正确,或者在第一时间就发现和修复错误。

首先我们看代码的质量标准。事实上在蚂蚁的研发效能平台上边做开发,质量标准是可以按照这种应用维度去做配置的。每个应用都可以根据应用的分级、业务需要去配置不同质量标准。在质量标准里边,我们沉淀的一套成熟的质量分模型,将代码扫描、单元/接口自动化的通过率覆盖率,还有一些其他的质量指标,纳入质量分统一管控,进而可以比较直观地评价一个应用当前的质量情况。

其次是代码扫描,阿里的 Java开发规约大家都耳熟能详,在这个基础之上,蚂蚁也沉淀了一些自己的开发规约,强强互补,通过IDE以及Pipeline两个端去执行,确保第一时间能快速的发现问题和解决问题。

然后是代码评审,代码评审是整个开发过程里边非常有价值的工作,他不仅能够帮助我们提高代码质量,而且对整个团队人员的学习培养,团队建设都非常有帮助。在蚂蚁的研发效能平台里边,我们的功能也是非常有特色,实现了与Pipeline流水线有效集成的可多人协作的高效代码评审。

接下来是自动化白盒测试。这边指的就是单元自动化和接口自动化。外部客户交流中发现,很多中小企业由于研发或者测试团队的能力限制,不能够高效的去准备自动化测试脚本,所以我们也提供了一个测试脚本的辅助生成工具。测试脚本可以通过效能平台的流水线自动触发执行和收集测试结果。每次执行完流水线之后,都会实时更新应用的质量数据。质量如果不达标的情况下推进迭代,我们还有配套的质量加签的审批流程,上述全是围绕着代码质量所进行的实践。

接下来我们给大家介绍我们的Pipeline流水线,以下是平台运营的实际截图。截图上边开发阶段、集成阶段、预发阶段、发布阶段,我们叫它迭代模板,这些迭代模板都是可以按需进行定制的。在蚂蚁我们鼓励基于GitFlow的最佳实践,通过MR而不是PUSH的方式,向项目分支和主干提交代码,这样的话给代码门禁和流水线检测提供一个机会。事实上我们流水线的Pipeline的所有节点和组件都是可编排的、可扩展的。可扩展的意思是说,业务可以根据自己的需要,把自己自建的一些测试工具、质量工具,封装成标准组件,接入到整个Pipeline流水线中来。这样的话每执行完一个组件平台都会实时的反馈结果,并更新迭代的应用的质量看板,帮助开发测试同学来管理质量风险。

在流水线的执行过程中和研发推进过程里边会产生大量的日志,为了帮助同学们快速的通过日志来定位到问题,节约同学们在定位解决问题上的时间成本,我们针对性的开发了日志诊断服务系统,为用户提供一个统一的日志查看界面,减少不必要的信息的干扰。同时我们通过这些异常问题的知识库,对常见的一些问题提供精准的定位和解决方案的推荐,提高开发同学的研发效率。

当每个流水线组建执行之后,那么应用的质量看板会实时的更新,这里边我们也做了一个截图,比如说质量分, PMD安全问题,还包括测试的通过率、覆盖率,除此之外,我们还提供一些代码行接口、注释率、重复度等基本的统计信息。每次代码变更,我们都能够看到整个质量分,包括质量数据的更新变化情况,做一个很好的追溯。

此外我们还提供流程审批的能力,在实际的项目研发过程里边,我们鼓励自动化,但很多时候必要的人肉介入又不可避免。比如说技术风险评估、发布、评审这些场景,就需要专家介入去评估一些风险。所以灵活可配置的这种流程审批就非常有用了。

持续部署

接下来我们介绍持续部署,其实部署这边主要分两块,首先是线下环境的自动部署,我们平台通过和 SOFAStack的运维管理相关模块的无缝集成,提供了自动部署的能力。它也是以流水线组件的方式执行,需要查看详情就直接跳转都能够看到整个部署的日志以及结果。

然后是一键提交生产发布。对于金融机构来讲的话,监管对线上和线下隔离这一块有明确的要求,所以线下我们支持自动部署,线上的话我们提供这种一键提交生产发布的能力,自动推送发布单并同步查询发布单的状态,这样有发布权限的同学就可以登录到生产环境去执行发布了。在这个过程里边,我们通过网络白名单、open API接口级别的权限控制这些技术手段,来确保线上和线下是真正有效隔离的。

接下来分享一下发布策略,这里边提到一个概念变更三板斧,这个也是我们蚂蚁内部技术风险条例的核心思想,所有的应用研发的底线要求。变更三板斧大概三个方面,一个叫可灰度,要求应用发布过程确保变更的影响程度,影响面是可控的,又可以快速地应急,具体策略包括灰度,分组,Beta,蓝绿这些。第二个叫做可监控。在应用上线之前要进行日志的埋点,监控的配置不仅要有,而且需要确保监控的准确性,直观性,进而保证整个变更的过程都是可监控的。第三个叫可应急,随时暂停回滚,任何变更都有据可查。其实针对变更三板斧,容器应用服务上面有很好的实践,比如说包括分组的灰度发布、无损升级,可适配多种设计工作负载,这些能够很好的贯彻变更三板斧的思想。

测试验证

接下来进入测试验证部分,首先是分层测试的能力,我们主要谈两个方面。首先就是测试环境、环境策略,从开发到集成、预发、灰度,我们的环境一步步的去接近和模拟生产环境,确保生产发布最后是没有问题的。其次就是分层自动化测试验证能力,我们将单元自动化、接口自动化,结合研发效能平台,灵活的通过Pipeline流水线的组件去执行,统一赋能给全蚂蚁的研发团队。

针对外部很多机构在自动化测试脚本的编码方面有很大的能力和效率上的痛点,我们提供了测试脚本辅助生成的ACTS测试框架。基于数据模型驱动测试引擎执行,适配TestNG+Spring的测试上下文环境,以yaml为数据载体,实现了这种一站式的编辑、精细化的校验和高效的用例管理,能够有效的提升这种测试脚本的效率。

前面提的,无论是单元自动化还是接口自动化,都是应用及系统级别的测试。那么端到端的话一般都更带有业务属性,全链路的测试。蚂蚁经过这么多年在分布式架构工程测试领域的积累,沉淀了这种根据业务场景自适应加载测试流程,动态编排,精细化校验的金融级的端到端的测试能力,它又轻量又标准,帮助研发测试团队提升业务测试效率和质量保障能力。

产品支撑

在蚂蚁金服开展这么多的研发效能的工程实践,那么我们的平台是如何来支撑的?首先是 SOFAStack-LinkE的公共云的产品大图,上面是支撑的业务以及交付的价值,我们重点介绍中间产品层,目前我们提供了两个组件,一个是项目协作,主要就是包括需求、项目、冲刺和工作项的管理。然后第二个组件就是持续交付,从编码到测试、到部署、到发布,整个端到端的支撑,下边有配套的代码服务,持续集成、持续部署、测试服务的这些组件。

那么,我们把SOFA-LinkE的产品能力做一个总结,大体七个方面:项目协作、代码服务、持续交付、代码分析、测试服务、流程审批、环境管理。

SOFA-LinkE研发效能平台,主要输出这四块的产品价值:

就平台产品特色而言,主要体现在三个方面:可扩展、可编排、多样化。可扩展主要指的是Pipline流水线的组件是支持自定义的;可编排体现在研发迭代流程及流水线,可根据业务需要对其进行配置;多样化支撑多种分支策略,多种技术栈,经典与云原生架构的双模支持。

在多样化的分支发布策略方面,我们内部大概有是这四种玩法,一种叫日常发布,其实就是全站的窗口发布,主要适用于全站的这种核心链路上的业务应用,之间有一定的关联和耦合,每周发布一次。事实上现在我们日常发布已经消除了。第二个叫独立发布,主要场景在独立业务域里应用之间有一定的耦合度,但是更多的是为了管控的需要,把一些应用集中放在一个窗口去发。第三个叫单应用发布,相关应用业务独立性强、架构层面完全解耦,单应用想怎么走就怎么走,想什么时候发就什么时候发。前三种都是我们标准的分支策略叫分支开发主干。第四种是紧急发布,主要是为了响应紧急业务需求或者是修复线上的故障,通常是分支开发分支发布的模式。那么通过这四种模式,蚂蚁所有的业务场景基本上都能满足,你想怎么玩都能够覆盖到。

接下来我们谈到云原生,随着蚂蚁金服对云原生理念的理解越来越深,我们相信未来的金融级应用场景都会往这种极致的弹性和混合云方向去发展。所以我们的架构也一直在不断的演进,去拥抱云原生。向云原生新型技术转变的过程里边,不同场景的应用很难一步到位,所以为了满足这种业务的需要,我们同步的去支持经典的研发模式以及云原生的研发模式。在云原生的改造中,老业务、新老业务并存过渡,通过统一的研发平台,同时支持基于虚拟机和容器的双模持续交付,助力于整个架构的稳妥的演进和迁移。

金融行业本身受到严格的监管,蚂蚁在满足监管以及行业规范的领域里也积累了一套做法,并在我们的研发效能平台上将这些经验进行了沉淀。通过有效的技术手段去满足监管合规的要求,形成了金融级的技术风险的防控手段,把它内化到研发项目平台里面去了,能够帮助咱们企业在数字化转型的背景下边实现这种稳妥的创新。

解决方案

接下来是最后的解决方案部分,做研发效能其实还是要想实现整个DevOps跨职能的全流程协同,不同的职能团队能够高效地协同在一起,特别是开发、测试和运维。

介绍一下蚂蚁一站式研发效能解决方案。下图中间部分属于蚂蚁研发效能平台的范围,提供从需求到发布的整个持续交付的引擎,将整个DevOps的工程能力集成串接在一起,具体能力前面都有提到。大图底部是应用PaaS平台,就是咱们SOFAStack运维管理相关的组件,效能平台通过open API和它交互,打通整个环境管理和环境部署这些功能,也实现了经典发布部署和容器应用服务的双模支持。大图右侧是对蚂蚁智能科技其他产品的集成和支持,通过研发容器统一管理多环境的中间件配置,实现环境的隔离,迭代推进过程中不同环境之间的自动同步和生效。另外我们支持技术风险防控平台以及端到端测试等产品的集成和联动。蚂蚁研发的平台本身具备开放集成能力,所以可以通过自定义组件的方式来对接其他平台的能力以及业务自建的一些资产,比如说质量测试等工具,最终实现一站式的智能研发平台的方案。

那么我们可以提供哪些软性的服务,下图展示了咨询及其具体领域,然后我们可以和客户一起来针对痛点建立研发规范,我们还提供沙盘帮助用户快速的在实际项目里边去演练整套的规范以及平台工具。

最后给大家介绍的是整个DevOps转型的一个路径,大概分这几个阶段: 第一个阶段就是咨询诊断阶段,出具DevOps的实施方案以及落地规划,包括平台的搭建。第二个阶段就是培训赋能,这里边就包括理念的培训,产品的培训,要建立统一的体系和流程规范。第三个我们提供沙盘演练,让项目组的同学真正的了解敏捷、流水线和自动化,通过在项目里试运行,为企业内部研发效能团队赋能,培养带头人。第四制定落地的目标和规划,配合企业按照业务或者按照产品线去落地实施,通过日常监控以及数据的分析,能够持续的去解决痛点,去推动效能的持续提升。

以上就是我今天分享的全部内容了,希望对大家有所帮助,也希望大家去关注我们已经商业化的SOFAStack产品,特别是LinkE研发效能相关的组件。

谢谢大家。如果有问题我们可以线下持续去探讨。

PPT下载:https://files.alicdn.com/tpsservice/40789250794061809d0be97ab36f9132.pdf

相关文章
|
3天前
|
存储 缓存 安全
Java内存模型深度解析:从理论到实践####
【10月更文挑战第21天】 本文深入探讨了Java内存模型(JMM)的核心概念与底层机制,通过剖析其设计原理、内存可见性问题及其解决方案,结合具体代码示例,帮助读者构建对JMM的全面理解。不同于传统的摘要概述,我们将直接以故事化手法引入,让读者在轻松的情境中领略JMM的精髓。 ####
19 6
|
17天前
|
编解码 前端开发 UED
探索无界:前端开发中的响应式设计深度解析与实践####
【10月更文挑战第29天】 本文深入探讨了响应式设计的核心理念,即通过灵活的布局、媒体查询及弹性图片等技术手段,使网站能够在不同设备上提供一致且优质的用户体验。不同于传统摘要概述,本文将以一次具体项目实践为引,逐步剖析响应式设计的关键技术点,分享实战经验与避坑指南,旨在为前端开发者提供一套实用的响应式设计方法论。 ####
40 4
|
19天前
|
安全 编译器 PHP
PHP 8新特性解析与实践应用####
————探索PHP 8的创新功能及其在现代Web开发中的实际应用
|
27天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
78 10
|
27天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
69 3
|
29天前
|
PHP 数据安全/隐私保护 开发者
PHP 7新特性解析与实践
【10月更文挑战第20天】本文将深入浅出地介绍PHP 7的新特性,包括性能提升、语法改进等方面。我们将通过实际代码示例,展示如何利用这些新特性优化现有项目,提高开发效率。无论你是PHP新手还是资深开发者,都能从中获得启发和帮助。
|
30天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
1月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
设计模式 存储 数据库连接
PHP中的设计模式:单例模式的深入解析与实践
在PHP开发中,设计模式是提高代码可维护性、扩展性和复用性的关键技术之一。本文将通过探讨单例模式,一种最常用的设计模式,来揭示其在PHP中的应用及优势。单例模式确保一个类仅有一个实例,并提供一个全局访问点。通过实际案例,我们将展示如何在PHP项目中有效实现单例模式,以及如何利用这一模式优化资源配置和管理。无论是PHP初学者还是经验丰富的开发者,都能从本文中获得有价值的见解和技巧,进而提升自己的编程实践。
|
1月前
|
安全 编译器 PHP
PHP 7新特性深度解析与实践
【10月更文挑战第7天】在这篇文章中,我们将探索PHP 7带来的新特性和改进,以及如何利用这些新工具来提升你的代码效率。从性能优化到语法简化,再到错误处理的改进,本文将带你深入了解PHP 7的核心变化,并通过实际代码示例展示如何将这些新特性应用到日常开发中。无论你是PHP新手还是资深开发者,这篇文章都将为你提供有价值的见解和技巧。
42 6
下一篇
无影云桌面