腾讯最赚钱的部门是怎么做运维的?
本文来源:腾讯最赚钱的部门是怎么做运维的?
http://card.weibo.com/article/h5/s#cid=1001603864876505250090
腾讯互动娱乐事业群的主营业务是游戏,所有腾讯游戏都是由这个事业群做的,估计很多人都玩过,像《英雄联盟》、《全民突击》等。我所在的部门叫运营部,负责所有腾讯游戏的技术运营工作。
简单解释一下,什么叫技术运营工作,这里包括了几个部分:运维,营销开发,数据分析和数据挖掘,用户运营(所谓用户运营,不是传统的客户服务,是一些高端的用户运营。)
比如说在腾讯游戏上一年花八万,就是我们的VIP,我们有专属的服务经理对接,就像银行的VIP用户一样。这里就不展开了,重点说说我所负责的运维管理工作吧:
如上所说,我们所负责的运维工作,是运营部的一部分工作。我们现在运维了几百款游戏,而且数字还在快速增长,特别手游加入以来,每年都有一两百款。
简 单介绍一下腾讯游戏运维团队的发展历程:我们团队是2003年随着腾讯代理《凯旋》游戏而成立的,发展到2005年的时候,我们做了一件事情,就是DO分 离,DO分离的概念前些年提得比较多,现在大家好像不再提了。回头来看,我们觉得DO分离是很有必要的,因为开发跟运维需要具备的核心能力是不同的。
接下来,在2006年的时候我们做了QO分离,意思就是我们把质量管理团队(QA)和运维分离开了,这个后面我会再讲一下。随着团队进一步扩张,业务进一步增加,2007年的时候我们把DBA专业团队分离出来了。
到2009年的时候发现业务发展很快,老板不给我们这么多人,怎么办?光靠人去填的模式已经运行不下去了,所以当时成立了运维开发团队,专门建设运维工具。同时在2009年我们还成立了一个内部安全团队,这个团队可能很多公司都没有,比较特殊。
因为大家知道游戏行业,有些游戏类道具非常值钱,说不准哪个同学手一抖给自己加个几十万,所以我们成立了内部安全团队,做安全监控,其中也包括权限控制,大家都知道,自动化系统权限控制非常重要,如果这个没控制好就会出现灾难性后果。
时间到了2012年,我们开始提倡运维转型,鼓励运维向运维开发转型,让运维自己开发所需的工具来实现自动化。现在,我们提倡运维服务化和平台产品化,这个后文会提到。
接下来,我从文化、组织、人、流程、工具这几个维度分享一下运维管理的点滴经验。
我们团队的运维文化
运维文化:当一个团队规模较大时,例如我们团队,有两三百人的规模,这个时候我们可能需要一些文化层面的东西来统一大家的思想,让大家在行为上按照我们的文化来思考和执行。
我们目前提倡的文化,叫“运维四化”:服务化、标准化、自动化、产品化。标准化和自动化大家都比较好理解,我就不讲了。重点强调一下我们为什么提出运维的服务化。
为什么要“服务化”?
运维的本质到底是什么?
我从2002年开始做运维,一直到现在,都算是在运维行业里摸爬滚打,以前,我觉得做好发布变更、故障处理,让业务保持运行稳定就是运维的价值,但通过这几年的思考和实践,我觉得那是不够的。
那么运维的本质到底是什么呢?我觉得是服务,是服务于业务,因为运维是用技术解决业务问题,运维的价值要依托于业务才能体现。
运维不是因为技术高深,或者管理了几万台服务器而很牛逼,也不是能玩转很多开源工具而很牛逼,这都不是运维的关键。
我提一个观点:对于运维来说,服务第一,技术第二。运维技术再牛,如果不能服务于业务,帮助业务取得成功,那价值也是有限的。那么怎样服务业务呢?我们总结了四点:
贴近业务:就是我们一定要与业务走得比较近,保持信息的畅通;
理解业务: 要知道业务目标是什么,用户群是什么,商业模式是什么样的。之前我见过很多运维,甚至在公司做了半年、一年,还不知道所运维的业务的商业模式是什么,这样 的话我们怎么能有针对性地提供服务,去帮助业务成功呢? 理解业务还意味着要站在业务运营的角度思考问题,而不仅仅站在运维的角度思考。
挖掘需求背后的价值:我们经常会收到运营人员提出的需求,在理解业务的基础上,我们要挖掘这些业务需求背后的价值,比如说运营人员让发一个版本,做为运维,我们是不是把这个版本发布完就OK了呢?
肯定是不够的,我们还要去看业务发这个版本的目的是什么?可能是为了拉新用户,也有可能是做个活动去拉收入,或者是修复bug。
每 一个版本的目的不一样,运维所做的事情是可以不同的。比如这个版本是拉新用户,我们把版本发布完以后,还可以采集更多的数据,去帮助运营人员分析,看是不 是达到了拉新用户的目的。或者协助运营人员分析,这个版本的用户体验对于拉新用户是不是有瓶颈。这都是运维可做的事情,也是业务运营很需要的事情。
扩展服务价值:着眼于业务和服务,我们可以不断挖掘到新的价值点,扩展运维服务的价值。
当然了,这里绝不是说技术不重要,优秀的运维服务需要强大的技术来支持。举个例子,你想协助运营人员做用户体验的分析,这需要较强的技术能力来支撑。因为像上述的版本数据分析对实时性的要求很高,如果你没有及时分析出来,错过了运营时机可能就来不及调整了。
可以说,业务视角和服务意识决定了运维服务可以拓展到哪里,而技术能力则决定了这些服务最终可以实现多少。
前文讲了我们的历程,在2009年,我们做了一些组织分工,我们DBA团队,开发团队,安全团队都从这里分离出来了。
关于组织
这里想分享的经验是:当团队和业务发展到一定规模的时候一定要考虑到专业化分工,业务和团队规模小的时候没必要分的太细,因为业务场景对专业性的要求可能不高,随着业务发展和团队变大,专业性的要求就高了。
所以我们现在的内部划分成5个角色,第一个角色是运维规划。大家可以认为它是运维的PM,他起到的作用是充分理解业务需求,挖掘需求背后的价值,同时他也熟悉运维内部的各种资源,可以协调各种资源来满足业务的需求。这些运维规划都是从运维成长起来的,懂运维。
第二个角色业务运维,这个就不讲了,大家都清楚。
第 三个角色DBA,大家都知道DBA的重要性,他们最重要的职责之一就是要保证数据的安全。一个业务,就算是遇到像携程这次的情况,就算全部线上环境都没有 了,但是只要数据还在,业务都还是可以恢复的,但如果连数据都找不到了,那就真完蛋了,所以DBA一定是独立的,一定要保证数据是万无一失的。
系统运维这个角色也不说了,大家也比较清楚。
还有就是运维开发的角色,我们觉得运维开发不是传统的开发,运维开发首先是运维,其次才是开发,他们需要站在运维视角看问题的,站在运维视角开发工具给运维用。
关于人员管理和培养体系
组织里最重要的是人。在一个一定规模的团队里,建立人员的成长和培养体系是很重要的,尤其像规模到几百人的时候,我们怎么样保证团队里的同学们具备相应的能力和成长空间。
在我们团队里,有一套运维的成长体系,运维同学希望从事管理或者协调方面的工作,可以往运维规划方向发展;如果希望从事开发方面的工作,可以向运维开发方向发展。
配 合成长体系,有一套培养体系。新人加入以后,首先有新人培训。这里所培训的内容都是与运维相关的,比如运维系统的培训,在新人培训里有专门的篇幅是安全意 识相关的,从刚入职开始就灌输安全意识。此外,新人培训中还包括腾讯游戏运维血泪史,通过分享之前的教训提高新同学的运维操作意识。
新人在入职以后到转正有三个月,在这三个月中,一般情况下新同学不能独立操作正式的运营环境。只能在导师的带领下操作。
那怎么才能具备独立操作能力呢?需要考运维上岗认证,这个认证包括考试和评估两个环节,考试的内容大部分是新人培训的内容,例如安全意识、运维操作规范等。
评估的形式是几位资深的运维现场对被评估者进行评测,考察他们在各种场景的理解和反应,这些是不能通过背书本知识来回答的,所以还是比较考验新同学的能力和意识的。
通过上岗认证后会拿到一个上岗证,以前是会发一个红色的证书,现在不发了实体证书了,变成电子的了。这个上岗证后面还有一个作用,后面我会讲到。
新同学转正后,日常工作中会接触到很多技术培训和分享,这些大部分是由内部同学贡献的,当然也有公司内外部的各种培训资源。
当 某位同学在团队内工作了一段时间之后可能会面临成长的问题,我们会挑选出有潜力的同学上运营规划培养班或运维开发培训班。这两个培养班分别培养运营规划和 运维开发。拿运营规划培养班做例子,选定的同学经过半年的培养后通过考核才能成为的运营规划,通过率大概在40~60%;
运维人员的考核体系
运维人员的考核分为几个部分:
第一,业务指标。
业务指标就是业务的一些关键性指标,比如可用性、发布效率等等,还有很多其他指标。这些指标的作用是评估运维人员的基础工作完成质量,这是由QA,就是前面所述的质量管理团队统计的,不是运维自己上报的,这样可以保证其客观性。
第二,关键事件。
关键事件是运维自己制定的,用于引导运维不断优化工作。这个关键事件每个月定一次,由运维和他的leader和运维规划三方一起制定。
举个例子,我们发现某个游戏它的发布时长过长,就可以把发布时长优化做为这个游戏的运维人员这个月的关键事件,目标是把这个业务的发布时长从多少降到多少。制定关键事件的目标时比较细,要求是量化的,月底时运维根据完成情况获得关键事件的得分。
第三,加分项目。
例如做分享和培训都可以加分,积极参加团队建设也可以获得加分。
第四,扣分项目
我 们的考核思路是尽量用正向加分的方式引导,一般不扣分。除非是人为失误造成业务故障。所谓人为失误指运维操作不当造成的问题,我们对人为失误持“低容忍” 的态度,因为我们觉得做为运维,意识是非常重要的,操作时要时时刻刻秉持小心谨慎的态度,抱着敬畏的心情对待运营环境。
如果出现人为失误造成业务故障的情况,对于个人会有什么影响呢?
前 面提到的运维上岗证的另一个作用就在这里了,大家都知道违章后驾照扣分这项处罚措施挺有威慑力的,我们吸取了经验,对运维上岗证也实行积分扣分制度:运维 上岗证每半年都有10分的积分,如果出现人为失误的故障就从中扣除一定的分数,如果分数扣完,上岗证就会被注销,那么这位运维就需要被评估是否适合在运维 岗位上继续工作了。
当然,这个扣分制度的目的肯定不是为了处罚,主要还是希望通过这种方式提高大家的操作意识,避免人为失误。有的同学可能会问,为什么不靠自动化来降低人为失误,而要用这种考核手段?
这里我想说,根据我们的经验,游戏运维是很复杂的体系,特别是团队大了以后,自动化程度再高还是有很多人为失误的空间,最终的决定性因素还是人,所以,意识强化和考核手段还是不可或缺的。
关于流程的几点思考
流程的本质就是管理和控制,其实大家做的每一件事情都有流程,随便做一个发布,做的这些步骤就是流程,所以流程其实是无处不在的。
很多运维同学都觉得流程好麻烦,觉得流程就是给运维的桎梏,其实用好流程是可以保护运维的。我们很多时候需要跟运营和研发配合,如果用好了流程这个工具是可以保护运维利益的。
但是,流程执行起来的确有成本,那怎么降低流程的成本呢?
我们觉得流程应该“隐形化”,就是让流程融入到运维系统中,让运维同学不用花额外的精力去执行流程,感觉不到流程的存在,让流程起到控制作用的同时,尽量不降低我们的效率。
关于工具建设的几点思考
首先,我们认为工具的建设者必须是工具的使用者, 要懂得应用场景,否则的话,造出来的工具是不好用的。因为在这里我们是吃过一些亏的,刚才提到2009年我们就建立了运维开发团队,但是到2011年发现 我们工具覆盖的情况还是不够好,运维不愿意用,我们建立的是专业的开发团队,有产品经理、开发、测试,但是为什么做出来的工具就不对运维的胃口呢?
我们后来发现,开发团队并不懂运维场景,虽然他们也会做很多运维需求的访谈,但总是发现做出来的东西不是运维想要的。
所以后来我们改变了工具开发的模式,改成在运维中培养运维开发,让运维开发自己开发工具给自己用。这样的话,为了降低开发成本,我们做了蓝鲸平台,运维只要经过两周左右的培训就可以在蓝鲸上面开发工具。
标准化是自动化最重要的一个基础,如果没有标准化的话自动化是不会长久的。如果业务之间架构差异过大怎么办呢?可以降低标准化的维度,比如我们去实现原子操作的标准化。
了解的同学应该知道,游戏架构是很不标准化的,游戏不像Web应用,有很多框架模型,它没有,各家厂商各做各的,因此我们只能做原子操作的标准化,然后再在其上去组装各种场景作业。
我 们做自动化一定要打通企业内的各个信息孤岛,全流程的自动化才是真正的自动化。只有都打通了,在作业执行过程中才不会中断,可以实现无人值守的自动化,蓝 鲸平台就是这样的,它有一条ESB,打通了很多外部的系统接口。运维在蓝鲸上开发工具需要打通其他系统的直接调用就行了,大大提高了开发效率。
产品化:运维平台要以产品理念建设
最后,我想说的是,前面提到运维文化中有一个产品化,为什么提产品化?因为我觉得运维平台是要以产品的理念来建设的,这里包括很多的层面,这里就简单提其中一点:重视平台的用户交互。以前,大家觉得运维平台是内部系统,能用就行,交互好不好无所谓。
但是我们发现,内部平台也需要交互优良,如果交互不好的话,可能有以下负面作用:一是交互不好容易造成误操作的情况引发故障;二是交互不好,很难用的话可能会被内部用户抛弃,被新的系统或平台替代。
所以,运维平台做为内部平台,也需要重视用户的交互,一定要有良好的界面,要让用户操作起来比较方便而且不容易发生误操作。