运维体系的定义、演进、应用及未来解读
描述
运维的组织定位
腾讯内部是按事业群进行划分,其中互动娱乐运营负责所有腾讯游戏的技术支撑。整个互动娱乐事业群差不多有1万员工,如果单独拆分出去是一个非常大的公司。涉及游戏、影视文学、电竞、动漫等文化产业领域,其中游戏是主营业务。
游戏主要分两块,除了本身自己开发的,如王者荣耀、天天酷跑和消除类等游戏。另外一块是一个团队会到全球各地采购各类觉得会火的或者是会有非常大潜力的游戏拿过来。所有的游戏拿过来之后都是由我们团队运维支撑,目前运维大概差不多有300人,整个运维行业几乎可以说是在全中国,甚至可以说在全球最大的运维团队。目前我们支撑的服务器量差不多有20万台以上,在全球各地。另外我们整个支撑的业务量大概有400款游戏以上。在这里我们从2003年开始做游戏,一直到现在,已经累计了14年了,整个这块我们在做运维支撑这块积累了很多的经验。当然同时我们这几年也会把我们的技术或者是平台的能力去对外分享,甚至可能把我们的经验跟工信部去制定运维行业的标准。
基于云PaaS的移动运维。云分三层:一是IaaS层,基础设施层,像现在做很多公有云、OpenStack还有Docker容器,像传统企业以往需要去搭建你的IDC,这块对你来讲,你只需要到公有云或者虚拟云的平台点击申请,所有基础设施都生成。在IaaS层之上叫PaaS层,PaaS层是平台级服务,平台级服务主要做两件事,一个是帮助你运行托管所有的应用。第二件事是能支持你快速定制开发。三是SaaS,直接面向我们的使用对象,比如说我们有一个点餐系统就是SaaS,运维有非常多的发布或者是变更各式各样的系统,这是我们的SaaS。
目前很多的企业,包括BAT都开始做云。这些公司都是基于Docker做一些创业,Docker技术的兴起,这两年受到了非常多投资商的青睐,所以整个这块他们做得涌现出很多的公司。
腾讯内部我们怎么做运维支撑?左边这侧是基于传统的模式,传统模式都是这么做的。下面最下的层是IaaS,上面是你所有的应用系统,在上面支撑你的业务,每个企业,不管是大还是小,现在传统企业慢慢、慢慢都在做互联网化。这个企业都需要这样一些运维支撑系统去支撑。左边这块都是传统去做的,跟业务场景绑得很死。腾讯内部,我们做游戏支撑,我们所有的游戏,除了我们研发的,还有来自全球各地的,这些游戏拿过来之后,已经是成型了。相当于要支撑一个银行或者支撑一个建筑公司,或者餐饮类的企业,整个这块把我们的平台和业务场景剥离出来,整个这块可以适配各式各样的业务系统,就比如说我们在2015年,那个时候滴滴打车和58同城被腾讯投资,他们的业务量陡增,需要搬迁到腾讯内部,这时候就需要一套运维支撑平台支撑他们。按照原来传统的做法没有办法在1-2个月内对他们支撑,通过右侧的PaaS和场景解耦合的方式,可以非常短时间内支撑他们。
今天我和大家讲的有点偏技术,我是工程师出身,但是这块代表我们整个行业里的运维。我会从四方面讲:一是运维的组织定位,就是运维做什么的。二是整个运维体系的演进。三是应用运维的边界。四是讲我们在去做运维支撑, 我们其实也是对外输出能力和平台产品,做的一些生态方面的事情。
身边的运维们,每个公司现在都有,不管公司大还是小,都有一些IT支撑系统或者信息支撑部门,他们平时都是要干这些事,要执行脚本或者执行命令,去操控他们业务系统的发布,或者维护他们企业内部的一些IaaS系统或者是其他的。
运维的职责,我们抽象为三类:一是发布,你的业务系统可能要做一些更新,要把你的版本发布到你的线上去,让你的用户使用。二是变更,变更就非常多,比如刚才讲到电信这块,你们经常会讲到他们切割或者IDC做变更,网络基础设施整个这块,还有物理机整个这块的变更。三是故障处理,运维经常要处理各种各样的故障,企业系统里面某些东西用不了,比如银行,网上银行出什么问题,这块都是要通过运维处理。或者基础设施不能用,要修复,要通过运维做。
运维的分类,按工种分三类:一是IDC运维,这是以前有的,80、90年代的运维,那时候大机、小机,去IOE之后是X86,因为当时是没有云的概念,每个企业都会去运营商那边租用IDC或者自建IDC,它需要运维拉网线,把服务器搬到基站上去。那时候这些运维干这些事情。随着云的发展起来,这部分工种对企业来讲需求会越来越少,因为我们的服务器、我们的网络,说白了,要到公有云上点击购买就可以了。我们向公有云厂商集中。二是IaaS层以上,操作系统层,我们叫系统管理员,系统管理员做的是操作系统,比如Windows等,你需要进行调优或者内核的小的改造,甚至系统安全性的布置,这是SA。这块也慢慢的被云厂商集成进来,比如阿里云、腾讯云购买云主机的时候,都可以看到它可以根据你的企业定制你的OS层,所以你这个操作系统需要做一些个性化的配置,它可以支撑你直接定制好,然后生成进项,点击购买,你需要购买的云主机或者存储都按照你的格式做。三是应用运维,比如我现在做游戏的运维,如果大家玩游戏王者荣耀,你可能玩着、玩着卡了,或者买不了某个道具,你投诉到腾讯,或者直接在论坛上骂帖,我们的客服拿到这些信息就告诉运维,我马上来处理。首先这个运维,做运维必须要对整个游戏本身非常熟悉,在哪个地方买什么道具或者什么卡,我应该知道业务模块是哪个地方出了问题,各个进程之间的通信或者模块之间的架构是什么样的。这块对于业务运维来讲,其实工种的技术要求会越来越高。
运维的层次,在腾讯内部做了一些分类,我们是分三个层次:一是运营保障,每个企业都要有IDC运维或者是ICE运维,这些人做的事情是保证业务系统7×24小时不挂,挂了之后,以最快的速度修好。做这样事情的人,你只有苦劳,没有功劳。你做好了是你应该的,没有做好就不及格,就会被老板骂。二是运营工程层,你需要通过你的PaaS的能力去构建你的工具。三是运营决策,大家可能知道整个所有业务系统,你在面向最终,都是一些用户,那用户需要让业务系统会更流畅,甚至可以说体验更好,或者对游戏来讲,你要让它的收入能不能变得更高,传统的模式是通过我们的非技术人员的经验,就屁股决定脑袋来说我们要做什么事,能给我们的业务带来多大的收入。他们其实没有这样的数据决策,整个这块我们作为运维,我们拥有整个所有运行网络环境里面的所有数据,通过这种手段我们可以把所有的数据集合起来,根据我们对这个业务的理解,能够做出非常精准的决策,去指导我们这个业务去运行的更好。
运维体系的演进
运维体系的演进,我们按三个层次:一是自动化,我们和很多传统行业交流的时候,发现他们在做的事情都是通过手工做的,效率非常低。企业里面可能有5、6个运维,可能维护一个系统,不管出什么事情都是通过手工做的。我们的目标是通过自动化的手段能够把所有的这些原来手动做的事情,通过系统自动去做。当我们把这些手动做的事情通过系统自动做之后,那我们所有运维人员他们就把自己给解放出来了,我们平时不需要再做以前重复、低价值密度的工作。再接下来我们可能要做更上层的事情,就叫数据化,其实前面已经提到了,怎么通过技术手段以及现在所拥有的全部运营环境里面的数据做一些精准的决策,拉伸业务价值的事情。我们的数据化做到一定程度之后,你会发现做数据化的时候,非常多的手段其实是没办法覆盖所谓的场景,而且很多时候数据本身都有一些局限性,这个时候我们就需要通过智能化,AI的技术去提升我们整个精准决策的灵敏度以及预测未来的能力。
刚才讲到PaaS,传统的各种云和创业厂商做的事情是平台和场景绑在一起,整个这块是一个单体,我们在平台和场景方面我们是做了非常大的分离,相当于我们在下面根据你这个企业会有很多的各式各样的平台或者我们给你们提供对应的平台,在平台之上,通过IPaaS,就是集成平台,它能实现企业内部各式各样的周边系统或者是平台也好,他们之间的互联互通,在上层构建我们的运维支撑工具,整个按这个模式来走。在腾讯内部通过IPaaS的能力,把整个公司内部的所有平台或者能力全部都集成起来,这可以类比到传统企业里,这个企业可能购买了IBM、惠普等,以前卖的很多的系统,发布系统或者监控系统,各种各样的系统,这个系统有一个特点,一个是特别贵,可能上百万甚至上千万。另外一个特点是他们之间是没有信息互通的,他们都是孤岛。如果企业需要做一些IT自动化的流程,它会发现非常艰难,而且他想改变这种局势是没有办法做的。
在运维这块有很多的平台,一个是配置平台,在业界叫CMBD,所有的企业要做运维首先需要有一个CMDB管理企业内部的资产,另外你整个ID资产上面跑的是你的业务系统,所有的业务系统也需要一个地方来对它进行统一的管理。二是作业平台,作业平台是针对每个企业里面所有的脚本自动化,甚至像你的版本发布,都是要通过这样的平台去做。容器管理平台,这两年容器比较火,企业内部来讲,很多的业务或者是新兴的业务开始尝试,通过容器的技术去实现他们的企业内部IT交互的敏捷,通过这样的方式我们有容器管理平台能实现它整个容器的生成到销毁到运行实施的管理,资源的申请等等这些。数据平台,我们要做数据化,必须要数据平台,传统的数据平台基本上每个企业可能现在都说要做数据平台,大量的数据平台他们其实是针对商业分析或者是用户画像的这块做的,实际上在运维这个领域,其实也有需要这样的数据平台做一些体验实时的分析或者干预或者决策的事情。一个是需要你能够支持海量的数据采集;二是需要支持数据的完整性;三是支持非常大的数据的输入。数据挖掘平台,挖掘技术在整个互联网,其实已经变得非常时髦,我们要基于AI技术、人工智能、机器学习,这些技术需要统一到我们的挖掘平台里面来,而通过引擎去针对这样的可能以人肉或者普通的算法没有办法去把这个东西规则找出来的,通过这样的挖掘平台生成。
应用运维的边界
应用运维的边界,运维的边界分四个层面讲:一是运维开发,企业系统里面有各式各样的系统,这些系统都是花了很多钱买过来的,而且这些系统他们都跑在IaaS上面,这时候就需要人去进行维护。我们试想一下,除了维护公司内部的业务系统之外,我们还需要维护这些支撑系统,这是不合理的。这时候有一种技术叫PaaS技术,PaaS能把所有的支撑系统的维护全都给你托管,你不需要再维护这样的支撑系统本身。
各个企业做自动化要开发一些系统,比如CRM或者OA系统,整个这块我们传统的开发模式可能需要熟悉你这个需求本身,我做一个CRM要怎么做,可能要画一个圆形出来,画好圆形之后,要准备这样一些资源,准备服务器搭建CRM系统,然后再构建一个环境,就要跑CRM,如果公司用JAVA或者什么语言写的话,你需要部署这些环境。部署环境之后你可能需要对外提供服务,需要一些公共组件,比如说前端接入,然后在这个里面去开发CRM的系统,开发好之后,需要把这个系统部署上去,部署上去之后,你还要对这个系统本身做监控,如果某天都在用CRM系统或者OA系统,如果挂了就用不了,这时候我作为系统开发方必须要实时知道,这块需要有一个监控。如果你做监控,你可能要做一些日志,通过日志查询,在这个圈子里面要不断迭代开发OA系统,通过PaaS的开发模式,帮你省很多事情,只需要做两件事:一是整个要开发工具本身的需求要清楚,这是没有人能帮你做的。比如我要开发微信,你应该知道我要开发哪些东西,你要能描述出来。
第二个事情是开发本身,比如我们做一个网站要开发前端,大家经常登录一些网站,网站点,那些页面怎么做出来的,通过传统方式,你可能要写很多的代码,学计算机的都知道,HTMCS,各种样式,往上面堆。这块前端会花非常多的时间。如果PaaS,你可以直接在我们这个PaaS里面有一个叫拖拽生成。原来读过大学,网页三剑客的工具,可以把页面拖拽生成,不需要编码。前端页面,比如登录一个网站要点击登录,要点购买什么东西,这涉及到后台数据的交互,后台数据交互,整个后台还有一个逻辑相关的处理,这个后台传统的方式也是需要对它进行编写代码,而且代码非常大。代码非常大,我们通过框架能力把底层的平台集成进去,以组件的方式集成进去,通过API的方式直接调用函数,非技术人员拿过来的时候,可能只需要去按照你的说明把这个函数弄过来,直接拼装成后台。我们开发一个OA系统或者开发网站,它会变得非常便捷,而且成本也非常低。我们曾经在内部,针对腾讯校招的毕业生进来,他们进来的第一件事,是通过PaaS开发对应的工具,我们给他们的时间就是三个星期,如果三个星期做不出来运维工具,你可能不符合腾讯的标准。目前运行5年,最后只有一位不合适,去了建设银行。
另外我们还针对我们企业内部的运维人员都做了一些体系化的培训,比如他原来是传统进来的,甚至脚本不会写,甚至点一些页面,我们会开夜校的方式,手把手教他们,怎么在后台组装函数,也是一个月左右,一个星期一到两个小时,他们慢慢也能够学会在PaaS上构建他们的工具。这样他们也把他们以前非常痛苦的,以前没办法,只能自己做,通过手点、执行的东西,以工具的形式做出来,做出来可以交到对应的对他提出需求的岗位,让他们自己做。比如这个产品让我提取数据或者更改东西,我做一个工具给你以后,就不要再来找我,我把自己解放出来。这就是PaaS的好处。这是我们刚刚讲的,开发一个网站、开发一个工具,你的前端可以通过PaaS拖拽出来。后台会有一个框架,这个代码大家可能看不懂,如果你们到我这边来培训一下,可能不到一个星期,你们也知道怎么往里面填。我们告诉你哪一步该填什么东西,然后往里面填,慢慢开发你整个的工具。包括页面上有前后台联动的,做运维,这些东西都可以在上面以一个函数的形式提出来,比如执行流程,比如在上面购买购物车,购物车有什么东西,然后退货,这是逻辑性单元的,在上面有函数就可以生成这样的功能。
我们最主要做的目的,一是专注于让我们的相关人员用我们的PaaS是专注于SaaS流程拼装,像搭积木一样做工具,我们叫SaaS。另外一块是通过这种模式大大降低SaaS的构建成本。大家知道,针对这样一些运维工具,我们大家都想要用一些通用的工具,其实它的应用性很差,成本很低,比如IBM做了通用的,像发布管理系统或者是流程管理系统,卖给很多企业,比如卖给银行或者建筑类或者餐饮类,每个企业都要有一套流程的东西,通过这种模式做,这个是统一铺开给别人卖,应用性是很差的。企业构建系统的时候,不具备这种能力,所以必须要这样做。第二个是定制,大家想的是如果我现在告诉你,你是A企业,我给你定制一个系统,你提需求,我给你做进去,你用,你一定觉得这个体验很好。你对系统本身的信赖很高。随之而来,如果我是做2B的企业,如果每家企业做定制,那我可能人力就跟不上,一个企业要派两个人。这不可能。如果有通用的方式,我们提供定制的体验,同时我们把这个工具本身的应用性也做到非常好,低成本很高,通过这样的方式通过PaaS做。
第二个是运维边界DevOps,不知道大家对运维领域有没有感兴趣,DevOps这几年,比如说大数据、DevOps、多容器这些词都很火,DevOps也会非常火。甚至像有些培训机构几万块一节课,都是非常火的。DevOps说白了就是为了提升你这个企业内部各个岗位之间,你这个企业内部有开发,企业内部有运维,企业内部有测试,各个岗位之间,他们很早都存在一道墙的,他们之间工作不顺畅,他们整个流程跑下去,经常会有非常多的隔阂。通过DevOps的理念把企业IT的交互流程以最敏捷的方式能够执行下去。整个表现最突出的是CI/CD,整个企业内部,各个应用系统或者持续集成,就说你的开发应用系统部署到你的线上去,还有整个发布或者变更,我们通过PaaS可以直接把DevOps以及你这个企业内部所有的需求或者是维护,全部可以通过PaaS来实现。通过这样的模式,我们通过运维借助PaaS去构建各式各样的工具或者系统。
腾讯内部,我们通过这样的PaaS去开展这样工具的构建,通过PaaS层,我们做运维,以前说白了,就是一个打杂的,很多企业的运维都是来打杂的,腾讯内部这种运维可以和各式各样的岗位提供工具给他们。比如这个公司的运营或者产品或者策划或者测试,都可以提供各式各样的工具给他们。腾讯游戏大概有500次发布,这个发布怎么做?通过这个工具做,通过PaaS开发出来的,500多次。还有一块是监控。这些SaaS都非常多,针对运维整个这块。比如故障治愈,企业故障都可以通过SaaS来直接快速的通过系统方式集成好。这是持续集成,基于Docker容器里面的持续集成。
我们还在对外尝试的体系化,非自己岗位内的,企业内部要开会,可能有些会议纪要要做,如果需要一个人记录会议纪要发出来要三四个小时,你直接开会,通过PaaS层来做可能只有几分钟。Supercell,腾讯收购Supercell,他们的游戏发行,要查看网络质量,通过这个提供工具给他们,让美国人或者欧洲人通过这样的工具来看到他们的东西。这是我们针对玩家的腾讯游戏,所有的外网用户,你们需要做用户体验的实施监测。我们通过PaaS支撑400多个业务,分布在全球各地,大概有600个SaaS,每个SaaS都可以做非常多的应用场景的支撑。另外是数据运维,举一个简单的例子,玩游戏,你们需要下载客户端,甚至像一些端游,比如英雄联盟,可能5、6G的客户端,你们下载过程中会觉得网络太慢,你可能等待不了就直接叉了。对于腾讯来讲我们流失了一个用户,我们需要通过一些手段进行干预,让用户下载过程中不要叉掉,这个场景通过运维的手段来做。我们根据下载的通道、渠道或者其他的方式,来对它进行分析。
下载的时候,你可能就说这次是40级,下次马上升41级,这个过程中,你说需要一个礼包,这样你用一个礼包可以直接升级。通过这种用户心理,我们可能在你下载升级的时候给你发礼包,你觉得我有兴趣往下玩。类似这种方式,比如我们怎么发,发给谁,比如什么情况下发礼包给他。比如下载进度下载到10%、20%的时候,我们什么时间点可以发。还有发什么样的礼包,发什么礼包勾起他的欲望继续等待。我们根据这样的方式,我们需要对数据进行抓取,同时针对这样的数据进行计算,通过各种各样的函数对它进行分析。通过这样一些数据的计算之后,会得出我们的玩家在下载过程中,你们取消它的概率,得出它的一些概率。当我们知道它会取消,就会看我们该给它发什么样的道具,就要对用户进行分析。我们针对各种标签,针对他们做一些标签,会得出一些结论。比如下载速度多少的时候,你当前进度是多少的时候,你下载完成率5%,或者下载10分钟,你不能再等了,我们应该给你发什么东西,通过这样的模式挽回你。通过这样的方式我们得到很多的对比,我们会针对他的下载时长或者完成率做对比。另外是智能运维,智能运维有非常多的运维整合,我们从模式训练到数据整合的提取到整个公司的应用,这块我们挖掘这块去做。
生态建设
生态,我们在内部支撑腾讯游戏,这两年腾讯不断对外开放我们的一些能力,最突出的点是腾讯云,这是腾讯对外2B的窗口,整个产品都是支撑2C业务非常优秀的产品。我们在这块也是做得非常不错,我们根据自己在整个运维行业或者PaaS的理念或者技术能力,然后在行业里面有非常多的运维的企业,他们做代维,比如他们一直跟IBM、惠普和BMC,帮他们做工作,这时候都是非常传统的。以前的方式成本很高,利润又很低,我们能不能有一种方式把以前运维集成和沉淀输出给他们,让他们针对这个行业做非常多的场景、应用。最好的方式我们认为是这样的,顶级互联网公司,把技术能力传输给我们的传统的代维公司,他们通过这样的能力去服务企业客户,这些企业客户拿到产品,我们刚刚知道这是PaaS,PaaS具备二次开发或者定制能力,我们也会把这样的能力交付给企业客户。非常多的传统企业,他们以前买的很多系统或者平台都是二进制包,拿过来部署好,出任何问题都改不了,必须找IBM或者原厂的人来改,通过这种模式给他们的东西有具备能力做一些小修改或者一些定制。
这是我们目前已经做对外的开放,我们会把我们所有支撑内部腾讯的经验,以产品的形式对外开放,我们首先对外开放的免费版本,叫社区版,目前大概有六七千家的企业客户,他们的运维部署下来,到内部支撑他们的业务系统。整个我们还对外开放了SaaS的市场,基于PaaS开发出来非常多的SaaS,你们可以到SaaS市场里面直接下载应用,然后安装到你们的企业内部的PaaS平台上,这样就可以自动支撑企业内部的体系运营。我们对外也做一些生态,我们刚刚讲了,有些技术类的公司,他们做运维这块,我们把我们的平台给他们。另外我们和很多培训机构,他们这块就培训专门的运维人员,这些运维人员最后都会分散到各个企业内部做运维支撑。他们了解这个平台,再把平台了解到企业去。另外我们结合非常多的品牌类项目,比如说做CICD做得非常专业,在全球做得很好的品牌,他们的品牌直接集成到PaaS平台,以这样的全链路的生态服务这样的企业客户。另外跟工信部制定运维标准,像PaaS的运维标准,有了这个标准之后,比如银行或者是其他的行业,他们在采购运维系统的时候,他们会看工信部或者国家部委有没有一些标准,他们的招标书都是按照这个写的,通过这样的模式,就让他们自然而然的往我们的PaaS平台靠齐。这是我们对外做的生态,一个是开源,我们的能力会对外进行开源,另外产品还有服务、行业和渠道,渠道通过非常多的组织,把这样的渠道对外开放,去分享,给他们做技术咨询。另外技术这块,现在行业目前非常火,像大数据、智能运维、DevOps,我们都有技术的输出。