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