腾讯 IMWeb 全栈质量保障实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 腾讯 IMWeb 全栈质量
保障实践
陈丽杭
腾讯高级前端工程师
2.
3. 陈丽杭 / 腾讯高级前端工程师
• 腾讯 IMWeb 团队核心成员
• 负责腾讯在线教育部 企鹅辅导业务
研发效能
腾讯 IMWeb
Serverless
腾讯课堂
腾讯企鹅辅导
腾讯开心鼠
4. • 前端全栈质量保障剖析
• 腾讯 IMWeb 全栈质量保障建设
• 落地全栈质量案例
• 总结 & 展望
5. • 前端全栈质量保障剖析
• 腾讯 IMWeb 全栈质量保障建设
• 落地全栈质量案例
• 总结 & 展望
6. 01.前端全栈质量保障剖析
IMWeb 基于 NodeJS 的全栈架构演进
云服务
1. 疫情之下中后台服务需求剧增
2. IaaS、PaaS 减少前端服务开发成本
低代码平台
SAS 系统
发布系统
业务后台
效率工具
SSR
前端开发
Node.js开发
全栈开发
突破边界,⻆色升级,价值提升
7. 01.前端全栈质量保障剖析
全栈研发模式升级
前端开发工程师
UI 交互
后台开发工程师
数据
运维
全栈 = 前后端一体化开发
弹性伸缩 负载均衡
mobile 网络专线 文件存储
Html JS Image 内容加速 …
web browser
CSS Fonts
…
• 打破隔离,沟通成本减少
• 职责升级,关注边界增加
8. 01.前端全栈质量保障剖析
边界增加带来质量挑战
服务质量问题从何入手?
• 接口 500 • 响应异常 • 请求延迟
• 内存泄露 • 性能瓶颈 • 服务雪崩
• CPU 飙升 • 内存暴涨 • IO 堵塞
• 调度故障 • 路由问题 • 入库失败
• 进程保活 • 服务扩容 • 流量切换
9. 01.前端全栈质量保障剖析
重新定义前端的质量边界
浏览器
1.新技术领域全栈质量建设?
2.如何提升全栈化运维效率?
+
服务端
10. 01.前端全栈质量保障剖析
服务质量问题归类
开发
规范
服务扩容
配置变更
安全保障
持续
运营
监控指标标准化
机器相关的
主被调相关
测试
保障
功能逻辑
性能测试
研发、测试、运维
质量
体系
内存泄露
性能瓶颈
解决困难
发布
质量
问题
定位
监控
告警
体系化的质量建设
故障发现滞后
监控配置缺失
安全隐患
灰度发布
发布回滚
全流程的质量保障
11. 01.前端全栈质量保障剖析
前端全栈的质量保障体系建设
基础
设施
基于云原生体系
结合 Node 生态
编码
发布
OPS
打造效率工具
降低维护成本
自动化测试
工具
保障
DEV
结合业务现有体系
搭建全栈质量体系
体系
升级
监控
基于业务DevOps,在每个环节建设质量保障工具和流程
12. • 前端全栈质量保障剖析
• 腾讯 IMWeb 全栈质量保障建设
• 落地全栈质量案例
• 回顾总结 & 展望
13. 02. 腾讯 IMWeb 全栈质量保障建设
IMWeb 全栈质量保障体系
开发规范
测试保障
发布质量
监控告警
问题定位
测试 部署 运维监控
校验 功能&性能 发布平台 Sentry
代码规范 冲突检测 单元测试 发布评审 监控体系
响应规范 版本管理 接口测试 服务容灾 配置管理
日志规范 静态检查 压力测试 多地部署 性能分析
配置规范 规范检测 漏洞扫描 安全保障 扩容缩容
开发
规范
构建
交付质量保障
线上质量保障
持续运营
14. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范
•
•
•
•
•
测试保障 发布质量 监控告警 问题定位 持续运营
服务日志欠缺,无从查询问题
服务健康监控指标缺乏,故障未发现
接口返回码代表什么问题
参差不⻬的服务质量
…
一致性的规范
保障统一的服务质量
响应规范 正常响应 异常响应 返回码管理
日志规范 进程日志
调用日志
异常日志
服务监控 主调监控
被调监控
响应延迟率
特性监控 GC Event loop 延迟 CPU Profile
开发
规范
如何保证团队业务服务规范的统一?
15. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范
测试保障 发布质量 监控告警 问题定位 持续运营
基础框架
基础
建设
规范扫描
统一升级
研发框架
统一日志 统一主被调 统一异常
上报组件 监控组件 处理组件
通过接入统一框架和基础规范
保证基础监控上报功能的完整
16. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警 问题定位 持续运营
测试目标
响应
正确
+
服务质量指标
单元测试
正确性
可用性
功能
接口测试
前端写服务端
自动化测试率不足?
•
延迟率
•
性能测试
•
性能
达标
吞吐量
系统
业务拨测
主动检查线上
用例编写维护成本高
没有意识服务需要吞吐量测试
如何进行服务吞吐量测试
17. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警 问题定位 持续运营
请求 响应
请求协议
请求头
请求参数 响应体
接口描述文件
json、protobuf
添加响应断言
用例
测试断言:入参决定出参
CI
上传
协议解析
用例文件
部署
接口契约平台
接口描述定义接口,打通 CI,降低用例成本
18. 02. 腾讯 IMWeb 全栈质量保障建设
打通后台吞吐量压测工具,流程化吞吐量测试
开发规范 测试保障 发布质量 监控告警 问题定位 持续运营
QPS
(每秒查询率)
流量预估
用例
</>测试脚本
</>测试脚本
吞吐量
输入
压力测试
测试结果分析
响应时⻓
最大服务能力
成功率
压测结果
分析性能短板
服务性能指标
19. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警 问题定位 持续运营
测试报表
用例
输入
定时触发
拨测任务
调度
主动发现线上问题
输出
用例断言结果
反馈
异常告警
CD 触发定期现网检查,保证服务稳定
20. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警 问题定位 持续运营
代码
自动化测试
用例
用例统一管理维护
部署
触发
拨测
线上保障
CI
覆盖率检查
接口测试
正确性
压测
可用性
告警
21. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障
发布质量 监控告警 问题定位 持续运营
业务发布流程规范
Code Review
CI
编译
测试校验
发布审批
项目发布
•
业务规避
•
发布值守
收拢发布权限,流程化规范发布
服务发布存在差异点
存储层配置如何发布
集群机器如何操作发布
22. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障
发布质量 监控告警 问题定位 持续运营
每个服务发布制定
详细的发布规范
发布前 预发布 正式环境 发布完成
发布检查 CI 构建 评审单通过 代码合并
强制 CR 资源部署 灰度发布 环境清理
创建评审单 服务发布 灰度验证 发布群周知
发布群周知 预发布验证 全量发布 结束评审单
锁定项目发布 安全扫描 现网验证 释放发布环境
23. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障
发布质量 监控告警 问题定位 持续运营
发布工作台统一发布流程
24. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障
发布质量 监控告警 问题定位 持续运营
存储规范
自动化部署
配置规范
CI 编译&测试
Code Review
发布审批
存储权限隔离
SQL 性能
服务1
服务2
服务3
机器灰度
保证现网
访问正常
服务告警
…
发布值守
指标预警
收拢发布权限,流程化规范发布
25. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量
监控告警 问题定位 持续运营
故障现象
HTTP 接口 5XX 接口响应错误
1.如何覆盖
多层级指标监控
现象
故障预警
流量增⻓ CPU飙升
数据库性能
…
监控
原因
告警修复闭环
定位分析
2. 如何提高问题修复效率和质量?
3. Node 服务性能分析如何下手?
26. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量
监控告警 问题定位 持续运营
接口 超时率、成功率、慢 HTTP、RPC 发
现、流量波动 … 自研上报 SDK
服务 异常日志、服务全景、模块版本… 数据清理&存储
依赖 存储慢查询、Nginx、配置依赖、
DB&Redist&Kafka 负载 容器 CPU 使用率、内存使用率、磁盘情况、
网卡流量 …
多层级指标监控
数据展示
指标告警
自研监控系统
27. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量
Node
服务
完整的监控指标
监控告警 问题定位 持续运营
存储
监控
28. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量
监控告警 问题定位 持续运营
建立工单跟踪问题
指标告警 创建工单 定向分配
工单结单 定位修复问题 消息通知
服务与开发人员对应
每周报表
监控告警 -> 问题处理闭环
每日总结
29. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
问题定位
持续运营
方案调研
工具使用
编写代码
本地测试
代码提交
发布部署
场景还原
专项测试
分析定位问题效率有待提升
确定问题
修复发布
下载 profile
文件
工具查看
验证假设
30. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
问题定位
持续运营
用户控制台 线上
Node.js应用
发送采集指令 接收采集指令
不停机在线快速定位问题
生成性能文件
在线分析
上传性能文件
自研性能分析系统
31. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
•
•
问题定位
持续运营
在线采集CPU profile
生成火焰图
集成Chrome devtools工
具分析堆快照
CPU采样
堆快照对比
32. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
问题定位
持续运营
方案调研
工具使用
监控指标
异常
编写代码
本地测试
生成
性能文件
代码提交
发布部署
场景还原
专项测试
在线分析
登录机器
下载文件
代码调整
提高定位效率,解放生产力
工具查看
验证假设
测试发布
33. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警 问题定位
通过上云,降低服务运营成本
持续运营
运维、 数据
监控告警、备份灰度、社区支持
稳定、 安全
升级/迁移、故障避让
异地多活、审计
防 SQL 注入/拖库
效率、 工具
CI、CD、配置下发、域名
故障定位、日志染色
成本、 性能
元/GB/日、HDD/SSD/内存、专线
QPS、分级存储、就近接入
水平伸缩,按核心数收费
扩展、 平台
横向扩展、纵向扩容
34. 02. 腾讯 IMWeb 全栈质量保障建设
IMWeb 全栈质量保障体系
DevOps
• 开发规范
• 测试保障
• 发布质量
• 监控告警
• 问题定位
•
持续运营
系统
CLI
框架&组件
规范制定
测试
开发
发布系统
Thanos
接口管理系统
Tolstory
监控系统
IX
代码规范
协议请求
Take
测试规范
测试系统
星海平台
基础
设施
配置管理系统
错误码
IMServer-Error-CLI
框架
IMServer-CLI
代码框架
IMSever
运维
部署
日志请求
IMLog
部署规范
错误捕获
Error
监控规范
体系
升级
响应统一
Response
日志规范
工具
保障
35. • 前端全栈质量保障剖析
• 腾讯 IMWeb 全栈质量保障建设
• 落地全栈质量案例
• 回顾总结 & 展望
36. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
问题定位
持续运营
案例 QPS 达不到预期
简单服务,8核16G机器,压测结果 5000 QPS
37. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
问题定位
持续运营
案例 QPS 达不到预期
CPU使用率达到 95%+
38. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
问题定位
持续运营
案例 QPS 达不到预期
使用火焰图分析
CPU Profile
这些方法是否运行程序所需
39. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
问题定位
持续运营
案例 QPS 达不到预期
日志上报相关函数占 47.6 %
40. 02. 腾讯 IMWeb 全栈质量保障建设
开发规范 测试保障 发布质量 监控告警
问题定位
持续运营
案例 QPS 达不到预期
50%
5000QPS
7600QPS
41. • 前端全栈质量保障剖析
• 腾讯 IMWeb 全栈质量保障建设
• 落地全栈质量案例
• 回顾总结 & 展望
42. 04. 回顾总结 & 展望
开发规范
基础
设施
测试保障
发布质量
监控告警
问题定位
编码
基于云原生体系
结合 Node 生态
持续运营
发布
打造效率工具
降低维护成本
自动化测试
工具
保障
结合业务现有体系
搭建全栈质量体系
体系
升级
监控
基于业务DevOps,在每个环节建设质量保障工具和流程
43. 04. 回顾总结 & 展望
Metrics
DevOps
AIOps
NoOps
Tracing
Logging
智能
诊断
智能
监控
智能
APM
智能
日志
智能
事件
44. 不断拓展技术边界就像是前端开发者的使命,在这快速突破中,
即便是全栈,对效率与质量探索和实践的原则是不变的
45.