字节跳动基于Serverless的前端研发
如果无法正常显示,请先停止浏览器的去广告插件。
1. 字节跳动
基于 Serverless 的前端研发模式升级
字节跳动 Web Infra - 王磊
2.
3. 王磊
字节跳动 Web Infra 成员,在组件市场、多端可视化搭建、发布渲
染系统等方向有过⻓期的专注和沉淀。目前负责字节跳动通用前端
部署平台 Goofy Deploy 中的 Web 部署部分。
4. 目录
1. 大前端时代前端职责和挑战
2. 字节跳动常⻅的业务形态
3. 传统研发模式与挑战
4. 基于 Serverless 的研发模式
5. 监控 & 运维
6. 总结和展望
2
5. 大前端时代前端职责和挑战
1. 前端职责的转变
2. 前端面临的挑战
6. PC 时代
前端工作
切图、写样式、写交互、兼容各种浏览器等
组件化、前后端分离等
专注于浏览器相关的事情
7. 移动互联网时代
前端工作
跨端:移动端 Web(H5)、React Native、Flutter …
工程:基于 Node 的前端工程
浏览器领域 —> android & ios(端) + 前端工程
8. Serverless 时代
前端工作
CSR、SSR、BFF、一体化、微前端、跨端、Serverless
Serverless
从单端到多端,从 Client 端到服务器端
涉足领域广,对前端要求更高,前端全栈化
9. 大前端时代前端职责和挑战
1. 前端职责的转变
2. 前端面临的挑战
10. 前端面临的挑战
知识
体系
工作
内容
基础知识:JS、CSS、Node 前端框架:React、Vue 打包工具:Webpack、Vite
微前端:qiankun、Garfish 跨端工程:RN、Flutter 后端框架:Koa、Express
后端知识:Redis、MQ、进程/协程、文件存储、监控报警
偏向前端:写组件、写⻚面、兼容、性能优化、跨端工程等
偏向后端:写 BFF、写 SSR、监控运维、集群管理等
前端全栈化,涉及大量后端知识和工作,挑战大
11. 目录
1. 大前端时代前端职责和挑战
2. 字节跳动常⻅的业务形态
3. 传统研发模式与挑战
4. 基于 Serverless 的研发模式
5. 监控 & 运维
6. 总结和展望
2
12. 字节跳动常⻅的业务形态
全球部署
CSR SSR BFF
C 端业务 首屏性能要求高 前后端胶水
微前端
后端管理系统
13. 目录
1. 大前端时代前端职责和挑战
2. 字节跳动常⻅的业务形态
3. 传统研发模式与挑战
4. 基于 Serverless 的研发模式
5. 监控 & 运维
6. 总结和展望
2
14. 传统研发模式与挑战
CSR + BFF
15. 传统研发模式与挑战
静态 Server
回源
CDN上传服务
文件存储
文件服务
上传 CSS / JS / 图片等
开发
登陆认证
业务代码
CSR
AB 灰度
系统运维 …
域名接入 …
AB 管理 …
BFF 服务
部署 HTML
静态 Server
集群部署
静态集群
调用
权限管理
系统运维
前端全栈化:除了业务逻辑,需开发很多基础服务
流量管理
部署系统
开发
BFF
BFF
集群部署
BFF 集群
项目管理
发布系统
路由管理
16. 传统研发模式与挑战
研发
知识
运维
挑战
沉淀
资源
人力
01 研发:研发成本高,不仅需开发业务,还需要开发基础服务
02 运维:运维成本高,要关注 QPS、内存、机器数量等数据
03 资源:流量无法精准估计,需准备充足机器,资源使用率低
04 人力:对研发同学的能力要求高,招聘难度大
05 沉淀:业务自建,没有体系化,无法沉淀最佳实践
06 知识:需了解后端知识,研发模式不符合前端,对前端不友好
17. 目录
1. 大前端时代前端职责和挑战
2. 字节跳动常⻅的业务形态
3. 传统研发模式与挑战
4. 基于 Serverless 的研发模式
5. 监控 & 运维
6. 总结和展望
2
18. 基于 Serverless 的研发模式
1. 策略和架构
2. DevOps / CICD
3. 前端实践
19. 策略
框架
FaaS
…
BaaS
监控
运维
研发
业界 前端
Serverless Serverless
一体化
云函数
线上
运行
部署
SSR
单点研发
调试
基于 Serverless 打造一站式前端解决方案
前端全生命周期
20. 策略
2 个目标
基础能力平台化 友好的开发体验
无需关注前端基础服务,平台提供,开箱即用,
简单配置即可 无需感知 SSR、BFF 开发差异 ,开发和 CSR 一
样轻松;支持 CSR 到 SSR 到 一体化 再到 微前
端 渐进式开发。
21. 基础能力平台化
部署能力 AB / 灰度 全球部署 监控运维 系统集成
微前端 人群策略 国内 日志 工程方案
SPA 百分比 美国 Metrics 发布系统
MPA Header 新加坡 报警通知 研发工作台
SSR Query 欧洲 指标大盘 LowCode
前后端一体化 客户端版本 国内测试 断点调试 服务编排
CDN UA 国外测试 性能分析 前后端调试
… … … … …
22. 友好的开发体验
JS
上传
CSS
图片
…
CLI & 框架
前端
简单配置和开发即可支持
传统前端 + 框架能力
BFF 和SSR,和开发CSR
+ 平台能力 = 全栈前端
一样轻松
云编译
开发 & 调试
全球化
HTML 路由配置
SSR 产物 微前端配置
发布控制台
BFF 产物 AB/灰度配置
… …
Serverless
23. 整体架构
线上运行
研发 & 配置 & 部署
上层产品
Web部署服务 一站式前端工作台
搭建系统 DevOps 流水线服务
…
接入层
原子服务
OPEN API
工程方案
CLI
Jupiter
开发协议
部署协议
SSR 协议
限流 项目分发 分流策略 登陆认证
流量统计 负载均衡 安全防控 差异抹平
…
Eden
BFF 协议
统一接入层
TLB
网关
…
静态 Web Server SSR Server
微前端 Server BFF Server
Server
基础协议
…
部署系统
项目管理 路由管理 AB 管理 监控报警
CSR 发布 SSR 发布 BFF 发布 微前端发布
…
监控平台 打点 日志 … 监控报警
缓存服务 对象存储 配置服务 …. BaaS
Node 运行时 V8 运行时
FaaS 基础 Node SDK
运行时
基础服务
24. 基于 Serverless 的研发模式
1. 策略和架构
2. DevOps / CICD
3. 前端实践
25. DevOps & CI / CD
编译
代码检测
线下 / AB / 灰度 测试
人工卡点
各种检查,比如性能
人工卡点
线上部署
26. 基于 Serverless 的研发模式
1. 策略和架构
2. DevOps / CICD
3. 前端实践
27. 前端实践
Serverless CSR
Serverless SSR
无需感知 SSR、BFF 开发带来
的差异 ,和 CSR 开发一样轻松。
支持 CSR 到 SSR 到 一体化
再到 微前端 渐进式开发。
Serverless 前后端一体化
Serverless 微前端
28. CSR 开发流程
CSS
上传
文件存储
JS
前端
开发 CSR
云编译
.html
部署控制台
数据配置
部署
.es6.html
Web Server
路由配置
AB 配置
前端只需要开发业务逻
…
辑,简单配置即可上线
29. CSR 案例
30. CSR 运行流程
回源
JS
文件存储服务
CSS
AB 处理
CSR
HTML
网关 项目分发
处理 限流
html
获取文件
文件存储服务
ES5、ES6 识别
.es6.html
…
Polyfill
UA 处理
按需返回浏览器需要的 Polyfill
31. 前端实践
Serverless CSR
Serverless SSR
无需感知 SSR、BFF 开发差异 ,
开发和 CSR 一样轻松。
支持 CSR 到 SSR 到 一体化
再到 微前端 渐进式开发。
Serverless 前后端一体化
Serverless 微前端
32. SSR 开发流程
CSS
开发 SSR
文件存储
JS
简单配置即可实现 SSR
前端
上传
云编译
.html
部
Web Server
署
Bootstrap.js
控
SSR RUNTIME
制
台
缓存配置
编译
SSR Server
SSR RUNTIME
SSR 启动文件
33. SSR 案例
34. SSR 运行流程
SSR 超时或失败
SSR
HTML
网关处理 渲染处理
Redis 缓存策略
SSR 服务发现
SSR Server
CSR ⻚面
35. 前端实践
Serverless CSR
Serverless SSR
无需感知 SSR、BFF 开发差异 ,
开发和 CSR 一样轻松。
支持 CSR 到 SSR 到 一体化
再到 微前端 渐进式开发。
Serverless 前后端一体化
Serverless 微前端
36. 前后端一体化开发流程
CSS
上传
文件存储
JS
前端
开发 一体化
云编译
Web Server
.html
部
署
控
Bootstrap.js
简单开发即可支持一体化(BFF)
制
SSR RUNTIME
SSR Server
台
BFF RUNTIME
BFF Server
编译
37. 前后端一体化 案例
配置同 SSR 一样,BFF 发布默认探测
38. 前后端一体化 运行流程
SSR 超时或失败
一体化
HTML
网关处理 渲染处理
Redis 缓存策略
CSR ⻚面
http 调用
SSR 服务发现
RPC 调用
SSR Server
BFF Server
39. 前端实践
Serverless CSR
Serverless SSR
无需感知 SSR、BFF 开发差异 ,
开发和 CSR 一样轻松。
支持 CSR 到 SSR 到 一体化
再到 微前端 渐进式开发。
Serverless 前后端一体化
Serverless 微前端
40. 微前端开发流程
简单开发一个主应用,接入已有子应用即可
开源地址:https://github.com/bytedance/garfish
41. 微前端开发流程
前端
开发 CSR 子应用
云编译
CSR 产物
控制台
部署
Web Server
前端
开发 SSR 子应用
云编译
SSR 产物
控制台
部署
SSR Server
前端
开发 一体化 子应用
云编译
一体化产物
控制台
部署
一体化 Server
主子模块关系
前端
开发微前端主应用
CSR、SSR 或一体化项目
云编译
主应用产物
控制台
微前端菜单
微前端 Server
其他
42. 微前端案例
43. 微前端案例
44. 微前端运行流程
微前端
主应用
网关处理
获取 HTML 注入到 HTML
CSR 主子模块关系
SSR 菜单处理
前后端一体化 …
请求子应用
子应用
HTML 处理
微前端 Server
45. 目录
1. 大前端时代前端职责和挑战
2. 字节跳动常⻅的业务形态
3. 传统研发模式与挑战
4. 基于 Serverless 的研发模式
5. 监控 & 运维
6. 总结和展望
2
46. 监控 & 运维
1. 业务监控和指标大盘
2. 日志系统
3. 运行时监控和调试
47. 业务监控和指标大盘
48. 监控 & 运维
1. 业务监控和指标大盘
2. 日志系统
3. 运行时监控和调试
49. 系统日志
50. 监控 & 运维
1. 业务监控和指标大盘
2. 日志系统
3. 运行时监控和调试
51. 运行时监控和调试
52. 目录
1. 大前端时代前端职责和挑战
2. 字节跳动常⻅的业务形态
3. 传统研发模式与挑战
4. 基于 Serverless 的研发模式
5. 监控 & 运维
6. 总结和展望
2
53. 总结 & 展望
Runtime FaaS + BaaS
Serverless +
底层 Runtime 进一步优化,解决 完善 FaaS 生态,和现有 BaaS 服 在 FaaS + BaaS 的基础上,提供从
冷启速度不够快的问题,更好对应 务能够有更好的结合,为上层建设 框架到开发,从开发到部署,从部
突发流量。 提供基础。 署到线上运行等一站式研发平台。
54. 团队介绍
团队招聘
团队公众号
55. 谢谢