腾讯课堂面向协作的 DevOps 流程设计与实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 腾讯课堂面向协作的
DevOps流程设计与实践
董峤术 / 腾讯课堂研发效能负责人
2.
3. 平台功能丰富,逻辑复杂,历史悠久
电商平台:商品、机构、营销、支付结算、
客服、物流、数据
开放协作:开放平台、ToG业务、ToB业
务、私有化等
教学平台:直播房间、考勤签到、考试批
改、录播学习、教务教学
7年历史:总服务1000+,3种语言,5种RPC
框架
4. 外部环境不断变化,竞争加剧,快速迭代是成功的关键
峰值上课人数
周增⻓趋势
疫情:在线教育和居家学习异常火热,快速 政策:双减下在线K12培训快速降温;职业教育
增⻓到500W PCU、4亿用户 越来越受国家重视
5. 研发节奏,理想 VS 现实
需求
需求
建设公共服务和中台,提高复用程度
打仗
通过云原生降低业务的运营成本
打仗
VS
打仗
提高单兵作战能力,可以更快的研发和交付
按部就班的按照规划进行迭代
提前预测产品动向,进行前置布局和预研
休整
DevOps:面向协作的
休整
时间
时间
理想的迭代节奏
设计,提高团战效率
时间
……
实际的迭代节奏
(3月大促、7月大促、双11、双12、突发的产品机会等)
6. 更高效和大规模地协作,降低交付周期
耗时、成本
成本、资源浪费快速上升
(理解成本、交流成本…)
人员素养要求上升
(需求拆解、方案细化、沟通协作)
交付周期反而变⻓
能否交付周期持续下降?
参与人员
7. 如何更高效地协作
理解 分工 交流 落地
一致的认知和操作 合理细致的工作拆解 顺畅有效的沟通交流 切实有力的落地执行
需求评审、技术方案、开发、联调、测试、发布、运营,均需要更好的理解、分工、交流、落地
8. 更低的理解成本
理解
一致的认知和操作
分工 交流 落地
合理细致的工作拆解 顺畅有效的沟通交流 切实有力的落地执行
9. 痛点:DevOps工具繁杂,理解和上手成本高
工蜂CI\CD
天机阁
“hao123 网址导航”
(“高级网址收藏工程师”、“浏览器工程师”)
10. 统一化:DevOps全流程统一
模块 原有 当前
CI 蓝盾、Orange-CI,工蜂CI Coding CI
CD 织云、TKEx、123 Coding CD
联调 自定义发包、tolstory Coding ApiOps
自动化测试 星海、QTA、同源测试平台 Coding 持续测试
日志 ELK、鹰眼、智研 Coding CLS
链路追踪 Jeager、SkyWalking、天机阁 Coding Tapm
监控 Monitor、007、自建promthues Coding TCCM
配置 Apollo、七彩石、k8s configmap Coding 配置中心
11. 统一化:云原生DevOps架构
需求交付、项目协同、用户价值、工程师文化
研发效能
自动化
韧性
可观测
服务化
DevOps 持续集成和持续交付
开发域
代码管理
开发环境
脚手架
资源效能
弹性伸缩
资源利用
率
可调度
构建域
流水线
构建环境
打包工具
测试域
提测⻔禁
多环境
同源测试
部署域
编排管理
灰度控制
文档管理
运营域
监控指标
系统日志
部署回滚 链路追踪
代码分析 制品管理 Mock 变更监控 可视化看
板
协议管理 安全扫描 用例管理 审批周知 混沌工程
依赖管理 制品分析 性能测试 自动校验 告警治理
度量数据
Coding一站式管理+腾讯云
CLI工具
IDE插件
流水线
发布系统
流程管理
数据管理
上报通道
数据看板
12. 痛点:缺乏对研发全流程的“约束模式”
0 1 02 03 04
构建 测试 部署 运营
通过流水线模板对CI环节
进行标准化
缺失! 缺失!
测试环境的统一管理,测
试路由和网关配置,自动
换测试用例和报告 对于部署的环境的配置缺
失标准化(sidecar、
prestop、健康检查等)
缺失!
对于运营流程缺失标准化
(logging、tracing、
metrics)
13. 标准化:应用管理,对研发全流程的“约束模式”
对整个研发流程
进行标准化
14. 痛点:配置不透明且分散在各地
编译构建等过程在CI系统
部署的配置在发布系统上
监控的配置在可观测系统上
15. 透明化且以代码为中心—— XAC+同源
UT\IT
makefile\dockerfile
将build、test、image等过程通用makefile描述,屏蔽
将单元测试、接口测试的测试代码统一管理
服务之间编译、构建、测试、打包等差异
.ci.yml
.grafana.yml
通过coding的pipeline as code的能力,对makefile提供
将监控视图的配置,告警阈值等配置沉淀到代码中
的指令进行编排
.cd.yml
将sidecar依赖、健康检查配置、前后置等待时间等,
通过CD.yml进行描述
https://git.woa.com/svr1.git
随业务代码在一个repo中
readme等信息
将服务的架构图、文档、服务负责人、CR负责人等,
通过readme等方式沉淀在代码中
16. Xac实践:非业务代码也是代码,也要抽象、分层、CR、规范……
17. 总结
1、理解
•
•
•
统一化
标准化
透明化
3、交流
2、分工
4、落地
18. 更细的工作项拆分
理解
一致的认知和操作
分工
合理细致的工作拆解
交流 落地
顺畅有效的沟通交流 切实有力的落地执行
19. 需求拆解
• 领域划分
• 业务流程
• 紧急程度
• 实现难度
• 客户端\平台
• 价值
• 用户⻆色
• 团队情况
有清晰的工作拆分,同时有阶段性能达成的小目标,这样团队会更有目标感和一定的成就感,这样即便是试错,也不会气馁
20. 领域驱动设计(分层、解耦、降低复杂度)
21. 领域拆分实践(业务架构-系统架构-代码实现)
代码实现
22. 领域拆分实践(系统架构)
23. 领域拆分实践 (代码实现)
24. 总结
1、理解
•
•
•
统一化
标准化
透明化
3、交流
2、分工
•
•
需求拆解
领域驱动设计
4、落地
25. 更顺畅的沟通交流
理解 分工 交流 落地
一致的认知和操作 合理细致的工作拆解 顺畅有效的沟通交流 切实有力的落地执行
26. 主干开发:开发人员之间的交流更顺畅(多地协同)
单主干+TAG
•
•
•
•
围绕master分支进行版本
迭代,无特性分支
个人开发分支进行开发
发布后,基于master发布
节点,打releaser tag
talk is cheap, show me
the code
自动化测试
Code Review
•
•
•
CR左移,小批量,不要
一次性review过量代码
每个coversation必须解决
一个完整功能点提交一次
MR
•
•
•
代码合入前提是每个case
必须通过
测试代码也是代码,也要
CR
时间和覆盖率灵活调整
及时对⻬
•
•
及时
高效
27. APIOps:降低各端人员的沟通成本
前后端分离的架构,API沟通影响效率
规范和沉淀接口协议,更方便的进行前后端沟通
28. 测试左移:降低和测试人员的沟通成本
29. GitOps:降低和工具的交流成本
流程通过git进行管理
信息都通过git进行沉淀
30. kanban:项目进展和⻛险
通过敏捷看板,将进度可视
化,培养团队的大局观,降低
开发过程中的进度的不透明度
31. 总结
3、交流
•
•
•
•
•
1、理解
•
•
•
统一化
标准化
透明化
2、分工
•
•
需求拆解
领域驱动设计
主干开发(相同开发岗位之间)
APIOps(前端和后端)
测试左移(开发和测试)
GitOps(开发和工具)
看板(开发和PM)
4、落地
32. 更有效的落地执行
理解 分工 交流 落地
一致的认知和操作 合理细致的工作拆解 顺畅有效的沟通交流 切实有力的落地执行
33. 度量,掌握全局情况
34. ChatOps,高效推进
1、服务维度拉小群
自动拉
群
小群详
情
大群公
示
单据沉淀
组⻓群度量
2、展示信息⻬全(耗
时错误码、个数等)
3、联动其他系统,
可以修改tapd状
态,跳转日志系统
等
5、Leader群汇总每
个组的解决情况
4、大群展示会解决
的告警和负责人
6、TAPD沉淀解决
记录
35. 总结
3、交流
•
•
•
•
•
1、理解
•
•
•
统一化
标准化
透明化
主干开发(相同开发岗位之间)
APIOps(前端和后端)
测试左移(开发和测试)
GitOps(开发和工具)
看板(开发和PM)
2、分工
•
•
需求拆解
领域驱动设计
4、落地
•
•
度量
ChatOps
36.
37.