找回密码
 会员注册
查看: 11|回复: 0

信息流推荐系统智能交付解决方案探索

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
72239
发表于 2024-10-6 20:17:15 | 显示全部楼层 |阅读模式
小编有话说随着技术的发展、业务的快速迭代,做持续集成、持续交付的同行会遇到不少挑战和难题:每到业绩述职的时候,总是在为数据头疼,如何衡量、指标波动、未来的主要措施等消耗大量时间和精力,如何建立一套可持续的评估、分析、诊断交付效能端到端评价体系,以客观、实时的评价交付效能,是所有交付团队需要面临和解决的难题;云原生技术、lowcode等技术不断发展,如何将这些先进的技术与持续高度融合,充分利用新技术红利,最大化发掘效能价值,如Testing in Arch和Testing in Prod理念的不断传播与实践;自动化测试的不断发展、用例的持续积累以及质效技术的不完善,导致自动化的效率低下、稳定性差等问题凸显,自动化逐渐成为持续集成过程中的“障碍”,如何最精准的找出问题并且让构建最少,是我们要研究的一大方向;研发团队尤其是前端类研发团队与产品团队间永无止境的供需关系,如何在PM、RD、QA等各个角色形成透明、认知一致的交付过程,也是持续交付要去解决的问题;持续交付其中的关键词是“持续”,在质量召回领域,如何持续的评估质量,让项目风险不再靠看用例是否通过、让项目整个过程不依赖人,是继续把持续做到极致的升华,这样才会整个过程更加顺滑并降低风险;等等。不止上面的难题,其实在交付领域还会因业务、技术、团队等形态会有很多挑战和难题。百度智能交付团队通过与PM、RD、OP等角色通力合作,制定适合业务线特点的研发流程规范,通过公司的优质中台、业务创新、智能赋能三者有效的结合和技术升级,为各业务线打造一套低成本、高召回,快交付的智能交付系统,为业务线提供极致的交付体验,我们选取了一些有代表性的业务类型优秀实践,整理出来,推送给同行,希望能够一起交流和探讨。具体系统文章如下:*系列文章发表顺序可能会根据情况微调或合并智能交付系列一---百度MEG交付效能发展历程和开展思路智能交付系列二---百度广告投放平台智能交付解决方案智能交付系列三---信息流推荐系统智能交付解决方案探索智能交付系列四---云原生架构下的软件持续交付实践智能交付系列五---好看视频客户端单周发版智能交付系列六---无人值守在广告检索系统的建设方案导读:信息流产品为了给大家提供千人千面的内容推荐,后端构建了一个庞大、复杂的推荐系统,整个系统包括上百个模块,上百个策略算法以及模型,并且这个系统以极高速的效率迭代,日均上线近百个需求;这样庞大的系统如何做到这样高速稳定的迭代呢? 这里离不开 PM、RD、QA等各角色共同构建的智能交付系统。引言本文主要介绍了百度大规模信息流推荐系统研发、交付效能提升的相关实践。涵盖研发、测试、发布、上线部署各个阶段,通过智能化手段,结合数据和算法,实现效能提升、以及流程智能流转,最终实现全流程的无人值守。一、背景介绍信息流产品为了给大家提供千人千面的内容推荐,后端构建了一套庞大、复杂的大规模推荐系统,整个系统包括上百个模块,上百个策略算法以及模型,并且整个系统以极高速的效率不停迭代相关的策略以及架构,日均上线百次;这样庞大的系统如何做到这样高速且稳定的迭代呢?这里离不开PM、RD、QA等各角色共同构建的智能交付系统。△图表 1:简化推荐系统智能交付系统覆盖从研发、测试、发布到上线的各个环节,首先要设计一套高效运转的交付模式,并针对当前交付模式各个环节的问题逐个击破:△图表 2:交付模式示意图1. 研发及自测阶段:以微服务化、业务框架&执行引擎为开发者赋能,降低研发成本,提升研发效率,并探索以自主测试为驱动的新研发模式,通过QA提供的优质交付服务、RD自身质量意识和代码可测性的提升,进而实现研发测试一体化(测试能力左移为研发提供服务、可测性改造等;研发右移提供更多的基础架构能力、质量意识提升等)来试点整体效能提升;2. 测试阶段:将每个测试行为拆分为测试输入、测试执行、测试分析、测试定位4个子环节,在建立完备的测试体系之后,通过数据和算法,以智能的手段对各个子环节赋能,提升整体的测试效率和召回能力,并释放排查、定位、结果校验分析各处的人力;3. 发布阶段:从测试评估角度评估需求是否可以发布上线,满足上线条件的需求智能流转至上线部署阶段,实现流程的无人值守;4. 上线部署阶段:从编译优化&部署包裁剪、智能监控、并发动态调整,服务重启优化4个方面,联合OP、EE、RD共同提升上线效率;5. 底层:依赖于强大的中台能力,包括配置数据管理、构建中台、策略中台等等中台支撑流水线高效运转。△图表 3:智能交付系统示意图二、核心问题&解决方案2.1 研发&自测阶段--该阶段主要解决研发效率和自测效率问题2.1.1 业务框架&执行引擎构建1. 背景目前,融合层的众多策略&业务逻辑,都比较分散。主要体现在以下几个方面:代码架构:策略逻辑不内聚,数据依赖分散,缺乏通用性;研发效率:开发一个调权功能,需要修改n个文件函数,并且每个地方的依赖数据和使用方式可能不尽相同,在开发前需要先熟悉各个位置的代码,开发过程中很容易漏掉某个地方没开发到,研发调试、测试周期被迫延长。基于上述背景,预期实现一个算子执行框架,其主要目标如下:规范算子接口和数据依赖,提升策略代码通用性和迭代效率;框架对外接口尽可能简单,内部执行实现尽可能轻量。2. 实现框架在实现上拆分成了两部分:核心执行+执行策略。如下图:?△图表 4:业务框架&执行引擎设计图(1) 核心执行主要功能:根据给定『执行模式』运行算子。核心细节上包括如下:并发多路&短路执行功能,输入处理数据组织方式支持:流式&随机访问容器;算子支持带状态&无状态模式,实现算子执行的信息采集和反馈。(2) 执行策略主要功能:根据核心执行采集的信息,生成『执行模式』。具体实现逻辑是:采集核心执行每个算子的运行信息,输入执行分析策略模块,生成下一次核心执行的执行模式,核心细节包括如下:独立线程定期分析运行情况,生成运行模式;运行模式更新和使用采用0-1buf减少读取&写入的竞争;执行分析策略模块,采用插件化设计(类似路由iptable),生成运行模式的时候,顺序遍历每一个策略,支持自定义开发不同的执行分析策略模块。2.1.2 新研发模式试点1. 背景所谓自主测试就是RD在研发过程中自行利用优质的测试相关服务进行质量保障,再结合完备有效的自动化能力直接给出可交付结论的研发行为;整体通过建设极致流水线和测试服务能力,引入研发深度参与测试,并结合智能化测试落地,提升整体交付效能。2. 实现流程变化:原有提交代码后QA根据本次变更补充相应case,以覆盖变更场景,左移至RD开发环节;RD工作:RD在开发需求、策略代码的同时,在QA提供的测试服务能力基础上,通过配置case或者编写自定义校验函数的完成case书写工作,整体case编写成本30min之内;QA工作:QA通过建设可配置化模块接入,配置化case添加的自动化测试框架,提供低成本使用的测试服务能力,降低RD case书写成本;并且测试服务能力覆盖包括基础校验、策略校验等90+%核心功能点,流水线覆盖功能、性能、稳定性等P0测试场景,以保障此部分的需求无风险上线。△图表 5:新研发模式试点2.2 准入&测试阶段--该阶段主要解决测试效率问题我们建设了集成『自动化测试』、『性能测试』、『稳定性测试』等各项工程能力的完备流水线作为准入系统。建立了完备的工程能力之后,我们还是遇到了这样的问题:自动化测试能力更多的是做为功能回归能力,如何能够快速覆盖新增功能,提升自主测试呢?性能diff测试产出报告包括上百个指标项,如何分析,如何判断是因为系统原因引起的波动,还是代码变更引起的上涨,降低分析成本呢?包含如此多项能力的准入系统,如何能够更高效运转,提供给RD和QA丝滑般的流水线体验呢?所以,在智能交付时期,基于前期建设的完备测试能力的基础上,以中台和数据支撑,策略算法赋能,为整个准入系统提质增效,并通过分析、定位、评估智能化,流程智能流转,释放投入人力。?△图表 6:智能化无人值守流水线示意图2.2.1 测试输入:智能case生成1. 背景自动化测试能力更多的是做为功能回归能力,如何能够快速覆盖新增功能,将部分非自主测试项目功能高质高量覆盖,提升自主测试呢?2. 实现通过对增量代码的白盒分析结果,结合业务策略,进行测试用例生成,以尽可能覆盖本次新增功能。△图表 7:智能case生成方案2.2.2测试执行:智能构建1. 背景来自灵魂的拷问,是否针对每个需求,准入阶段所有的任务都需要跑一遍,如果只改了日志类函数等场景,有必要跑那么重的构建?答案肯定是不需要的,但是怎么判断哪些任务是需要跑,哪些任务是可以跳过的呢?2. 实现基于智能构建中台能力,结合业务特性,以及白盒分析、历史任务结果等特征,以策略智能决策任务是否需要运行,打破流水线任务机械重复执行的现状,让数据和算法策略代替人来对于流水线任务裁剪进行决策,进而提升流水线运行效能。△图表 8:智能构建系统2.2.3 测试分析:性能白盒分析1. 背景为了防止速度衰退,性能diff测试已经是测试能力必不可少的一环,工程能力已经完备,但是对于性能测试结果的分析仍然是这其中的耗时耗力的工作:性能测试报告包括上百个指标项,要如何分析呢?系统级长尾耗时波动问题困扰已久,单一阶段耗时的99.9分位值很难判断是否异常,怎么有效的拦截长尾恶化呢?模块级耗时指标异常,如何判断是因为系统原因引起的波动,还是代码变更引起的上涨,降低分析成本呢?2. 实现(1)基于dapper的长尾恶化拦截:基于RD的全局性能分析系统(dapper system),我们已经具备了系统性能的可观测性,将dapper与线下性能测试结合作为数据依据,再加上业务策略算法做决策,我们就具备了长尾恶化拦截的能力。△图表 9:性能测试白盒分析-长尾拦截(2)基于白盒代码分析波动消除:基于dapper耗时日志分析结果,结合函数调用链分析,预估耗时影响,以及增量代码所影响的耗时阶段,对异常波动进行消除矫正?△图表 10:性能测试白盒分析-波动消除2.2.4 无人值守:流程智能流转1. 背景前面介绍的主要集中在研发自测->准入测试各个阶段的效率的提升,效率提升之后,流水线还是需要依赖于人力以及经验进行判断以及流程上的流转,那么这部分的人力,我们是否可以通过数据以及算法来代替人来做决策,让流水线在各个阶段之间更加的丝滑的流转呢?2. 实现从需求环节开始,在每个节点,通过质量度模型&风险评估指导流程流转;在阶段的起点,挖掘本次变更引入的风险,以及风险发生的概率,相应的影响,结合风险矩阵进行风险的评估,并在各个阶段终点,综合阶段的数据以及特征,评估风险降级等情况,指导是否可以转入下一阶段,最终给出需求上线的综合风险,实现流程上的无人值守。2.3 发布&上线部署阶段--该阶段主要提升部署效率1. 背景上线部署阶段的效率决定了整个产品能够达到的发布频率的上限,可以降低需求待上线的等待耗时,所以2020年Q3 联合RD、OP、EE针对上线部署环节效率提升做了专项优化。2. 实现主要从流程规范、平台优化、工程能力3个维度,部署包裁剪、并发动态调整、重启耗时优化、监控能力智能化等几个方面入手,针对打包、部署、后置检查、人工检查各个阶段做相应的效能优化。?△图表 11:上线部署耗时优化方案以及效果三、总结&效果通过研发业务框架&执行引擎、研发测试一体化、智能流水线、流程智能流转,上线效率提升等等一系列的建设,推荐技术方向效能明显提升:50%+的需求实现天级研发测试交付,且线上质量平稳,稳中有升。模式创新:实现研发测试一体化,RD在研发过程中利用优质的测试相关服务进行质量保障的自主测试模式,自主测试率大幅提升,从而提升需求交付效率;天级交付&吞吐上升:交付需求400+/周,其中50%+的需求能够天级研发测试交付;人效提升:通过流水线稳定性提升、自动标注、智能客服等,大大的释放了QA在流水线运维投入的人力;通过测试评估以及流程智能流转,实现部分项目无需QA投入,无人值守,QA人效得到提升;质量平稳:迭代效率大幅提升的情况下,质量保持平稳,且稳中有升,线上问题数平稳下降?----------? END? ----------招聘信息百度MEG质量效能平台致力于打造业界领先的智能化测试技术体系,长期招聘测试开发及JAVA、C++、移动软件开发、机器学习/数据挖掘/自然语言处理工程师,坐标北京、上海、深圳。欢迎感兴趣的同学发送简历至:QA-talent@baidu.com点个“在看”少个 bug???
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-11 05:38 , Processed in 0.438854 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表