腾讯教育Serverless实践及探索

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

业务层
PC
H5
RN
小程序
接入层 代理层
GSLB (域名解析) STGW (腾讯网关)
NGINX
应用层
Mobile BFF
PC BFF
H5 BFF
Other BFF
IMServer Framework (based on Koa)
容器层
Container
腾讯教育 BFF
管理后台

API GATEWay
小 tips - 预连接
1、只加载你需要的依赖 2、预处理逻辑可以用来做
相关 BaaS 服务的连接 3、主逻辑中一定要小心预连接
的资源,要做重试逻辑
入口文件
依赖加载 预处理逻辑 可以保证下次执行的时候复用
Main handler
2 Serverless 在腾讯教育上的探索
小 tips - 临时文件存储
3 Serverless 在腾讯教育上的探索
新业务落地场景 - 小程序
业务接口
STWG 接入层
广州 云函数 上海 云函数 天津 云函数
BaaS 服务 微信 API
2 Serverless 在腾讯教育上的探索
小程序云开发 TCB
3 Serverless 在腾讯教育上的探索
新业务落地场景 - 运营活动
Flutter Business D
基础服务层 Course Services BASS 层
Order Services
Teacher Services
Live Services
BASS
小程序
… …
3 Serverless 在腾讯教育上的探索
新业务落地场景 - 服务端渲染
服务端渲染
3 Serverless 在腾讯教育上的探索
NodeJS 赋能
教育前端
Server
NodeJS
ReactJS + Restful API + NodeJS
SSR Latex-Render RN2Web IMPush 管理后台 …
1 腾讯教育前端架构演变
日益增长的前端业务
教育大前端
Node BFF
Server
Mobile BFF PC BFF
HTTP ✔️ RPC
2 Serverless 在腾讯教育上的探索
路由层改造 优缺点
优点:改动适中、逻辑拆分、云函数文件大小减少 缺点:需要加入一层 Proxy ,兼容Controller
3 Serverless 在腾讯教育上的探索
新业务如何落地 Serverless ?
2 Serverless 在腾讯教育上的探索
H5 BFF
PUSH 通道
日志服务
1 腾讯教育前端架构演变
BFF & Node 应用增长给前端带来的成本
流量预估 域名申请 操作系统知识 资源申请 资源利用率 告警和监控
备份容灾 内存泄露问题 机器扩容 环境搭建
1 腾讯教育前端架构演变
Node 内存泄露
1 腾讯教育前端架构演变
服务运维流程多
应用上线
执行云函数 返回结果
2 初探 Serverless
冷启动优化
若有同类事件传入 超过阈值 继续执行云函数 未收到相同事件
1
2
3
4
5
6
7
事件触发
创建启动 从云端存储 传入 Event
云函数实例 拉取代码运行
信息
执行云函数 返回结果
Waiting
Waiting end 销毁容器实例
2 初探 Serverless
腾讯教育 Serverless 实践及探索
蒋林源
自我简介 / resume
蒋林源 (jaxjiang)
2018年加入腾讯,IMWeb Team 团队成员 腾讯企鹅辅导核心开发、前就职于阿里巴巴菜鸟技术中台 Keywords: 复杂前端应用性能优化 多端 前端全栈 Serverless
目录 / contents
Node Server
Proxy 模式
3 Serverless 在腾讯教育上的探索
代理层兼容
只需引用 @tencent/serverless-imserver
3 Serverless 在腾讯教育上的探索
代理层兼容的优缺点
优点 :迁移成本非常低 缺点 :单个云函体积过大,逻辑都在一个函数里
3 Serverless 在腾讯教育上的探索
用户上传代码
云函数平台 FaaS
BaaS
配置触发器
Function
对象存储
云DB
Event Source
调用
Function 实例
Function 实例
Function 实例
Function 实例
Function 实例
Function 实例
事件发生时 自动触发
腾讯云云函数 SCF (serverless cloud function) 架构逻辑
迁移优化方案 - 路由层改造
API GateWay
IMServer - Serverless
Node App Entry
Roter
Controller A
Controller B
API GateWay
IMServer - Proxy
IMServer - Serverless
CoSnCtrFoller A
AI
IOTபைடு நூலகம்
CMQ
API GW
Credis

2 初探 Serverless
SCF 架构剖析
SCF Business
Runtime Container
Compute Substrate
2 初探 Serverless
SCF 执行过程
1
2
3
4
5
事件触发
创建启动 云函数实例
从云端存储 拉取代码运行
传入 Event 信息
MircoServices A
MircoServicesB

BASS
2 Serverless 在腾讯教育上的探索
SFF for 运营活动
业务层 接入层 代理层 业务层
H5 Business A
APP
PC API GateWay
IMSERVER - PROXY
Business B
Business C
小程序
运营活动
轻量级Server
自动化测试
管理后台

诊断能力
全链路 日志
全链路 检索
线上监控 / 诊断
监控能力
流量
耗时
成功率
告警
云监控
业务代码
业务 A
业务 B
业务 C
运行时

基础组件
Redis Imserver
Cos 监控
日志
CDN
服务组件
DAO 加锁
频率控制 缓存
队列
安全
业务组件
登录 图片合成 口语评测
运营活动
服务端渲染
3 Serverless 在腾讯教育上的探索
新业务落地场景 - 小程序
企鹅背单词
腾讯课堂 - 新人专属礼包
2 Serverless 在腾讯教育上的探索
3 FE developers 2 Weeks 50k Users 240k max api call / day 320ms Time per request
CoSnCtrFoller B
CoSnCtrFoller C
3 Serverless 在腾讯教育上的探索
迁移方案优化 - 路由层改造
API GateWay
IMServer - Proxy
SCF Controller A
IMServer - Serverless
SCF Controller B
SCF Controller C
二维码 语音合成

