蓝鲸研运体系在腾讯内是如何应用实践的?
蓝鲸是腾讯 IEG 十多年研运探索的经验与成果,积累了很多人的智慧与付出。由于腾讯 IEG 的业务特殊性,蓝鲸体系天生地展现出对异构业务的友好,避免了需要重复造轮子才能完成对多业务的支持。本次分享主要介绍蓝鲸研运体系在腾讯内的发展、应用及未来的演进之路。
以下内容整理自:腾讯蓝鲸研运体系基础 PaaS 负责人 陈睿 于 2022 研运一体创新峰会的精彩分享——《蓝鲸研运体系在腾讯内的应用实践》。欢迎感兴趣的读者关注公众号:嘉为蓝鲸,查看演讲回放和下载演讲 PPT。
01
蓝鲸研运体系发展历程
蓝鲸研运体系最早是在腾讯游戏内部孵化出来的,它的作用就是帮助整个腾讯游戏,能够更好地进行运营维护等一系列的支撑工作。
蓝鲸在腾讯内部的发展经历了三个阶段:
第一阶段,是在 CD 领域的建设,称之为 AutoOps;
第二阶段,基于数据化的驱动向 CO 领域拓展;
第三阶段,最终达到了 AIOps 能力。
1
第一阶段,CD 领域建设,称之为 AutoOps
腾讯游戏的特点
种类非常多,大概有六七百款游戏在运营
游戏的架构、开发语言都不相同
游戏来源不同,有些是自研,有些是代理服务商开发
“烟囱”问题频繁凸显
为支撑种类繁多的游戏,构建了各种各样的运营支撑系统,调用非常复杂、重复建设问题严重。
为解决早期“烟囱”问题,蓝鲸内部自建 PaaS 体系
对这些烟囱系统内部的这些重复模块,进行打平、融合,在融合基础之上去构建上层的服务场景,由此形成了蓝鲸的工具文化,自建一个 PaaS 体系。
PaaS 体系初步构建完成,内部实现运维统一
首先,将所有的基础能力进行抽象,构建一个公共的服务层。
其次,在服务层之上通过更低成本的方式,扩充使用场景,立足于自动化来引导工具文化。
最后,向其他领域进行拓展,形成服务化分离的早期蓝鲸版本。
蓝鲸在底下沉淀了很多原子能力,如版本管理、作业平台、配置平台等。中间通过一些网关或者服务总线之类的接口封装,让上层的场景能够很方便地调用底下原子的能力。
这就是一个简单的运维 PaaS 雏形,形成了蓝鲸的整体架构图。通过这种方式,在腾讯内统一了整个腾讯游戏的技术运营方案。
2
第二阶段,基于数据化的驱动,向 CO 领域拓展
在这一时期,蓝鲸经历了两个关键的时间点:2015 年到 2016 年前后,数据化运维启动,铺垫了蓝鲸整体扩充 AIOps 的领域能力。
为了能够将整个 PaaS 的内容向 CO 部分扩展,蓝鲸在整个 PaaS 基础上增加了两个平台以及三部分的场景,分别是计算平台、AIOps 平台。
场景层通过同样的模式,同样的 PaaS 结构,增加了业务指标视图、自助发布系统、日志发布系统等。这样就完成了在统一的 PaaS 结构下,将内容由 CD 向 CO 进行扩充。
左右滑动查看
3
第三阶段,达到了 AIOps 能力
2018 年,全面启动了 DevOps 的能力建设,也为将来蓝鲸走向研运一体化提供了基础。
从 CD 层向 CI 层进行内容扩展时,在平台这一层增加了很多 CI 类型的平台,例如代码管理、流水线、编译构建的工具、测试工具、代码扫描等等一系列。
CI 方面的研发流程相关的一些原子能力,蓝鲸在上层增加了整个业务 DevOps 的工具链,能帮助业务更好地去构建他们的平台和业务系统。
左右滑动查看
蓝鲸在腾讯内部一个孵化以及演变的全过程,整个蓝鲸的从无到有,从有再到扩展 CI CD CO 三个领域。
不变的是蓝鲸 PaaS 的框架结构和基础组件;
变化的是蓝鲸 PaaS 里增加的内容和场景。
02
蓝鲸研运体系在腾讯内的应用
蓝鲸研运体系在腾讯内支撑了腾讯游戏所有业务,以及 CI 部分支撑了整个腾讯公司绝大部分业务的系统。应用概况呈现出承载业务数量多、覆盖范围面积广、任务数据量庞大、涉及相关人员多等特点。
1
CI 领域场景应用
典型实践:蓝盾平台
蓝盾是对所有蓝鲸能力的封装,在 CI 领域的具体体现,其核心服务大概有以下 7 部分能力:
流水线
可视化的持续集成流水线服务,贯穿代码库、版本仓库、代码检查、质量红线、编译加速等等。
CodeCC
自动化检查代码缺陷的服务,涵盖代码缺陷、安全漏洞、代码规范、复杂度、重复率等多种维度。
质量红线
通过设置质量标准,控制流水线的行为,使得最终交付必须符合质量标准的一种服务。
PreCI
是腾讯 CI 在 IDE 下提供的 CI 服务,为开发者提供云编译、代码分析、单元测试、测试、自动化部署等 CI 实践。
编译加速
基于分布式编译技术、缓存技术、容器技术实现的一套编译加速解决方案。
Stream
以 Pipeline as code 为理念建设的 CI 服务。
蓝盾 APP
手机上的 CI 管家,提供 App 商店、App 版本测试、移动端流水线等 能力的移动端服务。
2
CD 领域场景应用
典型实践:全球化管控
立足于中国本土,覆盖节点覆盖北美、欧洲、东南亚、甚至非洲、南美等全球地区,都有蓝鲸的管控节点。
全球化管控的实现,依赖于蓝鲸底层通道管控平台,管控平台处于整个蓝鲸体系结构里面的最下层,是整个蓝鲸体系的支撑通道,就像一个人的腿一样。
完成对管控平台全球化部署和操作能力的支持后,那么整个蓝鲸上层的所有平台,都能借助这个能力实现全球化。
全球化管控,使得整个蓝鲸 PaaS 能力在 CI、CD、CO 领域的应用发挥到极致,所有的能力层级叠加,层级拓展,所有的能力都可以复用。
在 CI 领域,实现全球制品投递
在国内编译的游戏版本,能够通过这套系统,随时发布到全球任何一个地点。
在 CD 领域,实现全球资源管控
可以对全球任何一台服务器,执行任何一条命令;能够从这台服务器上取得任何想要的信息。
在 CO 领域,实现全球数据采集分析
例如观测某一台服务器的监控状况,蓝鲸监控可以通过管控平台,触达到全球管控范围内的任何一台服务器。
3
CO 领域场景应用
CMP 平台
数据平台、AIOps 平台、以及 CO 内的成本分析、根因分析等场景,是蓝鲸在 CO 领域的典型应用,称之为智能监控。
下图右边的深蓝色部分,是蓝鲸的 AIOps 平台能力抽象模型。有算法部分、数据部分,也有一些数据的 Pipeline、清洗、规则等。在一些典型的领域可以与日志数据、基础监控数据进行结合,做一些清理和计算,通过它的理论模型做智能的分析,我们就可以让监控变得更加智能。这是蓝鲸研运体系在腾讯内 CO 领域的一个非常典型的应用。
下图是智能监控的一个应用案例,通过调整检测算法里面的参数,来达到在算法层面对告警灵敏度、精度等数据的优化。
异常情况的检测,可以结合智能监控,通过算法,模型的学习和训练,能够快速抓住这些异常点,并且将异常点事件发送给用户,或者告警,从而避免造成一些业务损失。
4
CD+CO 领域的应用实践
由于蓝鲸 PaaS 结构的便利性,不同领域的技术能够很方便的产生一些交叉和融合,从而促成一些新的技术。例如智能化应用编排调度、装箱优化。
典型应用:智能化编排调度
蓝鲸容器平台的架构,分为两层:
服务层
里面包含了集群管理、业务管理、数据管理等模块,它主要负责跟蓝鲸整个体系的融汇打通。
Runtime 层
它主要包括 K8S 的一些组件,包括 K8S 的运行时它的 Kubelet,以及一些插件,例如 CI 插件、CNI 插件、针对游戏的 Game Operator、支撑游戏的组件、负载均衡、CA、GPA 和驱逐等等。它的作用是当业务的资源使用受到瓶颈时,触发一种规则,这种规则能够自动的将空闲池里面一部分机器初始化之后纳入到集群里面来,然后扩充业务的资源。
典型应用:装箱优化
应用弹性伸缩的常规做法,往往是通过 CPU、内存的水位分布来出发容量预测的规则,但实际上 CPU 和内存的水位分布不一定能够真实地代表业务的真实需求,所以我们可以通过构建模型去将更多的业务指标纳入到水位的管理中。这就是 AIOps 在 CD 领域的一个典型应用。
通过 AIOps 在整个容器平台这个领域,蓝鲸做了三部分事情:
装箱优化:通过训练模型来快速决策容器最优分布方案
配额推荐预测:CPU、mem 等资源配额的最合理推荐
容量预测:根据历史数据预测容量未来的变化,并驱动调度系统提前扩缩容
对蓝鲸的 PaaS 而言,我们认为它是一个有生命力的、不断成长的生命体,所有历史存在的东西都不是包袱而是积累。基础能力可以在不同场景得到复用,不同领域的能力能够方便的产生交流联系,并孕育出新的能力。
03
云原生时代蓝鲸研运体系的自我演进
在云原生时代下,蓝鲸研运体系为了能够更好的支撑业务、保障业务的运营,不可避免的需要做一些持续的自我演进,主要有四个方向:
容器化部署
在云原生体系下容器已经变成了一种成本更低、更便捷的部署方式,所以在蓝鲸软件 V7 这个版本会推出蓝鲸整个容器化部署的一套方案。
数据体系融合贯通
在云原生时代有容器、Workload、Service 等等模型、元数据与传统的元数据不再一样,这些新的概念需要在蓝鲸体系内进行数据的融汇贯通。例如,CMDB 未来可能支持对云原生资产的纳管、容器和传统监控实现统一、算力资源内部进行统一抽象和管理等。
云原生网关
基于 APISIX 来重新打造蓝鲸的网关服务,并且让它支持分布式网关的能力。用户也可以在这个分布式网关上进行各种自定义的扩展,当然它支持社区的 Lua 扩展。
SaaS 应用模型
定义一个蓝鲸 SaaS 的应用标准,然后通过这个标准开发的 SaaS,不用再去强依赖蓝鲸原有的开发框架。整个 SaaS 应用标准,定义和流程也会更加云原生化,会更加复用蓝鲸内部的一些云原生能力。
查看回放及下载 PPT 请关注公众号:嘉为蓝鲸
评论