美团到店前端工程化架构演进
如果无法正常显示,请先停止浏览器的去广告插件。
1. 美团到店前端架构标准化演进
张芳
美团/到店平台技术部
2.
3. 个人介绍
上海交通大学毕业后加入美团
负责过营销C/B端业务,主要做低代码平台的建
设和维护
目前在到店平台技术部负责到店前端研发框架基
础设施建设
个人主要兴趣点是前端工程化和工具链发展。
4. 目录
• 业务背景简介
• 架构演进历程
• 阶段一 —— 规范化
• 阶段二 —— 工程化
5. 你能得到什么
• 如何在一个大型团队中快速落地架构标准化演进
• 演进过程中有哪些关键的方法和实践
• 标准化架构演进能给团队带来什么样的收益
6. 目录
• 业务背景简介
• 架构演进历程
• 阶段一 —— 规范化
• 阶段二 —— 工程化
7. 业务背景
业务发展,团队规模快速扩大,技术「熵增」问题严重
8. 2019年初到店前端团队技术架构
需求
组件类库
设计
开发
联调
测试
语言框架
技术选型
构建
上线
监控
运维
基础架构
故障
运营
流程规范(多套)
研发框架
10+自研
Lego/Node-Server/…
研发支撑
9. 到店前端团队挑战
技术问题
管理问题
成本
无统一的工具抓手来提升整体能力基线
效率
上层解决方案无法统一建设及快速复用
质量
10. 架构标准化目标
需求
组件类库
设计
开发
联调
测试
语言框架
技术选型
构建
上线
监控
运维
基础架构
故障
运营
流程规范(一套)
研发框架
研发支撑
11. 目录
• 业务背景简介
• 架构演进历程
• 阶段一 —— 规范化
• 阶段二 —— 工程化
12. 目录
• 业务背景简介
• 架构演进历程
• 阶段一 —— 规范化
• 阶段二 —— 工程化
13. 架构标准化第一步
规范先行
规范先行
规范先行
14. 统一流程规范
建立跨团队统一认知
Why
为规模化建设工程化能力打基础
降低沟通协作成本学习成本
减少因规范不一致造成的质量问题
15. 统一流程规范
如何制定
How
如何落地
16. 统一流程规范
卡控工具
运营大盘
抓手
统一基础设施
落地
存量项目按需,规范渐进接入
增量项目全量,规范全部达标
策略
先增量,后存量
流程
发起提
案
委员会
评审
公示两
周
修改
业务规范
规范
基础规范
发布提
案
工具建
设
运营
制定
17. 统一基础设施抓手
基础设施
研发规范
研发流程
需求管理
-Ones 设计平台
-Ingee 代码托管
-Code 需求规范 设计规范 开发规范 联调规范
开
发 联
调
需
求
设
计
API管理
-PApi
CI/CD 平台
-Talos
测试规范
测
试
构建
构
建
CDN
监控-Raptor
S3
上线规范
上
线
埋点-灵
犀
监控
运维
大盘-Tinker
运维规范
故障
运营
运营平台
-COE
运营规范
18. 核心基础设施抓手——发布平台
连接开发和运维关键环节
发布平台
组织闭环,需求响应快
19. 发布平台架构
插件市场
TL发布卡控
Source
Code
核心能力
lint
build
插件机制
before before build
-all -build
after-
build
before- deploy after- after-
deploy
deploy rollbac
k
pipeline流水线
jenkins集群
服务依赖
git
S3服务
docker
灰度
…
Target
Code
项目管理
研发度量
状态流转引擎
CDN服务
域名服务
20. 基于发布流水线建设规范卡控抓手
标准发布
流水线
业务自定义
发布流水线
TL发布 代码拉取 依赖安装 工程规范
检查 Lint规范检
查 工程依赖
收集 标准化工
具接入检
查 监控规范
检查 构建产物
备份 构建产物 TL发布 工程初始
化 依赖安装 工程规范
检查 Lint规范检
查 Test单测
规范检查 构建
域名安全
检查 ES高级语
法检查 工程依赖
收集 标准化工
具接入检
查 监控规范
检查 构建产物
备份 构建产物
发布
监控数据
diff 人工确认
发布
Test单测
规范检查
构建
人工确认
21. 运营大盘
22. 小结
通过流程规范&基础设施统一
建立起良好的标准化落地抓手
具有了规模化建设工程能力的基础
23. 目录
• 业务背景简介
• 架构演进历程
• 阶段一 —— 规范化
• 阶段二 —— 工程化
24. 业务背景
node基础架构运维成本高
配套设施不完善导致的质量问题多
中后台场景多,秒开、SEO诉求弱
25. 基础架构统一
基于S3纯静态架构
26. 基于S3纯静态架构——运行时架构
运行时
服务网关
浏览器
鉴权
访问域名
Nginx
html
主文档
商家账号
文件上传
返回
静态资源 失败
回源访问
静态资源
成功
图片上传
http请求
S3服务
CDN
后端http服务
后端
Pigeon
/ RPC
服务
27. 基于S3纯静态架构——开发架构
开发
业务代码开发
资源构建
资源备份
构建
资源部署
灰度部署
域名配置
发布流水线
部署
异常回滚流水线
运维
CDN基础运维
公共域名运维
流量监控
S3基础运维
安全策略
域名基础运维
28. 小结
基础架构统一大大释放了我们的服务运维成本
同时提升服务性能
29. 业务背景
开发规范落地成本迭代成本高
研发基建未统一集成开箱即用
研发流程中基础设施服务需要手动对接
缺少各类场景下的最佳实践
30. 统一研发框架
框架约束
开箱即用
服务打通
Rome 研发框架
最佳实践
31. 研发框架架构图
应用类型
工程方案
SPA
MPA
微前端
…
质量 效率 体验 领域最佳实践
CDN容灾 按需编译 约定式路由 微前端
白屏监控 差量构建发布 调试辅助工具 SSR
核心能力
框架规范
SPA+ MPA
插件机制
语言规范
基建统一
编码规范
工程规范
标准化研发工作流
技术栈规范
32. 为什么要做框架约束?
工程目录
千人千面
项目依赖
碎片化严
重
基建使用
参差不一
33. 框架约束如何实现
工具收敛
脚手架
版本管理
工具卡控
规范落地
监控
本地cli卡控
工具赖统一收敛
基建统一收敛
埋点
升级运维
请求
sass
eslint
webpack
发布流水线卡控
依赖卡控
规范统一
目录规范卡控
技术栈规范
基础语言框架 路由管理 状态管理
css方案 语言编译 基础类库
工程规范(目录结构/文件命名/readme/changeLog/分支规范)
编码规范(代码风格/代码注释)
语言规范(ES/TS)
pr卡控
分支命名卡控
编码风格卡控
34. 目录规范统一
35. 依赖统一收敛
36. 基建统一引入
规范制定
编译时注入
37. 开箱即用的插件能力
一键快速接入
38. 一行代码接入监控
39. 一行代码接入CDN容灾
40. 服务打通
开发
联调测试
发布
监控运维
git仓库
发布平台
脚手架
CDN容灾
埋点服务
API管理平台
灰度平台
指标监控大盘
水印服务
…
自定义域名服务
41. 10分钟启动并发布一个新项目
工作台消息推送
项目创建
项目发布
42. 垂直场景的最佳实践
组件一致性最佳实践
43. 业务场景1——沉淀资产发现难,复用效率低
老大,这个需求写完了,手速是不是
666,能加� 不?
咦?这个需求里面的组件咱们业务
组件库有沉淀,你又重写了一遍?
老大我看了下是组件库的文档不完
善,当时没有注意到这个组件... 来
不及重新做了,明天要上线�
44. 业务场景2——UI一致性难保障,沉淀效率低
这次需求的视觉稿搞定,我下班啦,
剩下交给你了�
这不是和上次一样的功能和交互场景
吗,为啥视觉稿不一样啊?� ♂
不好意思,没注意上次需求的视觉稿,
按照新的视觉来实现吧~
啊,组件又要重新写了�
45. 组件一致性最佳实践方案
资产平台
平台打通
文档展示
设计资产
资产分析
资产管理
资产结构化
印迹设计平台
C2D
D2C
PRO Code
生产工具链
资产工具
开发 测试
组件
开发
demo
开发 单元
测试
覆盖率
检测
工程规范
设计视觉稿
消费工具链
构建 发布
多模块
类型 Npm
包管理
资产结
构化
目录规范
注释规范
生产 运维
IDE插件
自动化代码生成 升级运维
测试规范
文档规范
资产规范
资产协议
声明规范
版本禁用
调用规范
46. 生产环节
多模块类型的Npm包
产物
源代码
标准发布流水线
可视化资产信息
设计资产
47. 消费环节
48. 小结
研发框架统一主要解决了研发过程中的效率和成本问题
让业务只关注业务逻辑的开发
49. 总结
规范化
工程化
标准化
50.
51. Thanks
52. Q&A