FAAS A
FAAS B
Service A
Service B
BASS 服务
后台服务
研发闭环 研发态
本地开发套件CI
自动化测试

预发集成CD



线上发布和管控

线上切流、灰度

优 化
日志规范
监控规范
/
流程规范 目录规范
3 Serverless 在腾讯教育上的探索
新业务落地场景
小程序
IS Proxy (IMWeb Serverless Proxy)
SCF A
SCF B
SCF C
SCF D
SCF E
SCF G
BaaS
腾讯教育 SFF
3 腾讯教育在 Serverless 上的实 践
3 Serverless 在腾讯教育上的探索
老业务如何迁移 ? 新业务如何落地 Serverless ?
若有同类事件传入 超过阈值 继续执行云函数 未收到相同事件
4
5
6
执行云函数 返回结果
Waiting
Waiting end 销毁容器实例
512M
临时文 件
/tmp
数据缓 存
2 Serverless 在腾讯教育上的探索
小 tips - 数据存储
若有同类事件传入 超过阈值 继续执行云函数 未收到相同事件
从云端存储 传入 Event
拉取代码运行
信息
执行云函数 返回结果
Waiting
Waiting end 销毁容器实例
2 初探 Serverless
传统 BFF 应用开发流程
框架选型 机器申请 相关云资源 相关权限配置
框架资料学习 环境搭建 云资源配置
编码开发
本地测试
构建部署
2 初探 Serverless
新业务落地场景 - 服务端渲染
React / Vue 单页应用
页面 A 页面 B
页面 C

SCF A
SCF B
CI
SCF C

3 Serverless 在腾讯教育上的探索
Serverless devOps
2 Serverless 在腾讯教育上的探索
SCF DevOps
开发 预发布 发布
需求阶段
Git Hook
4
5
6
执行云函数 返回结果
Waiting
Waiting end 销毁容器实例
512M
/tmp
临时 文件
数据 缓存
Redis
Cloud
Mysql

2 初探 Serverless
高并发处理
高并发时 自动创建多容器
若有同类事件传入 超过阈值 继续执行云函数 未收到相同事件
1
2
3
4
5
6
7
事件触发
创建启动 云函数实例
3 Serverless 在腾讯教育上的探索
老业务迁移 - NodeServer VS SCF
NGINX Node App Entry
Router Middleware Controller
BASS
API GateWay
main_handler
SCF A
SCF B
SCF C SCF E
SCF D …
触发器
API 网关 / 定时器 / 对象 存储 /
CMQ Topic / Kafka / CMQ …
FaaS
Function as a Service 函数即服务
BaaS
Backend As Service 后端即服务,如云服务 商提供的文件存储、数 据存储、推送服务等
2 初探 Serverless
部 署 流 水 线 教育研发平台
部署触发方式
SCF 命名空间
EDU - test EDU-Pre-Release EDU - Production
归档仓库
回滚流水线
回滚
4 未来与展望
3 未来与展望
拥抱 Serverless 生态
3 未来与展望
1、适用多端的 Serverless 平台 & SDK 2、云开发逐渐成为前端的主流开发模式 3、基于 Serverless 的可视化编排
3 Serverless 在腾讯教育上的探索
SCF 兼容 Node Server (Koa or Express)
NGINX Node Server Entry
Router Middleware Controller
API GateWay
main_handler
BASS
SCF C SCF E
SCF D …
一、腾讯教育前端架构演变 二、初探 Serverless 三、腾讯教育 在 Serverless 的实践 四、未来及展望
1 腾讯教育前端架构演变
1 腾讯教育前端架构演变
开天辟地时代
教育前端
Server
JS + HTML + CSS + Restful API 页面开发 + API 数据处理
1 腾讯教育前端架构演变
运营活动
3 Serverless 在腾讯教育上的探索
新业务落地场景 - 运营活动特性
可复用逻辑多
跟业务强关联
时间要求紧
2 Serverless 在腾讯教育上的探索
运营活动 SCF 生态构建
H5
APP
PC
API GateWay
Course Info SCF A Course Info SCF B
SCF …
日志检查
网关变更
NGINX 配置变更
现网验证
服务监控
1 腾讯教育前端架构演变
核心问题 大前端升级
广度问题 前端领域范围需要扩宽、为产品提供更多的赋能
成本问题 广度问题所带来的成本和效率、成本形成矛盾
2 初探 Serverless
2 初探 Serverless
Serverless 逻辑架构
Serverless = FaaS + BaaS
代理层协议如何兼容? 路由层如何改造?
3 Serverless 在腾讯教育上的探索
代理层兼容
NGINX
流式
Node Server
API GateWay
块状
main_handler
3 Serverless 在腾讯教育上的探索
代理层兼容
API GateWay IMServer - Serverless
Serverless 赋能教育前端开发
框架选型
机器申请
相关云资源 PASS 平台 创建函数
框架资料学习 环境搭建 云资源配置
编码开发
本地测试
云函数部署
2 初探 Serverless
Serverless 能力
秒级部署
“零” 运维
自动触发
弹性计算能力
更聚焦业务
2 初探 Serverless
从 BFF 到 SFF
相关文档
最新文档