我今天分享的主题是“从0到1构建支撑企业自动化运维系统的PaaS”,这个主题是围绕如何快速构建企业自动化运维,我们这边是负责腾讯游戏运维的,腾讯2016年的收入是1500亿,游戏占了一半,在服务器主机运维这块我们大概有20多万台主机,同时这些游戏大概有400到500款左右,最近很火的《王者荣耀》其实也是我们在负责运维的。
为什么要构建企业自动化运维系统的PaaS,大家知道运维其实是一个重复劳动而且低价值密度的岗位,其实它是负责整个企业内部所有业务系统的稳定运行,自动化程度的高低决定着运维的支撑效率。比如我原来做一个《穿越火线》的运维,这个业务最开始可能10台、20台服务器,最后爆发的时候你会发现几千台服务器,大家在玩的时候会发现几百个大区,这个时候如果还是我一个人在运维的时候,那我根本忙不过来,这个时候需要通过自动化的手段,去把我们的一些运维工作解放出来。整个这块,如果按照传统的方式来做,可能我们就要去招一批开发,开发一大堆基于ansible、SaltStack、Puppet这样的自动化工具。领导不可能给你派几十人来支撑业务,这时候我们就需要一个能够快速构建自动化运维系统的PaaS。
我今天的演讲会按照四个部分来为大家分享。首先第一个,我们从2012年开始做蓝鲸,到现在已经做了5年多了,我们从2015年开始,把我们的一些运维经验输出到业界,特别是一些传统企业,我们也了解到了他们在做运维的痛点。第二个,讲我们自己本身在腾讯游戏是怎么去支撑腾讯收入一半的运维的自动化,如何构建PaaS这种方式,把我们的经验给大家讲一下。第三部分,把我们在内部具体的实际案例给大家讲一下。最后,给大家介绍一下我们的对外开放,我们从2016年已经开始把我们的一些产品拿出来,例如我们对外开放了社区版,到目前为止至少有4000家用户,把我们的产品下载下来,在他内部的生产环境搭建起来,快速构建他们公司内部的自动化运维支撑体系。
第一个,传统运维的痛点,这张图大家看到很多云厂商,现在最火的几个词,云计算、大数据、AI。云计算这块,像我们腾讯自己在做云,阿里在做云,很多传统企业都开始在做云。云有什么特点,首先第一个可以按需获取,像个水龙头一样,要的时候打开,不要的时候关掉。第二个是弹性伸缩,你可能因为某一个运营活动导致你突然间需要扩缩容,方便我们基础设施的快速获取。随着云计算的到来,对我们运维有什么改变,大家可能知道大概在90年代的时候,传统企业大家可能就是10台、20台左右的大机小机。慢慢的X86,过了之后是虚拟化,过后是容器来了。运维对象发生改变了,传统的90年代那时候我们只要招一个运维,这个人只要体力好一些就可以了。但是X86或者虚拟机或者容器一上线以后,你会发现可能面临的是成千上百台,这个时候还靠人手去点肯定不行的。
运维的数量得到了一个暴增。另外是运维数量的属性,以前是物理机X86,后面你发现虚拟机还有容器,它们的管理方式不一样,上面网易的同学也讲过了怎么管理容器。如果这个运维你同时,因为很多传统企业他们会保留以前那些传统基础架构,新技术的引进会导致运维,比如要同时操作,我的X86,我的虚拟机,我的容器,你同时发布,这也是一个挑战。最后一个是应用,各式各样的行业都已经开始在互联网化,包括金融行业、电力行业、制造业,都开始在互联网化,他们所有这样一些应用服务都是以App的形式,这些应用本身也需要运维。传统运维,可能以前你只需要关注IDC,关注网络,关注OS就可以了,但这时候你需要关注业务应用层。比如我做游戏的,突然有一天玩家说金币购买不了了,那把枪购买不了了,来投诉的时候一定是运维,枪买过来了是哪个模块哪个进程,有可能出现哪些日志,你需要对整个应用层非常了解,这是对我们运维的一些技能会要求越来越高。这是我们摘取的银行业对他们银行的一些要求,作为一个指导意见发出来,打造智能化运维体系,比如像我们可信云金牌运维这个认证。
针对企业,一个传统的自动化运维做一个变革其实有两种方式,第一种是购买,像90年进到中国企业的IT支撑系统,像IBM、惠普等,他们可能给你提供一些像发布系统、管控系统、监控系统、工单系统,我们很多的企业都去购买。第二种是自建,我们要提升运维自动化能力,可能下面指派一个技术负责人去招人。我们买IBM、惠普这些系统之后大家会发现有很多问题,第一,它是基于传统架构开发的,很多都非常笨重,你可能要改一个地方非常困难。另外一块,你的企业如何需要做自动化流程的串接,你会发现公司里买的各个的像IBM、惠普的系统,各个系统之间其实是孤岛,没办法打通,这个就会影响你企业流程的自动化。这个是整个你在购买的过程中也可能会遇到很多问题,你可能买了某一家乙方的一个系统,最开始招标的时候告诉你我什么都可以做,也非常积极。当这个标确定以后,开始进入实质阶段的时候,你会发现各种问题来了,比如他可能前期技术攻坚人员,把这个人员撤走了。另外你跟他之间沟通成本可能会非常高,你可能非常小一个改动,发现两个星期以后都没有任何进展。自建,首先我这个企业需要去组建团队,你可能需要去互联网挖人,人力成本会非常高。招过来之后,其实技术储备并不是特别足,最后是建设周期长,我们曾经和一个企业交流的时候,那个领导提到一点,他招了一个技术负责人,招了一个团队,去搞运维自动化,做了大概一年,最后交付给他就是一张图纸,会有各种各样的问题。
怎么去提升自己企业的自动化运维,我们基于PaaS,整个这块是我们能快速支撑起我们内部的系统。分两个领域,第一个我们看到左边这张图,应该是跟很多企业都是类似的,最底层是你的IaaS资源层,之上有一层PaaS,能够对他们进行资源调度,包括你的一些监控,你如果是用容器,容器编排。在上层适配各式各样的业务。右边是蓝鲸的PaaS,集成了很多功能平台,最上层,通过快速构建的框架,让你能够在飞机短的时间之内去构建基于场景的运维自动化工具。这一块可以做各式各样的工具,比如可以给我们的产品提供一些运营分析的工具,给我们运维自己本身提供一些比如像发布、变更、故障处理这些工具,同时我们可以给开发层面提供各式各样的CI/CD工具。
怎么来构建这个PaaS,从Gartner那边,它是分成两类,一种是APaaS,自动化运维工具的托管,比如我们传统开发一个工具,你需要把这个工具部署在服务器上,让它运行起来,如果它出了问题,这些日志你要定位。你还要经常对它进行迭代,进行开发联调。如果拿到PaaS,所有的进行托管,支撑你自己本身业务的同时,不需要管你工具的支撑了。还有一个是IPaaS,服务集成,每个公司都买了很多的工具,也建立了很多工具,这些工具都是来自不同的厂商或者是不同的团队开发出来的,他们所使用的技术栈、架构和协议都是不一样的。这时候我们在做一些自动化工作的时候,你会发现他们之间都是无法连接起来的。这时候我们集成这样一个能力,在上层再去构建所有运维的自动化工具。
构建PaaS的步骤,按照这五个流程来走。第一个,构建APaaS,这块是运维自动化工具的部署以及免运维托管。第二是集成原子平,把我们企业内部的各式各样的平台能够把它集成到一起,实现他们资金的一个集成和交互。第三个是有一个SOA的理念,能够快速对接这些平台。第四个我们需要有调度引擎,对接的原子平的能力能够以服务的形式提供出来,第五是快速开发,快速构建自动化运维系统。
首先第一个是托管APaaS,托管这块一个是本身工具的运行,另外一个是工具在运行过程中的这些监控,还有它对资源占有的调度。另外,这些部署应用的服务发现,另外还有各式各样的服务收集。一句话来说,所有这些工具不需要你做任何关注,有问题需要定位的时候直接在上面定位,不需要在这些服务器上做运维式的搜查。第二个是集成原子平台,运维可能用很多平台,比如像问题管理系统、CMBD、作业管理系统、发布系统,各式各样的系统,这些系统在企业内部肯定是不同的团队去做的。通过直接跟它对接,对接到IPaaS里面,把它们集成进去。这是我们蓝鲸本身自己也有很多平台,这个平台我们都已对接到IPaaS平台。这是作业平台,做的事情用一句话概括,就是支持我们所有运维的脚本和文件的海量快速的并发执行。这个就跟业界传统的像ansible、SaltStack、Puppet都是实现这样的功能,只不过它的功能更强大,而且是可视化的。这是一个数据平台,运维现在讲大数据,都是基于我们的大数据做一些辅助运营这样的东西,它是一个实时的加上离线的大数据计算平台,整个这一块他能够支持一个海量数据采集、传输包括后面的计算、分析,最后得出这样一些运维的结论。
比如我们现在大家在玩游戏之后,你们下载的时候或者下载失败,或者下载数据有问题的时候,我们可以对你们这个平台数据实时进行采集然后通过一些手段进行干预使其能够正常下载。另外一个,比如我们现网需要扩容,怎么扩,可能需要根据你运营环境的负载或者根据你现网容量的增长值,这个时候我们也可以通过运维数据平台,进行数据采集和分析。我们会把各式各样的运维关联到的所有平台都对接到我们IPaaS里面来,包括你企业里面其他的团队和跨部门开发的平台都可以集成进来,这些平台有可能我们运维都是需要用到的,那我们都让它对接进来。集成进来就需要企业服务总线,在这个里面我们会把下面所有这些平台,包括自己的平台,他们所有这些协议都转换成通用的一种http协议,在这个总线内部,我们有各式各样的服务注册、权限控制、异常处理、频率控制、过载保护等东西。当我们把所有的服务以及平台能力都集成到总线上来之后,这个时候还需要有一个调度引擎,它能够把我们所有这些平台原子的能力串起来。比如现在我要做一个扩容,可能第一步我需要去拿一台云主机,这个时候我可能要用到云管理平台,我拿过来之后需要把它注册到CMDB里来,然后再对它进行一个进程的起停,包括我们文件的分发。比如你需要对周边的系统进行一些联调,或者对外,比如你有一个官网系统或者对外用户的开放过程,各式各样的平台。最后集成进来之后需要展现出来,给到我们运维、产品、开发,让他们去执行。
这块是快速开发,我们把我们的能力要通过外部页面的形式展示出来。传统的开发模式,可能受限你要梳理你这个需求,我要做一个发布系统,这个需求是什么样的。接下来是资源准备,接下来是构建环境,再往下是公共组件,然后是开发,开发好之后,你需要把工具本身的代码部署到服务器上去,然后你要对工具本身做一个监控告警,工具本身你要做一些日志会回溯,有问题的时候你开发这个东西能够定位,能够快速修。基于PaaS,只要做两件事情,第一件事情,梳理你应用工具本身的需求,比如我要做一个发布系统,我该怎么做,把这个东西梳理出来,以一种形式把它展现出来。第二是开发,而且是非常简单的开发,PaaS做了很多事情,首先针对前端我们提供了一个前端样例,我们开发这些运维工具,其实也是可以拖拽生成的,这些运维工具的前端其实也是可以穷举的,无非像一些表单、表格甚至流程,都是可以把它以样例的方式放到我们的magixbox。
这是我们整合出来的方便我们做工具的前端,拖拽生成。还有后框架,里面会集成很多这样一些能力,比如说你开发一个工具,比如某一个公司统一的登录,还有一些权限控制,还有各式各样的安全防护,后台任务、调度引擎系统,我们都是一个一个框架把它集成起来,这些公共的事情你就不用去做了。举个简单的例子,像执行的流程引擎,你可能不需要再去开发了,在PaaS组件里直接能够拿到。当我们具备开发、前端还有后台,这个时候我们就相当于一个指南,需要告诉我这个运维怎么去开发。这块我们有一个训练营的模式,在腾讯内部我们有一个蓝鲸训练营,这些运维他们平时都有自己的工作,他们负责平时自己的工作,我们一个星期上两节课,告诉他怎么从0在我们PaaS平台上开发他的自动化工具。这样的运转下去,大概一个月,他们已经具备构建运维工具的能力,他们就可以把他们的空闲时间拿出去,将传统方式做的事情,以工具的方式放到这上面来,他们可以把工作交付给对应这些需求的提出人,比如我的产品经常让我去提一些数据,我就做这样一个工具给到他,以后就不要来找我了。各式各样的工具,在我们的PaaS平台上爆发出来了,这样下去,运维能够把以前他执行的一些重复工作全部能够给到对应的人,他就能把自己解放出来了。基于这种模式,才会有腾讯游戏里面,我们从2011年几十款游戏到现在五百款游戏,整个运维人员数量的增长其实是很少的。这就是我们自动化运维系统的全貌,基于底层的管控,还有各式各样原子平台和PaaS,快速实现的上层各式各样的应用场景SaaS。
第三个讲我们腾讯运维的实践,基于我们的PaaS,他们可以去做各式各样的工具,比如像发布工具、故障处理工具、用户体验工具、CI/CD类工具、监控工具,用户只要想得到的,他都可以基于这个平台去构建。还有跨界的,甚至有些同学他们要开例会,要整理例会纪要,这个生态开始成长起来。这个是在腾讯内部的基于PaaS构建起来的桌面,大家看到这个桌面里有各式各样的工具,我们搞了一个应用市场,这里面有500多个应用,这些应用都是被运维开发出来的。整个成长路线,首先最开始他们具备这样的技能之后,最开始是自己业务的提取或者配置管理的更改。做着做着他觉得他这个业务有很多工具,他就做成一个系列化。当他做到一个序列的工具,他可能吸收做一个场景,可能吸收做发布,怎么去做,再往上走,由她们又做成了门户,在腾讯有些运维,这个运维负责某一个业务,他以门户的形式把运维相关的操作,这个业务在这一个月内不需要我这个运维在岗位上,它可以自运行。这是目前腾讯内部运维其做的数据增值服务,运维以前可能就做运营保障,只有苦劳没有功劳,你这个事情做好是你应该的,没做好就是低于60分。当我们把这样一些保障工作交付出去之后,再基于我们的运维大数据平台,可以去做一些拉升业务价值的服务。在腾讯内部,运维不提供重复操作服务,只提供解决方案。这个是运维从玩家视角做了很多玩家社交大数据、数据试图等等。
前面讲的是在腾讯内部的一些实践,我们从2012年开始做蓝鲸到现在已经五年多了,我们的业务都是来自全球不同的开发商的,腾讯有自研的,有代理的,有海外的有国内的,这些业务都是基于不同的架构、不同的语言、甚至不同的OS来开发的,拿到每个企业来讲都是一个完整的业务线系统,整个运维体系与业务系统必须不能强耦合。所以,我们能够把运维平台的能力输出去,给到我们传统的行业公司。我们开放了蓝鲸社区版,目前已经开放了四个平台。这是我们从2016年8月份开始开放的,现在已经到了3.0,把我们从手工操作到脚本自动化,再到Web自动化、调度自动化的能力对外了。我们也在构建一个运维的社区,同时我也将一部分平台开源,比如像我们的CMDB,从去年已经开源了,另外一块是脚本社区,我们的运维都可以把一些通用的脚本上传上去,供其他的人来下载和使用。还有一个是开发者社区,我们从今年3月份的时候,在腾讯课堂上上了一个系列课,从0到1怎么基于我们的PaaS快速开发运维工具。我们社区里很多的运维人员他们就能够基于蓝鲸平台去开发出他们自己公司内的业务场景的SaaS,其实很多做得都非常不错。最后,在这里提前跟大家透露一个消息:蓝鲸的PaaS--集成平台也会在未来不久开源出去,希望能够帮助大家真正的快速实现企业内的自动化运维系统的构建。