网商银行持续集成平台建设实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 网商银行持续集成平台
建设实践
谢凯
2. 讲师简介
有多年的数据库、电商、金融等领域的质量保障工作
经验,目前主要在网商银行负责持续集成平台的开发
以及银行业务的质量保障工作。
谢凯
网商银行技术专家
ee.msup.com.cn
3. 目录
1. 风险及应对 – 为什么做?
2. 持续集成方案 – 做的是什么?
3. 持续集成平台的解法及实施 – 怎么做的?
4. 效果与收益
5. 未来展望
ee.msup.com.cn
4. 风险
质量
质量目标
1. 线下漏测问题
0资损
0P1P2故障
2.FY20S1资损故障大部分可以通过灰度zone发现或减小影响
范围
关键词:有防线、没执行、执行有遗漏
效能
1.网商银行的交付周期离蚂蚁集团平均交付周期有较大差距
1.1.Master分支离随时可发布还有距离
高频回归能力待提升
1.2.自动化抓手欠缺
自动化有效性低,需度量改进
需对现有自动化工具聚合收口
ee.msup.com.cn
效能目标
蚂蚁集团
平均交付周期
5. 风险如何防控
根因
分析过程
CI目标
全链路自动化、接口
流量回放、代码门禁
接入CI流程强管控
全链路、接口能防
住线下问题漏测
确保测试工具执行无遗漏
分级灰度能发现线
上故障
CI流程中强制进行分
级灰度
成功率度量
覆盖率度量
有效性度量
自动化工具
有效
Master分支高
频回归能力
运行时长度量
推导过程
ee.msup.com.cn
Master分支随
时可发布
缩短迭代的
平均交付周期
6. 目录
1. 风险及应对 – 为什么做?
2. 持续集成方案 – 做的是什么?
3. 持续集成平台的解法及实施 – 怎么做的?
4. 效果与收益
5. 未来展望
ee.msup.com.cn
7. 持续集成应该怎么做?
持续集成的优秀实践
1.提交前先在本地运行所有的提交测试,或者让持续集成服务器完成此事
2.等提交测试通过后再继续工作
3.回家之前,构建必须处于成功状态;
4.时刻准备回滚到前一个版本,并且在回滚之前要规定一个修复时间
5.不要将失败的测试注释掉
6.为自己导致的问题负责
7.向构建中添加已有的自动化验证集合,通过之后对软件质量有比较大的信心
8.选择利于持续集成的分支策略
9.测试驱动开发
10.持续优化
• 编译打包时间
• 自动化测试用例的分层分级
• 测试验证环境的准备
• 优化编码规范扫描
• 生成数据报告
团队共识
持续集成不是一种工具,而是一种实践。它需要开发团队能够给予一定的投
入并遵守一定的规则,需要每个人以小步增量的方式频繁地将修改后的代码提交
到主干上,并一致认同“修复破坏应用程序的任意修改是最高优先级的任务”
ee.msup.com.cn
8. 我们的方案
拉通流程
ee.msup.com.cn
聚合能
力
整合pipeline 链接工具、平台
高频执行 CI治理
9. 目录
1. 风险及应对 – 为什么做?
2. 持续集成方案 – 做的是什么?
3. 持续集成平台的解法及实施 – 怎么做的?
4. 效果与收益
5. 未来展望
ee.msup.com.cn
10. 持续集成平台演进的2个阶段
平台能力拓展阶段
2020.3-至今
能力体系化建设
智能化探索
平台搭建阶段
2019.8-2020.3
平台框架搭建,由0->1
基础能力建设
ee.msup.com.cn
11. 我们目前具备的基础设施
研发基础平台
ee.msup.com.cn
•
•
•
•
•
•
•
构建系统
测试环境
配置管理
发布系统
研发流水线
代码管理
监控管理
测试平台
• 全链路自动化平台
• 流量回放平台
• 灰度平台
12. 分支管理策略 – 分支开发主干发布
master
拉取迭
代分支
合并迭代分
支到主干
迭代分支
拉取feature
开发分支
feature分支merge
到迭代分支
Feature分支
Pull feature分支
到本地
本地分支
ee.msup.com.cn
本地修改push到
feature分支
13. 持续集成流程建设
dev
需求
sit
预发
阶段推进卡点
阶段推进卡点
分支pipeline
高频执行
全链路阶段
推进卡点
流量回放阶
段推进卡点
发布
灰度
主干
pipeline
低频执行
全链路阶段
推进卡点
流量回放阶
段推进卡点
灰度
卡点
灰度
已完成
执行1次
不可跳过
阶段推进自动触发
可跳过
多级灰度
主干分支
本地分支
Mr触发
安全扫描
冲突检测
代码
合并
代码评审
集成测试
(关注全量)
部署
静态代码扫描
代码门禁
Mr触发
冲突检测
代码门禁
ee.msup.com.cn
集成测试
代码合入卡点
迭代分支
本地分支
安全扫描
代码评审
代码
合并
静态代码扫描
集成测试
全链路自动化测试
(关注全量)
接口流量回放测试
(关注全量)
代码合入卡点
部署
集成测试
(关注全量)
全链路自动化测试
(关注变更)
接口流量回放测试
(关注全量)
14. 度量指标建设
分类
成功率
时长
时间
ee.msup.com.cn
指标
目标
单测100%成功率 95%
全链路自动化
测试冒烟成功率 95%
全链路自动化
新增成功率 95%
单测 10分钟
全链路自动化
测试冒烟 10分钟
全链路自动化
测试新增 10分钟
Dev总时长 30分钟
SIT总时长 30分钟
dev修复时间 2小时
Sit修复时间 30分钟
正常状态占比 70%
说明
这个时间是开发提交之后强等待时间
统计主干和开发分支的非故障状态的总时长占全部时长
的占比,主要表现了主干或分支的总健康状态
15. 测试组件设计方式
前置数据处理
触发组件运行
组件运行逻辑
测试组件
的2个动作
消息订阅
查询运行结果
定时任务
测试组件运
行逻辑模版化
ee.msup.com.cn
16. 配置能力
•
•
覆盖率、成功率配置
阶段推进卡点配置
ee.msup.com.cn
组件的
配置能力
Pipeline的
编排能力
•
针对组件的运行顺序
可以随意组合
17. 反馈能力
Pipeline运行结果
测试组件运行结果
ee.msup.com.cn
18. 持续集成平台建设 - CI平台架构1.0
通知能力
CI控制
平台
配置能力
度量能力
Pipeline结
果通知 组件接入配
置 卡点阈值配
置 组件度量数据 迭代周期数据
度量数据日
/周/月报 业务域系统
配置 组件个性化
设置 Pipeline
度量数据 卡点度量数据
CI状态管理能力
组件的执
行状态 pipeline的
执行状态
全链路自
动化组件 流量回
放组件
组件收口能力
分支的最新
状态
第三方组件接入
平台依赖
暴雪平台
全链路平台
灰度平台
ee.msup.com.cn
依赖层
linke
组件能力
代码门
禁组件
灰度组件
19. CI治理过程中遇到的一些问题
全链路、接口、灰
度引流卡点还不够
全面 对齐网商质量保障体系
Pipeline运行时长、代
码合入之后的组件运行
失败了研发关注度不高 重点关注2类卡点指标
接入的测试组件、卡
点太多,不同业务诉
求不一样,该采取何
种质量策略?
ee.msup.com.cn
质量决策
20. 网商银行的质量保障体系
系统稳定 业务连续 资金安全
+ 严控流程 +
夯实防线
需求 系分 测分 项目排期优化 系分模版 测分模版 代码门禁
需求准入条件 系分评审确认 测分评审确认
排期会
头狼会
新应用审批
项目分级
SIT测试 预发测试 发布 代码免疫 全链路自动
化 流量回放自动
化 多级灰度 核对
(降噪、智人) 资损/高可用
演练
联调用例
冒烟 代码覆盖
率 用例有效性
分析 Pd预发验证 发布计划模
版 CDO 监控报警
接口用例 提测标准 功能测试验
证 缺陷记录 三板斧 线上问题管理
跟踪 应急熔断
CR Show-
case 用例记录 测试工具 发布确认 限流 业务预案
压测 日常值班
研发
场景识别
(飞轮)
前后端融合测
分
持
持续集成平台 代码注入攻防 业务大图 业务分享 系统分享
日报周报 线上问题
复盘 注入攻防
ee.msup.com.cn
效能提升
全链路自动化
Doom流量回
放
续
集 成
线上
深海环境保障 灰度平台 tm/th/t1核对 飞轮业务识别
项目复盘 新人培训 文档维护 团队共创 应急手册
缺陷报告 质量报告 CR/监控/核
对红黑榜 团队建设 技术奖项
21. 卡点度量大盘
ee.msup.com.cn
22. 质量决策
针对迭代的
质量风险
•
•
能力模型
风险模型
风险类型 风险模型区分高、中、低风险
•
高风险阶段推进会拦截、中风险会警告但不
会拦截
•
针对不同的系统可以进行通用和定制化配置
•
支持加签设置并且记录加签原因
智能推荐 •
ee.msup.com.cn
根据代码、配置变更推荐自动化测试项
23. 持续集成平台建设 - CI平台架构2.0
质量
决策
通知能力
平台依赖
全链路编排
平台
接口流量回
放平台
CI控制
平台
灰度平台
慢sql检测
平台
智能精准攻
防平台
新增功能
ee.msup.com.cn
依赖层
linke
已完成
能力视图
智能推荐
度量能力
配置能力
报告能力
Pipeline结
果通知 组件接
入配置 卡点阈
值配置 组件度量数据 迭代周期数据 迭代
测试报告
度量数据日/
周/月报 业务域系统
配置 组件个性
化设置 Pipeline
度量数据 卡点度量数据 提测报告
组件的执
行状态
异常日志检
测平台
风险视图
质量准出能力
全链路自动
化测试组件
异常日志
检测组件
CI状态管理能力
Pipeline
的执行状态 分支的最
新状态
流量回
放组件 代码门
禁组件
智能精准攻防组件
组件收口能力
第三方组件接入
组件能力
精准联动组件 静态代码扫描
充分校验组件 灰度组件
慢sql
预检组件
端到端测
试组件
24. 目录
1. 风险及应对 – 为什么做?
2. 持续集成方案 – 做的是什么?
3. 持续集成平台的解法及实施 – 怎么做的?
4. 效果与收益
5. 未来展望
ee.msup.com.cn
25. 运营数据
9 网商银行、消费信贷、保险、大安全、支付宝、CTO线、智能科技、财富、
境外银行
3430 接入的迭代数
33779 Merge request 次数
ee.msup.com.cn
26. 效果数据
质量 上个财年0资损,0p1p2故障
代码门禁卡点有效拦截2495次没达标代码合并,阶段推进卡点有效拦截111次
效能 交付周期缩短40%
ee.msup.com.cn
27. 目录
1. 风险及应对 – 为什么做?
2. 持续集成方案 – 做的是什么?
3. 持续集成平台的解法及实施 – 怎么做的?
4. 效果与收益
5. 未来展望
ee.msup.com.cn
28. 未来展望
主干开发
在治理好自动化测试的基础上,不断完善代码
门禁的内容,最终满足提交的代码基本能达到
发布的标准
精准测试
进一步提升精准测试的效果
智能决策
智能决策出需要执行哪些测试组件
ee.msup.com.cn
29. 关注msup公众号
获取更多工程效能实践案例