阿里巴巴移动端研发支撑平台演进与实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 阿里巴巴移动端研发支撑平台演进与实践
薛笑波
阿里巴巴技术专家
2021/11/13
2.
3. 薛笑波
阿里巴巴移动技术小组成员/阿里巴巴技术专家
2016年加入淘系技术部,阿里移动端研发支撑平台的技术负责
人,为600+APP提供需求、变更、集成、构建、测试、发布于一
体的研发支撑平台,目前主要致力于研发效能方向,通过构建开放
体系、业务流程自动化、GitFlow、持续集成等基础功能来提高移
动端整体研发效率。
4. 01 All In 无线
02 班⻋模式
03 研发效能领域内的研发模式 04 未来展望
• 背景 • 变更单 • 研发效能定义
• 挑战 • 集成单 • 效率建设-构建开放体系
• 发布单 • 效率建设-自动化任务体系
• 集成区 • 可持续建设-GitFlow分支管理模式
• 可持续建设-持续集成区
• 有效价值建设
• 开放的研发共生生态
5. All in 无线
6. 背景 移动端研发生产力和生产关系
生产力三要素
核心生产力
主要生产关系
劳动者-谁来交付
研发/广义开发者
劳动资料/生产工具-怎么交付
打包工具、触达发布能力
广义开发者
(劳动者)
劳动对象-交付什么
高质量的APP应用
打包等工具
(生产工具)
无线客户端的
交付能力
无线研发
模式&流程
生产关系
无线研发流程
生产力
三要素
高质量APP
(劳动对象)
需求研发测试安全等各个生产
⻆色在移动研发过程中形成的
相互关系
7. 挑战 多方对移动DEVOPS的诉求
PD需求方
安全生产
TEST测试
• 期望能够尽快的上线新需求
• 期望能够尽快拿到需求业务
效果AB数据/灰度数据,评
判业务价值
DEV研发
• 期望能够进行高质量的CI/
CD流程支撑 • 期望有完备的告警监控体系
• 研发/发布环节有高质量的
卡口、流程校验环节,保
障交付产物的高质量 • 期望有多维Patch体系来快速修复问题
• 期望有全链路日志排查诊断系统来定位问题
安全/法务/运营
• 期望能够支撑多形态研发
模式,任意形态本地研发
能做到云上构建 • 产物合规交付:安全、法务、商务都有
对应的合规要求,对APP而言都是生死
问题
• 期望能够实现更先进的云
端研发+多端构建模式 • 全渠道数字交付:对厂商等各个渠道,
需要数字化渠道运营、高效精准交付
8. 挑战 研发模式升级后的多样性
Android
iOS
H5
✖
Weex
Flutter
客户端 - 跨平台
write once,run everywhere
• 一份代码
Android
iOS
• 跨端框架统一收口
客户端 - 单端
write repeatedly,run independent
• 业务逻辑重复开发
• 多端一致性挑战
云+端一体化: 基于低代码研发的云原生研发模式
write integration run everywhere
• 无需编码或少量代码快速生成应用程序的工具或平台
• 以容器、微服务等技术为基础建立的一套云技术产品体系
9. 班⻋模式
10. 班⻋模式
灰度版本
9.0.0.1
发布release
测试test
at
gr
编码code
监控monitor
移动Devops流程
大版本 9.0.0
大版本 9.1.0
手淘班⻋式版本发布形态下的移动Devops流程
11. 班⻋模式
示意图
【班⻋模式主要研发流程】
• 业务代码合并单一工程构建发布
• 构建效率低下影响研发效率
• 单个业务问题导致发布延期
2013-2016
整包
整体发布
2016-2019
整包
班⻋发布
项目/集成区
项目
• 业务代码独立构建,集成发布
• 固定集成发布周期,错过只能下一班
• 等待重要业务集成,导致延期
•
•
•
模块deploy
整包构建
提测
集成单
•
•
•
•
•
必改问题
安全黑盒
代码扫描
整包构建
集成审批
发布单
•
•
•
•
渠道包
安全扫描
Monkey
发布预审
12. 班⻋模式
流程图
开发阶段 测试阶段 集成阶段 发布阶段
创建变更单 下载安装包 创建集成区 创建发布单
添加模块
测试
创建集成单
问题?
• 各方存在互相等待情况,效率低下,集成阶段问
回归包构建
题需等集成区开启后才进行,问题集中爆发且滞
后
关联需求
提交bug
预集成构建
回归测试
• 业务模块并行开发迭代分支无管理,没有合并到
主干习惯,没有一个分支代码持续向前,代码维
模块开发
不通过
集成检查项
测试结果
通过
构建模块
发布结果
不通过
• 各团队各部⻔研发流程不一致,定制需求旺盛
通过
模块发布正式
版
紧急集成
否
可集成
护困难
渠道包构建
• 模块和主包构建作为移动端研发平台的核心底
层,急需新的构建技术突破来缩短构建时⻓、提
构建整包
自主灰度
否
集成审批
是
高构建成功率
更新推送
是
功能自测
审批结果
通过
创建变更单
发布结果
成功
归档
结束
失败
13. 研发效能领域内的研发模式
14. 研发效能
研发效能定义:团队能够持续地为用户产生有效价值的效率
效率(Efficiency)
• 平台+架构+工具
• 构建开放体系
• 业务流程自动化
可持续性(Sustainability)
有效价值(Effectiveness)
• GitFlow分支管理
• 持续集成 • 研发平台支持产品的有效性
• 持续测试 • 研发平台自身的有效性
• 持续发布
15. 效率建设
研发模式
构建开放体系
单模块
多模块集成
Native Android
变更单
研发流程
Native iOS
Flutter
内置流水线模版
构建流水线
Job 无agent
Task 代码
review
Windows
发布单
自定义流水线
》
前置卡口
Stage
miniAPP
集成区
集成单
Pipeline
iOT
构建配置
》
构建插件可视可编辑,用户可以自定义构建
后置卡口
卡口插件可视可编辑,用户可以按需卡口
有agent
有agent
安全
合规
build 签名
平台核心构建等核心能力开放
构建插件
平台官方插件
build
单测
构建领域
代码
扫描
发布领域
性能
测试
审批
测试领域
签名
安全
合规
流程卡口
自定义
脚本
事件监听
发布
预审
创建
发布单
依赖
检查
发送
提醒
二、三方自研插件
产物
校验
Flutter
…
插件市场生态体系,插件可视化
需求方可自定义切面和组装平台核心能力
…
16. 效率建设
构建开放体系
流水线配置
构建配置 / 卡口配置
Pipeline
流水线
Stage
阶段
Job
作业
可并可串
Job作业
Stage阶段
Plugin插件
串行
Stage阶段
串行
打包构建领域,全自动、无干预
【作业:Job】
•
可以运行在Agent上,也可以运
的自动化执行过程。
git clone
Job是流水线的最小调度单元。
行在容器环境上。
串行
Job作业
可并可串
•
Task任务
Agent
Stage阶段
【流水线:Pipeline】
渠道包构建
Task任务
Plugin插件
iPA build
Serverless
【阶段:Stage】
串行
Job作业
【任务:Task】
Task任务
Plugin插件
•
upload OSS
Task是流水线的最小执行单元,
作为plugin的执行容器。
Stage
Trigger
触发器
•
Job
Agent
Job作业
流程组装。Job相互关联且串行
运行,组装成Stage。
Task任务
Plugin插件
一个业务单元对外提供的完整的
codereview
•
同一pipeline下的stage,可并行
【插件:Plugin】
也可串行执行。stage之间存在
代码审核
依赖关系,并组成DAG。
•
一段固化的抽象输入的构建脚
本、程序、服务等等,是独立执
Plugins插件市场
构建插件
测试插件
卡口插件
公共插件
行业务能力的最小单元。
17. 效率建设
开发
业务流程自动化
集成
测试
发布
BU定制平台发布流程开放,可维护/可管控
运维
构建自动化
流
程
要
素
启动 顺序流 网关 任务 结束
空启动 默认顺序流 并行网关 Java服务 空结束
定时器启动 条件顺序流 排他网关 Http服务 错误结束
包容网关 手动服务 终止结束
插件服务 取消结束
消息启动
信号启动
REST API
流
程
引
擎
BPMN
引擎
CMMN
引擎
DMN
引擎
构建定时化
集成区定时创建
测试流程自动化
发版CheckList
Form
引擎
Content
引擎
Job服务 Task服务
Identity服务 Variable服务
渠道自动化
业界通用BPMN标准支持
分布式、低侵入、FAAS
引擎特定服务
放量自动化
Entity管理 && Data管理
用户自定义研发流程开放,CI/CD可维护
18. 可持续性建设
时
间
线
GitFlow分支管理
开发分支(feature)
集成分支(develop)
发布分支(release)
主干分支(master)
集成分支创建
未来要集成发
布的功能点
下次集成发布
的功能点
变
更
单
A
变
更
单
C
进集成区A
集成区A的发布分支起
点,平台自动创建
develop分支作为集成分支,可配置
feature分支拉取自集成分支
release分支平台规范化管理
发布分支创建后,进“集成区
A”的代码合到发布分支
变
更
单
B
集
成
区
A
进集成区A后的bugfix or 功能
迭代自动合并回 集成分支
集
成
区
B
master分支暂不纳入分支管理
进集成区A后的
bugfix or 功能迭代
19. 可持续性建设
PD
持续集成区
需求录入
开发
需求验收
模块分支管理
持续开发
测试
PM
持续集成
单链路测试
持续运维
持续测试
版本计划
持续运维
版本集成区建立
完善研发流程机制
建设卡口和测试能力
集成前增加模块提测环节,为自动化过程
研发流程内提供卡口能力和度量能力,
提供有效的触发模式,同时测试任务从集
支持研发流程的可持续发展和持续优化
中变分散,最大限度的推动测试左移
模块分支管理
持续发布
建设持续集成能力
建设有效的分支管理以及GitOps能 建设非面向版本发布的持续集成、构建、验证
力,解决在开发过程中分支拉取、合 的能力,使研发专注于研发,降低版本发布过
并、版本发布等关键动作中面临的问题 程的参与程度
建设基于快照的快发能力
依赖于持续集成和持续验证,
最小化面向版本发布的快照的
验证需求
20. 有效价值建设
高效
度量
加速业务迭代
赋能业务创新
持续
研发效能度量
客户端
集成区
版本
人效
集成数据 构建数据 回归数据 监控数据 发布数据 需求/缺陷 变更
集成次数 构建时⻓ 回归时⻓ 稳定性 发布次数 数量 变更数量
集成时⻓ 构建成功率 回归通过率 性能 发布时⻓ bugfix时⻓ 完成时⻓
卡口通过率 包大小 缺陷数 舆情 patch次数 交付时⻓
21. 研发效能提升
•
•
•
•
更高发版效率,一月4版,一天n灰
更高质量,更高稳定性
更高工程师幸福感
更优的业务价值
标准通用/业务自定义/特殊定制研发流程
研发工作台
低代码
GitFlow
发版工作台
跨端
持续集成
业务流程自动化
版本迭代计划
云原生
正常/紧急版本集成
CheckList
版本集成区
插件开放体系
正式/灰度发布
22. 展望
研发共生生态
研发模式新形态 一云多端 监管合规
• 完善研发效能领域内的新型研发模式 • 完成基础设备服务化(BaaS+Faas), 合规体系建设:法务、安全、商务共建
建设
• 进行平台+工具+架构三个领域内的共
生建设,形成共生生态
• 低代码驱动,云端开发、云端测试、
云端构建,低成本高效率完成需求交
付
形成研发支撑的云端体系
• 形成以云原生形态下的构建体系,分布
式构建
• 支撑多端研发,PC、IOT、移动应用、
小程序等
整个合规体系,确保业务和代码的合规
合法
23.
24. THANKS