导读 :信息流产品为了给大家提供千人千面的内容举荐,后端构建了一个宏大、简单的举荐零碎,整个零碎包含上百个模块,上百个策略算法以及模型,并且这个零碎以极高速的效率迭代,日均上线近百个需要;这样宏大的零碎如何做到这样高速稳固的迭代呢? 这里离不开 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 人效失去晋升;
- 品质安稳 :迭代效率大幅晋升的状况下,品质放弃安稳,且稳中有升,线上问题数安稳降落
举荐浏览:
|图谱相干技术在风控反作弊中的利用和摸索
|难看视频 Android 重构——围绕于播放器的重构实际
|浅谈百度浏览 / 文库 NA 端排版技术
———- END ———-
百度 Geek 说
百度官网技术公众号上线啦!
技术干货 · 行业资讯 · 线上沙龙 · 行业大会
招聘信息 · 内推信息 · 技术书籍 · 百度周边
欢送各位同学关注