小蚂蚁表示:在金融级互联网产品的持续交付方面,蚂蚁金服积累了丰富的经验和最佳工程实践。在2018ATEC技术探索大会上,蚂蚁金服解决方案架构师卢中邦(冯琦)从行业背景出发,从“更快、更早地交付价值”出发,分析了金融级互联网产品持续交付的核心挑战和“更快更早地交付价值,守住技术风险底线,确保交付质量”从两个维度分享了蚂蚁应对这些挑战的最佳工程实践,最后介绍了蚂蚁研发效率平台支撑持续不断的实践经验送货。和小蚂蚁一起学习吧~一、行业背景和主要挑战在数字化转型的背景下,企业需要构建各种核心能力。这些能力客观上需要企业升级或采用新一代的技术架构。一个非常重要的环节是基于云的基础架构和分布式架构下的持续交付。谈到持续交付,很容易想到一些具体的挑战:比如如何缩短新业务产品的开发和生产时间,快速响应细分客户需求;如何应对分布式微服务架构带来的复杂业务场景和高并发挑战;如何通过技术手段推动自动化,减少研发过程中的人力投入等。另外,我们还需要仔细审视我们所处行业的特点。金融互联网产品的两个核心关键词,第一个是“金融””。最重要的金融属性是保证资金、安全、高可用,可以用一个词来概括——“稳定”;另一个关键词“互联网”,最突出的特点是快速传递价值,支撑业务快速创新。归结为另一个词——“快”。既快又稳,这是金融互联网行业的基本特征,两个看似矛盾的方面缺一不可。说到“稳”和“快”,蚂蚁金服表现如何?分享上一财年的一些实际数据:在线服务可用率——100%;每天应用发布超过150次;平均迭代研发周期为5.8天;测试自动化率超过80%;运维自动化率超过98%。基于数字化转型背景和行业基本特征,我们认为金融互联网产品在持续交付领域面临的核心挑战是:如何平衡速度与稳定性?既能快速快速地交付价值,又能稳健创新,守住技术风险底线,持续满足监管合规要求。2.敏捷交付——如何更快更早地交付价值本章分为四个部分。第一个是精益的研发流程定制和多样化的分支和发布策略,主要解决我们的系统或流程如何适应不同的业务场景。正确的路径和姿势是提高研发交付效率的基本前提。二是面向服务的功能,高效的联调和问题诊断。这两部分主要讲解如何通过技术或自动化来解放人肉,提高效率。精益研发流程定制说到流程定制,很多人会问:我们在什么基础上定制研发流程?在Ant中,我们有一个更有效的方法,就是按照应用进行分类。应用分类主要考虑三个因素:依赖服务调用量、日交易资金量、日PV和UV。基于这三个方面,我们定义了A1-C4十二个不同的应用层级,然后为每个应用层级设置基线研发规则。在基线规则之上,我们还支持各业务定制额外的风险管控措施。举两个例子,一个是按需配置过程。蚂蚁金服业务非常复杂多样,部分核心业务系统对稳定性要求非常高,相应配套的技术风险防控措施和测试验证环节会比较完善;相反,一些新的业务或内部服务系统会倾向于为了更快更早地上线,流程会相对更轻巧、更敏捷。第二个是可编排和可扩展的管道。效能平台组件中心定义了众多质检组件,包括第三方或业务自建组件,通过平台编排能力为不同业务编排个性化流水线模板。有些应用被迫做codereview,有些应用需要通过CI的自动化测试或者专项测试才能下推。类似的场景可以通过流水线的安排来实现。多样化的分支和发布策略关于分支模型和发布策略,Ant主要有四种玩法。首先是每日发布。我们将其比作定期发车的火车。适用于核心业务系统与全站应用关联性比较强的场景。二是独立发布。我们把它比作汽车,你想什么时候启动就可以启动汽车。适用于业务领域独立,应用之间存在一定耦合关联的场景。三是单应用发布,我们把它比作摩托车,适用于业务比较独立,在架构层面和其他业务完全解耦的场景。前三种模式通常采用分支开发、主干发布的模式。最后一类紧急发布,我们把它比作救护车,适用于紧急业务需求或者线上故障解决,通常采用分支开发分支发布模式。通过这四种模式,基本覆盖了蚂蚁所有的业务场景,各个业务可以根据自己的需求找到匹配的方式。介绍完功能服务敏捷交付的姿态和路径,再来看看自动化和效率提升方面。通常,一个研发迭代涉及多个职能部门。传统做法是各职能团队根据经验回顾进行人为风险管控。例如,当开发人员完成编码和自测后,安全、风控等职能团队会层层把关,根据经验进行审核。“部门墙”会严重影响协同交付效率。在Ant中,各个职能团队的协作方式是完全不同的。他们不再直接参与项目迭代,承担迭代验证、审计等重复性机械活动。而是转化为能力输出和自动化工具构建,实现功能性服务。为了给业务的开发测试团队赋能,这种模式大大提高了研发协作的效率。高效联调和问题诊断金融互联网产品业务场景非常复杂,搭建项目环境是一项非常耗时耗力的工作。例如,一个交易链接涉及20个应用程序。一般的做法是在研发迭代过程中,每个应用部署一次,最终形成联调环境。Ant的方法会有所不同。首先,我们构建了一个共享的STABLE环境。在研发迭代中,我们只需要部署变更和修改的应用,然后使用sofarouter分组能力将所有20个应用关联在一起,形成一个关联。调整环境。这不仅大大提高了效率,而且最大限度地利用了测试资源。另外,当代码上线时,平台会自动更新STABLE环境,确保是最新的代码。如果在联调过程中发现问题,如何在如此复杂的环节定位和诊断问题也很重要。开发者可以通过TraceID或交易号查询链接图和时序图,直观全面的了解应用之间的调用交互信息。结合业务日志,可以轻松找到错误的应用,定位问题根源。3.稳健创新——坚守风险底线,确保交付质量与我们分享我们如何守住安全底线,保障信息安全。基于数据的技术风险评估毫无疑问,开展事前技术风险评估非常重要。蚂蚁的技术风险评估主要基于两大输入:第一是需求输入,第二是治理分析相关的数据输入和赋能。后者对我们更重要。开发者可以轻松获取应用依赖、服务调用、消息巡检、组件管控、代码检索等数据,全面准确评估变更带来的技术风险。基于这些数据和分析,他们可以轻松确定风险应对策略。实现有效的闭环反馈。内置质量和实时闭环开发——内置质量和实时闭环反馈帮助开发者一次把事情做对。在Ant内部,我们鼓励基于gitflow的最佳实践,通过MergeRequest而不是Push来提交代码到项目分支或主干,给代码访问控制和CI检测一个机会。事实上,Pipeline管道的所有节点和组件都是可编排和可扩展的。提交代码后,每执行一次组件,平台都会实时反馈执行结果,并自动更新迭代质量数据,协助开发测试人员控制质量风险。全环境和业务分层验证开发之后,也就是测试验证部分,我们分享两点:第一是全环境验证,从开发>集成>预发布>灰度到逼近和模拟生产环境的步骤按部就班确保生产发布无问题。二是业务分层验证。在每个环境中,都有相应的测试方法。比如很多公司做压力测试,但是大多是基于离线环境,而Ant会直接在生产环境做压力测试,真正做到系统的高可用。信息安全的最后一部分保证安全交付。在保障信息安全方面,蚂蚁有一套完整的体系:在需求设计评审阶段,架构师会评估业务风险;在开发阶段,首先保证SOFA框架本身的安全性。其次,每次提交代码我们都有安全自动扫描,也会有专门的安全测试;最后,系统上线后,我们有一个针对安全的监控和应急机制。4、研发绩效平台AntLinkE支持上一节我们不仅介绍了如何敏捷交付,还介绍了如何稳健创新。接下来,我们将分享工具平台层面如何支撑整个持续交付流程。平台介绍蚂蚁研发效率平台主要做的事情分为三个方面:DevOps——一站式开发集成和持续交付DevMind——实时多维数据分析赋能研发流程DevServices——为开发者提供高效的技术支持和咨询services产品大图以下是我们的产品大图。上半部分是平台支撑的业务和交付的价值,下半部分是DevOps、DevMind、DevServices的主要能力。今天我们重点介绍中间的产品层。首先是持续交付,为从迭代创建到发布上线结束的整个研发生命周期提供支持。以下是配套的子产品:研发协作管理项目、迭代和需求;代码服务提供代码托管、代码搜索、CR等能力;已与效率平台web端集成整合,开发者无需频繁切换工作台开展开发工作;测试服务支持测试管理和自动化测试;问题诊断依靠分布式链路和业务日志快速定位和解决问题。底部是研发洞察力。在研发过程中,无论是IDE还是研发性能平台的Web,都会积累大量的数据。这些数据是非常宝贵的宝贵资产。我们对这些数据进行收集、统计和分析,以实现驱动整个研发体系和组织的不断优化升级。一站式持续交付解决方案一站式持续交付解决方案如图所示。中间部分是研发效率平台,提供从需求到发布的持续交付引擎,将所有相关的能力和工具连接在一起;最底层是应用PaaS平台,性能平台通过openAPI与之交互,连接环境管理和环境部署等功能;右边是分布式中间件,研发效率平台通过研发容器统一管理多个环境的中间件配置,既实现了环境间的隔离,又实现了环境间的自动转换和同步;此外,还打通了研发效率平台和科技风险防控平台,将科技风险防控措施落实到研发过程中;此外,蚂蚁研发效率平台本身具有开放性和集成性,可以通过组件与公司自有工具平台对接,实现资产现有价值的最大化。五、结语无论对内还是对外,蚂蚁研发效率平台一直秉承并将继续追求这样一个初心——提升开发者的幸福感,提升企业创新效率。让我们一起重新定义研发!
