MBC业务标准化容器在美团的实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. MBC业务标准化容器 在美团的实践 廖子尧 前端技术专家
2.
3. 自我介绍 3 • 2017年10月加入美团 • 先后负责过美团首页、美团大搜的架构优化工作 • 搭建了MBC移动业务容器的动态化解决方案 • https://github.com/jeasonlzy
4. • 传统模式 • MBC业务标准化容器 • 方案落地实践 • 未来规划 收获: 01 如何从现有的业务出发,对业务进行建模抽象,打造一套通用 的业务架构来提升开发效率 02 如何对现有的开发模式进行优化,打造一套高效的产研工具闭 环来提升产研效率 4
5. 传统模式 业务开发上线流程
6. 传统模式 - 业务痛点 页面结构变化 特点 用户流量大 体验要求高 重展示轻交互 重运营重策略 挑战 性能优异 埋点可靠 快速交付 样式灵活 方案 Native + 动态布局 问题 上线效率低 开发成本高 动态力度小 模板样式变化 01 样式变化多 02 模板增长快 03 增长模板 200+ 动态布局:https://tech.meituan.com/2019/09/19/litho-practice-in-dynamic-program-mtflexbox.html
7. 传统模式 - 流程痛点
8. 从研发流程解决?
9. 新研发模式 - 理想流程
10. 新研发模式 - 解决思路 标准化 动态化 配置化 数据标准化 动态孵化页面 页面配置化 埋点标准化 客户端容器动态化 模板配置化 交互标准化 服务端容器动态化 埋点配置化 设计语言标准化 智能化 千人千面
11. MBC业务标准化容器 以标准化为基础的,可以提升产研开发效率的工具链
12. MBC全景 美团业务标准化容器 ( M eituan B usiness C ontainer) • 以标准化协议为基础 • 以数据驱动为核心 • 以动态配置为手段 • 产研开发提效的工具链
13. 标准化 - 业务建模 页面布局结构 模块顺序 卡片样式 元素字段 色彩风格
14. 标准化 - 业务建模 页面 卡片/元素 模块 状态栏组件 卡片1 卡片2 导航栏组件 下拉刷新组件 元素1 卡片3 元素2 卡片4 列表组件 模块1 拆 模块2 模块3 加载更多组件 合 1. 作为数据入口点,负责整体结构 1. 模块功能聚焦,边界清晰 1. 样式变化种类繁多 2. 处理与后端数据的关联展示 2. 内部排列方式可枚举 2. 具备基本的用户交互 3. 由模块组成 3. 由卡片组成 3. 承载大部分的UI实现 元素 3
15. 标准化 - 数据标准化 overlap: • 导航栏与状态栏的位置关系 needCache: • 与页面的缓存模式结合使用 dataType: • 描述两次数据之间的行为 • replace、append、modify、update refreshTop: • 是否支持下拉刷新 • 下拉刷新的样式 refreshBottom: • 是否支持加载更多 • 加载更多的样式 • 是否支持数据预加载 • 是否支持视图预加载 actionBar、statusBar: • 描述导航栏与状态栏的样式 headers: • 页面头部,无法下拉 groups: • 核心列表区 extra: • 辅助控制字段
16. 1 标准化 - 数据标准化 2 网格布局 模块排列方式抽象出多种布局结构 • 数据结构统一 • 接口差异大 • 关键字段统一 • 控制字段乱 • 数据解析统一 • 层级不规范 4 7 横滑布局 1拖N布局 5 8 banner布局 开发成本高 分Tab布局 13 17 20 18 21 23 22 24 有标准 无标准 10 12 16 19 6 9 11 15 流式布局 3 25~29 30 31 32 适配成本高 33 理解成本高 瀑布流布局 36 34 35 37 38 14
17. 标准化 - 埋点标准化 灵犀 广告 Metrics mge2 mge4 外卖广告 FPS pv mv 广平广告 启动时间 tag 埋点上报 卡顿率 埋点 策略 点击策略 露出策略 停留策略 埋点 类型 点击埋点 曝光埋点 统计埋点 重复过滤 性能埋点 埋点配置下发
18. 动态化 思考:如何保证前后端在不同的业务场景下,都能遵循同一套 标准协议?
19. 动态化 - BFF破局者 BFF是 (Backend For Frontend) • 服务于前端的后端 • 解决多端业务耦合的问题 • 服务自洽,谁使用谁开发 BFF的困境 • 技术栈不统一,学习难度大 • 后端开发流程,客户端上手成本高 • 服务粒度重,运维成本高
20. 动态化 - 容器方案 服务端动态化容器 数据源容器 API配置 编排服务 客户端动态化容器 业务服务 热部署 API网关 业务模块1 DSL引擎 Java引擎 Android/iOS 业务模块2 API网关 业务服务 Local引擎 在线编译 动态孵化新页面 业务模块3 API网关 我们的方案 • 服务编排 + 热部署降低发布成本 • 容器负责运维 • 客户端负责业务逻辑 • 模块使用Java开发成本低、性能高 降低开发成本 快速上线 业务服务
21. 动态化 - 实战示例 • 编写DSL,获取业务数据 • 编写业务模块,将业务模型转化成标准化协议数据
22. 动态化 - 实战示例 配置数据源 配置API
23. 动态化 - 客户端页面容器 效率 性能 灵活性 • 三足鼎立,不可兼得 • 内置9种布局算法 • 比MRN性能好、比插件化兼容性高
24. 动态化 - 客户端模板容器 解析 标签树 节点树 <Container> Container <Container> <Container> <Image> <For> 表达式计算 Container 视图树 FlexLayout Container FlexLayout FlexLayout XML <Text> • 以Flexbox规范为核心 • 绑定视图与业务数据 • 动态下发渲染 Image 数据绑定 Text Text Text ImageView TextView TextView TextView
25. 配置化 如何打造产研配置能力形成闭环?
26. 配置化 - 模板配置化 • 降低技术壁垒,上手简单好用 • 嵌入研发流程,打造产研闭环 • 模板丰富,满足多样化场景 • 云真机实时预览,所见即所得 数据绑定 模板库
27. 配置化 - UI2Code 设计稿转代码是前端工程师日常重复 性工作,工作复杂度低,工时占比高 业界方案: • 一种是通过训练神经网络,从图片或 草图直接生成代码 • 一种是基于Sketch源文件,从中解析 出图层信息转化成DSL并生成代码 算法准确率不高 02 01 代码可读性差 03 研发流程覆盖窄
28. 配置化 - UI2Code 我们的方案: • 组件识别 • 横竖切割算法 + 模型选择算法 • 可视化干预 • 属性推断 + 业务信息绑定 • 深度集成研发流程
29. 配置化 - UI2Code DSL生成过程
30. 配置化 - UI2Code 线上案例:
31. 配置化 - 埋点配置化 • 支持可视化配置 • 实时圈选控件 • 支持携带业务特有数据 前端 配置后端 云真机平台
32. 配置化 - 埋点配置化 效果演示:
33. 落地与实践 MBC方案解决的问题: 1 核心业务既要高性能又要灵活性的问题 2 MBC方案适用场景: 01 团队对页面的性能要求 和稳定性要求较高,还 期望有不错的动态能力 02 业务以展示为主的,诸 如列表型首页、商品列 表页、Feed流页面、搜 索页面等 业务开发流程中产研配合效率低下的问题 03 MBC方案的缺点: • 前期学习成本高 • 业务首次接入成本高 后端接口模型稳定,但 客户端技术方案、展示 样式多变 04 现有的产研流程配合效 率成为了业务发展的瓶 颈
34. 收益 ↓ 50 % ↑ 60 % 人力成本 产研效率 50 % 启动时长对比 MBC服务端容器节点耗时 业务覆盖度 MBC接口成功率 FPS对比
35. 未来规划 动态化 配置化 进一步增强逻辑动态化 能力,收敛可交互的行 为,支持交互更加复杂 的页面与逻辑 支持页面配置化能 力,将全页面配置能 力开放给RD、PM、 运 营 , 完全解放RD对后 端接口的适配工作 智能化 彻底解耦样式与数 据 , 做 到 页面结构、模 板样式、页面内容三者 的千人千面
36.
37.
38. MBC_业务标准化容器在美团的实践 扫描二维码 提交议题反馈

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 23:34
浙ICP备14020137号-1 $Map of visitor$