基于 Serverless 的腾讯在线教育中后台业务落地实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 基于 Serverless 的腾讯在 线教育中后台业务落地实践 杨波 腾讯IMWeb高级前端工程师
2.
3. • 团队Node服务开发回顾 • 企鹅辅导智能题库Serverless探索与实践 • Serverless一体化建设 • 未来展望
4. 预期听众收益 避免Serverless落地过程中踩坑 了解Serverless落地中常⻅问题解决思路 了解Serverless团队化建设的几个要点
5. 团队Node服务开发回顾
6. 团队Node服务开发回顾 前端团队介绍 腾讯IMWeb团队 技术矩阵 React/Vue/Angular Node/小程序/Wasm/Flutter… 系统建设 DevOps系统 低代码平台 WEB/Node框架… 负责产品 团队数据 成员人数100+ 发布次数 160+/周 GIT COMMIT 1000+/天
7. 团队Node服务开发回顾 IMWeb的Node开发场景的变化 Node接入层 业务中台 运营活动 管理系统 SEO优化 直出场景 2015 SSR 2017 逻辑开发 2018 前端全栈 团队协同 体系化运维 2019 上云
8. 团队Node服务开发回顾 前端团队全栈研发全景图 产品孵化 H5 PC 诊断 研发支撑 告警 全链路日志 业务代码 全量日志检索 运营系统 管理后台 小程序 配置系统 消息系统 服务组件 基础组件 … … 压测调优方案 业务组件 切流灰度系统 流量异常 COS Redis DAO CSRF 登录 二维码 成功率 IMServer 监控组件 加锁 缓存 TTS OCR 接口耗时 IMLog CDN 频控 队列 数学公式 口语测评 CD系统 CD系统 自动化测试 业务返回码 云监控 Quality 腾讯云FASS 中台服务 腾讯云BASS 业务后台 Runtime CI系统 本地开发套件 Devops
9. 腾讯企鹅辅导Serverless探索与实践
10. 腾讯企鹅辅导Serverless探索与实践-智能题库 企鹅辅导上课模型 1 老师课前备课 2 学生课前测试 3 老师直播上课 4 学生课中测试 6 老师批改作业 5 学生课后作业 基础能力 智能题库
11. 腾讯企鹅辅导Serverless探索与实践-智能题库 题库系统当前架构 H5 系统 题库系统 考试系统 批改系统 PC WEB 组件 选择题 解答题 口语题 反馈系统 … 适配多端 Android/IOS 适配多业务 IPAD Windows客户端 小程序 数据 测评 解析 试卷 考试 …
12. 腾讯企鹅辅导Serverless探索与实践-智能题库 题库系统优化-方案思考 目标 思考 方案 适配多端 接口原子化 接口裁剪 适配多业务 接口适配 非IO密集场景 免运维诉求 低成本诉求 Serverless BFF BFF Serverless
13. 腾讯企鹅辅导Serverless探索与实践-智能题库 1、如何复用现有Node框架 2、后台接口如何上BFF 问题分析 3、SCF BFF性能优化方向 4、SCF中数据库的使用
14. 腾讯企鹅辅导Serverless探索与实践-智能题库 Controllers Logic 1、如何复用现有Node框架 IMServer(KOA) Routers SCF main_handler Node Server API Gateway HTTP HTTP IMServer请求流 IMServer透传数据格式 SCF透传数据格式 如何解决格式差异? SCF请求流
15. 腾讯企鹅辅导Serverless探索与实践-智能题库 1、如何复用现有Node框架 HTTP API Gateway SCF main_handler 通信 UDS SCF请求模型 IMServer(KOA) Node Svr Routers Node Svr请求模型 时延 吞吐量 固定端口号 UDS(Unix Domain Sockets) 2US 1.73 M/S 不需要 TCP sockets 6US 0.25 M/s 需要 对比指标 通信方式 Controllers
16. 腾讯企鹅辅导Serverless探索与实践-智能题库 1、如何复用现有Node框架 init Node Svr trigger listen HTTP API Gateway 入口 IMServer(KOA) UDS通信文件 trigger req SCF mian_handler 进程间通信模式 Routers Controllers
17. 腾讯企鹅辅导Serverless探索与实践-智能题库 旧接口 外网接口 CGI1-1 CGI2-1 通用反向代理 业务模块代理 后端逻辑服务 CGI3-2 新接口 … NGINX 2、后台接口如何上BFF 后台Proxy(cmd调用) CDN回源代理 SVR1 SVR2 SVR3 cmd1-1 cmd2-1 cmd3-1 cmd1-2 cmd2-2 cmd3-2 cmd1-3 cmd2-3 cmd3-3 后台公共逻辑库 直出 … SVRN … 后台接口架构
18. 腾讯企鹅辅导Serverless探索与实践-智能题库 旧接口 2、后台接口如何上BFF 新接口 BFF1 业务模块代理 后台Proxy(rpc调用) BFF2 BFF3 … BFF RPC调用 后端逻辑服务 SVR1 SVR2 SVR3 cmd1-1 cmd2-1 cmd3-1 cmd1-2 cmd2-2 cmd3-2 cmd1-3 cmd2-3 cmd3-3 SVRN … SVR1 后端原子 后台公共逻辑库 原子1-1 原子1-3 细粒度 单逻辑 易测试 SVR2 SVR3 SVRN 原子3-1 原子2-3 原子3-2 原子3-3 …
19. 腾讯企鹅辅导Serverless探索与实践-智能题库 BFF1 BFF2 新接口 旧接口 2、后台接口如何上BFF BFF3 … 新接口 BFF RPC调用 现有原子能 是否可用 SVR1 后端原子 原子1-1 原子1-3 SVR2 原子2-3 SVR3 SVRN 原子3-1 Y … 原子3-2 原子3-3 前端BFF闭环 N 后台新增原子
20. 腾讯企鹅辅导Serverless探索与实践-智能题库 2、后台接口如何上BFF 旧接口 新接口 协议约定通用字段 协议 前后端约定通用数据字段 SDK下游寻址优化 SDK 解决同子网IP相同的问题 SCF RPC调用如何处理? 通用字段
21. 腾讯企鹅辅导Serverless探索与实践-智能题库 APP ⻚ 面 Windows客户端 题目 H5 试卷 PC WEB 解析 分数 小程序 … 前端 业务逻辑闭环 题库架构 Serverless BFF BFF 接口 API 层 接 口 RPC调用(通用协议,标准SDK) 原子逻辑 原子逻辑 登录 权限 原子逻辑 存储 缓存 … … 业务逻辑 基础逻辑 后端 数据逻辑闭环
22. 腾讯企鹅辅导Serverless探索与实践-智能题库 USER STGW 接入层 APIGATEW NGINX 3、SCF BFF BFF性能优化方向 Serverless BFF层 SCF 后台原子 后台原子层 存储资源
23. 腾讯企鹅辅导Serverless探索与实践-智能题库 3、SCF BFF性能优化方向 接入层 BFF层 后台原子层 USER STGW BFF 后台原子 开启就近访问 NGINX APIGATEW 存储资源 SCF SCF多地部署 冷启动优化 同一网络调用 RPC调用 业务接口缓存 原子接口缓存 读写分离 … … …
24. 腾讯企鹅辅导Serverless探索与实践-智能题库 3、SCF BFF性能优化方向 什么是冷启动? 冷启动 优化 云函数被invoke时创建新实例来处理请求, 新实例从创建到启动完成的这个过程 避免创建新实例 优化思路 提升冷启动速度
25. 腾讯企鹅辅导Serverless探索与实践-智能题库 3、SCF BFF性能优化方向 冷启动 优化 实例复用 SCF启动过程 实例预留:预先启动一些实例 避免创建新实例 实例加热:定期加热实例 实例预请求:业务上按需预请求 加快响应:缓存逻辑&同步改异步等 下载&部署速度 提升冷启动速度 提升下载速度:代码精简压缩 提升启动速度:减少服务启动依赖
26. 腾讯企鹅辅导Serverless探索与实践-智能题库 1、业务请求耗时:从平均1秒优化到800MS 耗时优化的结果: 2、冷启动请求占比:从10%降到5% 3、冷启动请求耗时:从平均5秒降到平均3秒
27. 腾讯企鹅辅导Serverless探索与实践-智能题库 冷启动 冷启动 SCF实例2 SCF实例1 DB连接 DB连接 DB连接 SCF实例3 DB连接 冷启动 SCF实例N 冷启动 SCF实例2 数据库 4、SCF中数据库的使用 SCF实例1 DB连接 DB连接 DB连接 代理 冷启动 SCF实例3 DB连接 冷启动 SCF实例N 数据库 数据库连接占满 冷启动 无法避免 数据库连接占满 数据库连接复用
28. Serverless一体化建设
29. Serverless一体化建设全景图 CD系统 IMFS SCF跳转发 开发模板 SCF CD系统发布 本地调试 容灾网关 权限统一 CVM跳转发布 操作简化 CONF发 三地部署 规则转发 DEVCLOUD 公网域名 IMServerless TS规范 日志上报 版本绑定 内网域名 版本发布 免发布 团队权限GIT文件 T R A C E I D WEB HOOK Grafana视图 ES集 SVR SCF/STKE同构 SVR SCF/STKE同构 SVR SCF/STKE同构 HTTP、UDP IMLOG IMFS规范 研发闭环 别名绑定 Imlog GIT 规范 业务自动容灾 IMSERVER 组件 云函数GIT仓库 灰度导流 告警云函数 API GATEWAY 镜像 SCFRequest 企微告警拉群 NGINX 性能优化 SCF多函数发 IMFS 日志监控 CLIENT 流量闭环 监控闭环
30. Serverless一体化建设 Serverless一体化建设方向 定规范 团队化SCF开发规范建设 怎么喜欢怎么来 一体化 提效率 SCF多人开发研发效能提升 多快好省 保质量 SCF稳定性保证的团队方案
31. Serverless一体化建设 目录规范 本地研发规范 定规范 开发规范 团队化SCF开发规范建设 函数规范 CI/CD规范 状态码规范 日志告警规范
32. Serverless一体化建设 定规范 目录规范 本地研发规范 配置精简,结构清晰 多函数支持,TS支持 保持传统本地开发习惯
33. Serverless一体化建设 函数配置规范 函数规范 APIGATEW配置规范 SCF接口转发规范 Node.js版本 内存配置 网络配置 别名配置 … Path配置 超时配置 响应类型配置 … 路由配置 熔断配置 限流配置 … 定规范 基于Serverless Framework CI/CD规范 Yaml文件规范 命令简化 … 基于GIT进行CI 分支构建 云端构建 环境隔离 … 基于GIT分支CD 需求管理 发布Checklist 发布周知 …
34. Serverless一体化建设 上下游回包格式 状态码规范 状态码分层 内置状态码组件 retCode字段 errMsg字段 … 系统错误 逻辑错误 网络错误 … 全局错误捕获 系统错误捕获 基础状态码 … 定规范 统一TraceID 日志告警规范 生成规范 透传规范 … 基于ELK模型告警 日志SDK ES索引字段 Grafana告警视图 … 企微推送&电子流提单 自动拉取 自动AT负责人 自动提BUG单 …
35. Serverless一体化建设 1、统一SCF开发模板 开发 提效率 2、收拢SCF账号权限 SCF多人开发研发效能提升 3、优化SCF部署耗时 部署 4、提升SCF部署效率 IMFS
36. Serverless一体化建设 提效率 1、统一SCF开发模板 开发 部署 2、收拢SCF账号权限 SCF多人开发研发效能提升 目录结构 基础依赖库 构建命令 Imfs-create 基础配置 路由配置 3、优化SCF部署耗时 日志配置 4、提升SCF部署效率 中间件配置 …
37. Serverless一体化建设 提效率 1、统一SCF开发模板 开发 2、收拢SCF账号权限 SCF多人开发研发效能提升 账号A 账号B 账号C 3、优化SCF部署耗时 部署 4、提升SCF部署效率 地域A 命名空间 D SCF A 地域B 命名空间 E SCF B 地域C 命名空间 F SCF C … … … … 资源浪 费 管理困 难
38. Serverless一体化建设 提效率 SCF多人开发研发效能提升 SCF A 1、统一SCF开发模板 开发 开发-命名空间 2、收拢SCF账号权限 统一账号 SCF B 统一地域 部署 4、提升SCF部署效率 限 测试-命名空间 SCF C 3、优化SCF部署耗时 资源浪 费 收拢权 生产-命名空间 … 管理困 难
39. Serverless一体化建设 提效率 1、统一SCF开发模板 开发 SCF多人开发研发效能提升 SDK SCF BUILD SDK SCF DEPLOY SDK FILE UPLOAD SCF FILE DOWNLOAD 2、收拢SCF账号权限 优化部署耗时 3、优化SCF部署耗时 部署 4、提升SCF部署效率 部署触发次数越少越好 SCF Layer 单次部署文件越小越好 SCF INIT
40. Serverless一体化建设 提效率 1、统一SCF开发模板 开发 SCF多人开发研发效能提升 SDK SCF BUILD SDK SCF DEPLOY SDK FILE UPLOAD SCF FILE DOWNLOAD SCF INIT 2、收拢SCF账号权限 优化部署耗时 业务逻辑 动态逻辑 3、优化SCF部署耗时 部署 4、提升SCF部署效率 SCF Layer 部署函数 频繁 耗时降低 SCF 静态依赖 node_modules 部署为layer 按需
41. Serverless一体化建设 提效率 SCF多人开发研发效能提升 APIGATEW 1、统一SCF开发模板 开发 1、函数版本发布 2、修改APIGATEW指向 2、收拢SCF账号权限 3、优化SCF部署耗时 部署 函数版本 V 4、提升SCF部署效率 3、发布APIGATEW 函数版本 V+1 团队强制使用别名 APIGATEW 函数别名PROD 函数版本V 1、函数版本发布 2、修改函数别名PROD指向 函数版本 V+1
42. Serverless一体化建设 提效率 SCF多人开发研发效能提升 团队强制使用别名 1、统一SCF开发模板 开发 2、收拢SCF账号权限 APIGATEW 函数别名PROD 函数版本V 1、函数版本发布 2、修改函数别名PROD指向 函数版本 V+1 DevOps单系统闭环 3、优化SCF部署耗时 部署 4、提升SCF部署效率 APIGATEW 函数别名PROD 函数版本V 一个按钮点击操作 函数版本 V+1
43. Serverless一体化建设 提效率 1、统一SCF开发模板 开发 SCF多人开发研发效能提升 DevOps系统闭环 2、收拢SCF账号权限 3、优化SCF部署耗时 部署 4、提升SCF部署效率 多项目多函数发布并行处理、状态实时掌握
44. Serverless一体化建设 最终概览效果 学习SCF、API文档 GIT CLONE他人项目 删掉其他业务逻辑 各种申请权限 编写业务逻辑 GIT PUSH 开发分支 SCF控制台创建函数 云API控制台创建服务 体系化收敛 OCI DEPLOY函数到测试命名空间 转发请求到测试网关API 云函数控制台查看日志 本地验证 权限&创建 本地开发 CD系统提发布单 CD系统 触发CI构建 云函数控制台发布版本 云API控制台创建API 云API控制台API绑定函数版本 发布云API 现网验证 发布上线
45. Serverless一体化建设 并发激增 保质量 冷启动调优 SCF稳定性保证的团队方案 函数发布 并发超出预设值 未知错误码 系统错误兜底
46. Serverless一体化建设 目前的SCF请求流 CLIEN T 腾讯云 腾讯云 API SCF API SCF API SCF NGINX … …
47. Serverless一体化建设 腾讯云 CLIEN T NGINX 不可控 容灾 腾讯云 API SC API SC API … SC … 不可控 …
48. Serverless一体化建设 基于网关容灾方案 CLIEN T NGINX SCF网关 统一兜底容灾 业务失败,直接触达用 腾讯云 腾讯云 API SCF API SCF API SCF … 业务失败,流控拦截 …
49. Serverless一体化建设 网关容灾方案-基于CVM容灾 CVM和SCF业务同构 Node SERVER server_entry.js CVM镜像 scf_entry.js SCF代码包 IMFS LOGIC LOGIC LOGIC … 一套代码,一个开发习惯,一次构建,两个入口
50. Serverless一体化建设 SCF网关最终架构 网关(基于NGW) 规则匹配 插件 规则更新 鉴权 日志 匹配 解析 灰度 改写 腾讯云 腾讯云 API SCF SCF SCF API CLIEN T … 同构 代理转发 NGINX DNS解析 转发执行 失败重试 天津 API SVR SVR 多地部署 深圳 CVM 南京 … SVR …
51. 总结 1. Serverless落地实践中常⻅问题解法 1、现有Node框架复用 2、后台接口如何上BFF 3、冷启动优化方法 4、SCF中使用DB的原则 2. Serverless一体化建设的要点 1、Serverless团队规范 2、如何提高Serverless研发效率 3、如何保证Serverless业务质量
52. 未来展望
53. 未来展望 云函数编排 多函数拆分
54. 未来展望 云函数编排 下游服务 SCF 数据层 函数复用 SCF SCF 下游服务 SCF SCF 函数治理 性能保障 数据层 可观测性
55. 未来展望 多函数拆分 Controller Logic APIGATEW Path SCF Node Svr Controller Logic Controller Logic 函数健壮性 本地研发体验友好 Path APIGATEW Path SCF Controller Logic 拆分规范 SCF Controller Logic 依赖分析 SCF Controller Logic DevOps Path
56.
57. 未来已来,前端的目标是星辰大海! 扫码关注IMWeb微信公众号 工作机会 与我交流
58.

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