美团点评 梁士兴 - 从分层复用到自动化测试—看美团客户端架构的演变_部分1

柏清淑

2017/12/18 发布于 技术 分类

美团点评伴随着业务的飞速发展,客户端研发团队的规模从初期的20余人的发展为数百人,且分散在不同的业务团队。如此大规模的研发团队,如何保证高效的内外部协同效率? 美团与大众点评原本是两家独立运营的大型互联网公司,分别有着不同的积累和储备。两家的合并为业务带来巨大的好处:更多的流量、更多的用户。但同时也为技术团队带来了巨大的挑战:如何能够同时高效的在美团和大众点评两个App上实施业务开发? 突破了这些难题之后,我们希望继续提高我们的研发效率。经过系统性的分析,我们判断测试效率当前阶段的效率瓶颈,对应的解决思路是实施自动化测试。那么问题又来了,类似美团点评的业务在不停的快速发展和迭代,是否适合实施大规模的自动化测试?

文字内容
1. 从分层复⽤用到⾃自动化测试—看美 团客户端架构的演变 梁梁⼠士兴 美团点评 研究员
3. 梁梁⼠士兴 美团点评 研究员 梁梁⼠士兴,2009年年毕业于北北京航空航天⼤大学。毕业后在IBM中国研发中⼼心⼯工作了了5 年年。2014年年7⽉月份加⼊入到美团点评,现任职为技术研究员。 美旅基础服务平台负责⼈人,经历了了美团客户端业务架构演变的全部过程。因⽽而对 客户端的业务架构有了了进⼀一步的理理解和思考,愿意与⼤大家进⾏行行分享。
4. • 为什什么要建设客户端架构 • 美团客户端架构演变的三个阶段 • 原始状态—⼤大团购模式 • 业务隔离 & 基础设施、开发范式、多应⽤用复⽤用 • ⼯工程⾃自动化 • 未来的发展⽅方向
5. 客户端业务架构的背景 ⼩小型App ⼩小团队 不不定期更更新 ⼤大型App 主要业务载体 研发团队规模达 数百⼈人 ⾼高频率迭代更更新
6. 客户端业务架构的收益 标准化 统⼀一化 统⼀一的基础设施 统⼀一的逻辑分层 统⼀一的开发范式 聚焦业务逻辑 灵活⼈人⼒力力调配 新业务快速启动 ⾃自动化取代⼈人⼯工 更更好的服务 业务
7. 美团客户端的技术体系 业务逻辑 开发 业务开发 研发阶段 构建 测试 ⾃自动化测试⽤用例例 线上阶段 开发范式 模块化框架 FRP MVVM MVP 构建集成 业务 扫码 组件 分享 账户 ⽀支付 城市 UGC ⾃自动化测试框架 监控 ⽹网络监控 体系 业务指标监控 Crash监控 容器器监控 性能指标监控 技术栈 桥协议 基础 离线化 设施 地图 ⻛风控 布局 定位 存储 图⽚片 ⽹网络 埋点
8. 美团客户端架构发展的3个阶段 v0 蛮荒阶段 v1.0 业务隔离 基础设施 v1.2 多应⽤用 复⽤用 v1.1 开发范式 v2 ⾃自动化
9. v0. 蛮荒阶段 电影 美⻝⾷食 酒店 团购 其它 旅游 外卖 • 万物皆为团购 • 最“经典”的架构形式 • 单⼀一研发团队 • 业务遍地开花 • 移动⽀支付占⽐比超过 90%
10. ⾯面临的挑战 业务 业务差异化—需要深度定制 协同效率 团队规模急速扩张 研发团队拆分到各个业务 不不同业务间⼲干扰严重
11. v1.0. 解决问题—业务隔离 & 基础设施 酒 店 旅 游 美 ⻝⾷食 外 卖 电 影 新 业 务 平台基础设施 • 提供公共基础设施 • 各个业务之间解耦、物理理隔离 • 对新业务的接⼊入保持开放
12. 阶段性困难与收益 痛点 业务解耦 ⼯工作量量⼤大 开发同时进⾏行行重构 收益 业务间消除⼲干扰 各业务独⽴立编译 App⼆二进制集成 建议 提供标准业务模板 新业务做⼩小⽩白⿏鼠 短期可以接受代码拷⻉贝⾏行行为
13. v1.0. 复盘 进步的地⽅方 业务层⾯面:业务间实现了了隔离,消除 了了⼲干扰 ⼯工程层⾯面:实现了了⼯工程标准化,新业 务接⼊入⽅方式实现了了标准化 技术层⾯面:独⽴立编译 + ⼆二进制集成, ⼤大幅提升App的构建效率 仍需改进 开发层⾯面没有实现标准 化,代码复⽤用依然困难 ⼀一线团队研发效率并没 有显著提升 问题本质 要想开发层⾯面的标准化 需要制定开发范式
14. v1.1. 统⼀一开发范式背景 茴: ①回 ②囘 ③囬 ④廻 ⑤廽 ⑥逥 茴有六种写法,好像孔⼄乙⼰己也没学全! 同⼀一需求在客户端的实现⽅方法,恐怕不不⽌止六种! 业务模块的接⼝口设计,恐怕要更更加混乱!! 开发范式⽬目标:书同⽂文,⻋车同轨 实现开发⽅方式统⼀一化,业务模块接⼝口标准化
15. v1.1. 统⼀一开发范式实践 UI与模块 相对应 ⻚页⾯面(模块容器器) 模块 模块 模块 消 息 模块 总 线 模块 模块 模块内部 View 数据映射 命令执⾏行行 更更新 通知 ViewModel Presenter Model 测试程序 测试数据 ⾃自动化测试
16. v1.1. 统⼀一开发范式收益 ⾼高阶⼯工程师需求降低 对⽐比不不同阶段,效率、⾼高阶⼯工程师的变化: 标准⼯工作量量/标准⼈人⼒力力 业务线1 2014.7 X/Y 效率对⽐比 100% 开发效率明显提升: 模块复⽤用成为常态 ⾼高阶⼯工程⽐比例例 业务线2 2016.12 2X/1.5Y 133% ⾼高阶 低阶 独⽴立App 2017.8 8X/2Y 400%
17. v1.1. 统⼀一开发范式的困难 困难 代码重构成本⾼高 开发同时进⾏行行重构 建议 新需求涉及的⻚页⾯面同步重构
18. v1.2. 与点评合并带来的全新挑战 技术栈不不统⼀一 业务 组件 扫码 分享 账户 ⽀支付 城市 UGC 基础 设施 桥协议 离线化 地图 ⻛风控 布局 定位 存储 图⽚片 ⽹网络 埋点 后端服务不不统⼀一 公共参数 数据格式 把XX功能整体从美团 迁移到点评,就改改样式, 应该很快吧!!! 交互样式不不统⼀一 主题 交互 …
19. v1.2. 多应⽤用复⽤用 美团 点评 其它 业务 美团 专属 业务 复⽤用业 务 复⽤用 复⽤用业 务 点评 专属 业务 其它 业务 基础服务抽象层 美团基础服务 点评基础服务 抽象基础服务 隔离基础设施差异带来的影响 酒旅基础设施 酒旅基础设施 ⼆二 ⼆二 进 公共基 基础服务抽象层 隔离 基础服务抽象层 公共基 进 制 础服务 美团基础服务 接 点评基础服务 础服务 制 接 ⼊入 ⼊入 美团旅⾏行行 ⾃自动化测试⼯工程 美团 点评 专属 专属 复⽤用业务 构建过程隔离差异化部分 美团 专属 业务 复⽤用业 务 公共基 础服务 酒旅基础设施 基础服务抽象层 美团基础服务 测试⽤用例例 酒旅⾃自动化测试基础服务 美团⼯工程 点评⼯工程
20. v1.2. 多应⽤用复⽤用收益 多APP复⽤用需求呈现常态化 60PD 开发时间 45PD 30PD 15PD 0PD 统⼀一架构之前 iOS需求1 迁移时间 代码复⽤用率 100% 75% 50% 25% 0% iOS需求1 Android需求1 Android需求2