阿里巴巴张旭升谈ITIL及运维架构

个人简介 张旭升(Peter Zhang),双CCIE,资深网络架构师,从事十余年网络基础平台建设和运维工作,先后在电信运营商、系统集成商工作,曾负责国内多个省份的电信运营商骨干网和城域网的设计和实施工作,具备丰富的骨干网设计、实施和项目管理经验。

   

1. 大家好,我现在是在阿里巴巴园区采访阿里巴巴的网络技术专家张旭升。旭升你好,请先做下自我介绍?

你好,我叫张旭升,08年加入阿里巴巴公司。在加入阿里巴巴之前呢,曾在国内的电信运营商以及一些系统集成商中工作,主要负责一些省内的省级的骨干网的一些设计和实施工作。在加入阿里巴巴之后,主要负责网络架构方面的工作,主要是推行网络的标准化和自动化方面的工作,大致的情况就是这样。

   

2. 在你们目前的运维流程当中,是否引入了ITIL或者类似的处理机制。请给大家简单介绍一下ITIL这个概念。在你们目前的运维流程当中,是否引入了ITIL,或者类似的处理机制?

是的,我们现在在用ITIL这套管理体系。那么我认为ITIL这个东西,是根据每个企业自身的需要来决定的。那么当一个企业在发展初期时人员比较少,可能通过人和人之间的沟通就能解决一些问题。那么当一个公司发展到一定程度的时候,特别是在人员,规模比较庞大的时候,靠人和人之间的沟通就会产生一些问题。只有靠系统来维护这样的一个体系。这时,我们开始引入ITIL流程管理的概念。由于每个公司的管理体制可能都不一样,那可能会根据每个公司自身的需要来定制一些东西。我们也是从这方面去考虑的,根据我们自己运维的一些需要。开发了一套这样的系统。

   

3. 那是否有基于ITIL对运维团队的考核体系,如果有的话,考核的重点是什么?

是的,我们ITIL的考核管理体系,大概是从几个方面进行考核的。阿里巴巴作为一个上市公司,是全球的B2B电子商务的领先者,那么作为我们的运维部,保证完整的可用性是首当其冲的。我们的ITIL考核体系里面,把完整的可用性是放在第一位的。除此之外,对变更的一些管理的质量,还有事件处理的质量,监控的质量,以及问题管理的质量,从这几个方面进行考核,其中可用性是重中之中。

   

4. 那运维团队与公司的其他部门,比如说研发,市场,客服这些部门之间的关系是如何处理的?

这个可能跟每个公司的这个组织结构有关系,从我们公司来讲,我们的运维部主要面对的是我们的开发团队,像我们监控团队会面对一些客服团队。那么我们开发团队也会面对我们的产品部门,产品部门面向我们的销售部门,销售部门面向我们外部的客户,是这样一级一级推上去的。我们部门面对更多的是一些开发部门。所以说像您所说的这个问题,可能会产生一些资源上的一些竞争,可能这样相对来说比较少,如果有这样的竞争的话,一般我们会根据项目的优先级,包括项目的重要程度和项目的紧急程度来进行取舍,或者是决策。一般来讲,我们是自己能够做出一些判断,如果我们判断不了呢,就会由我们团队的Leader再到我们的总监,再到VP一直到我们的CTO为止,来最终做一个决定。一般来讲我们绝大多数的事情,总监级别以下基本上都能够处理了的。

   

5. 那我们回忆一下,在你的作为运维这个架构师的一个过往的发展当中,有哪些比较值得回忆的时候,或者是比较骄傲的成绩呢?

这个是比较多的,因为我是从08年加入阿里巴巴的。那么在我加入公司的这个过程中,我也曾经负责了一些比较大的项目。那么从我个人来讲,我印象比较深刻的有那么几件,第一个是在09年的时候,我们的ABTN(Alibaba Backbone Transmission Network)网络重构的时候,在这个项目里,其中有一个月的时间,大概需要有十几次的重大变更,这个重大变更意味着如果发生意外的话,可能会导致我们整个阿里巴巴网站,甚至整个集团的网站全部瘫痪,重要性是非常高的。我们把这样的变更一般都放在凌晨。那么连续十几个重大变更放在集中在一个月的时间里面,也就意味着每个礼拜大概需要有两到三天的时间,那么每个变更大概需要五到六个小时。那么在那一个月里面就基本上是要经常的通宵的,那这个对我来讲可能会记忆比较深刻,那虽然是很辛苦,但是我觉得还是蛮值得的,因为最后项目也取得了成功,我觉得这个是记忆比较深刻的。那么第二个事情,我觉得印象比较深刻的,是在去年的时候,一个双休日,我刚好在家里面休息,在半夜的时候,大家都休息的时候,突然接到监控部门的通知说我们的网站被攻击了。这是毫无疑问的,我们作为运维人员肯定是要冲在第一线,马上去处理这次的事件。最后我们通过一个晚上的处理,把一些流量清洗掉了,维护了我们网站的可用性,这个我觉得印象也是非常深刻的。那么第三个事情,因为在运维的过程中,这种事情是很多的,我相信在每个公司来讲,都有它的运维部,或多或少都会有这样的一些事情,那么我们常常讲运维人员一般都像是手术师一样,每天都在做不同的手术,有些是大手术,有些是小手术,都是在生产环境上做一些这样的手术。那么每一个手术带来的是对网站来讲都是非常重要的,而且如果做得不好,都会产生重大的影响,那么我觉得整个工作运维的工作可能就是这样的。那么如果说是成就感的话,那我觉得几年来,我觉得从我个人的体会来讲,那么阿里巴巴作为一个承载着数千网民企业客户,中小企业客户这样的一个大型的网站,服务了这么多的公司,那么作为这样一家公司的运维人员我觉得是一件比较骄傲的事情。从其他方面来讲,我觉得骄傲的事情还是蛮多的。从公司99年成立到现在为止,我们整个运维团队已经有70多位成员,为我们整个阿里体系,其他的分公司以及我们的业界培养了非常多的相关领域的技术专家,这个我觉得也是一个比较有成就感的事情。第三个有成就感的事情,我觉得作为我们网络团队,因为我自己在网络团队,这方面可能更有切身体会一些,我们牵头设置和建设了国内第一家运营商级别的电子商务骨干网,叫ABTN,阿里巴巴骨干传输网,以及国内第一家全球级的电子商务骨干网,叫AGN(Alibaba Global Network),阿里巴巴全球骨干网,为我们全球的客户提供了更加优质的服务,更提高了我们网站的可用性,这个从我们的运维角度上来讲,我觉得也是一件比较骄傲的事情。

   

6. 这确实是非常令人骄傲的,在整个的一个过程中有没有现在让你回想起来还比较尴尬,或者是比较痛苦的那个地方?

这个比较尴尬和比较痛苦的,我觉得作为运维人员可能都会有这样的问题。因为对我们的运维人员来讲,首先第一条就是要确保24小时开机,无论在何时何地,碰到了问题,接到故障,就必须第一时间去处理。比如像我们在双休日在家里休息,陪着老婆看着电视,或者是在休息睡觉的时候突然接到电话说网站出故障了,这时毫无疑问,必须起来去处理,有些甚至要到机房去,我觉得是比较痛苦的,但是这也是必须的。

   

7. 我们问一个和技术相关的就是运维团队在面对很多相关的工具要做选择的时候,你们是基于什么样的原则去选择这些运维工具的?

一般来讲,我们可能会看这个工具是不是足够的灵活、方便,是否适合我们来使用,还有管理方面是不是适合后期的维护,另外还有一个,我觉得要看,如果使用这个工具我们需要投入多少的成本,会从这几个方面去考虑。从我们现在过往的使用的一些经验来看,我们可能也会遵循一些互联网的精神,比如像开放的精神,分享的精神,我们尽可能选择基于开源的软件来使用,包括像我们系统管理层面。早期的时候我们会使用kickstart12:21这种开源的系统来做一些自动装机的工作。后期我们随着我们工作量的提高,或者是网站规模的增大,我们会有需要自行开发一些跟自己比较相适应的一些软件。像系统管理层面,目前还是在用CFengine12:53这套安全系统。在网络管理层面呢,我们也在基于自行开发的基础上做了一些自动化的工具,同时也会选择一些开源的自动化软件,如果不是很适合的话,我们也会选择一些商业的产品,基于SMP,或者是Netflow13:12这样一些商业化的软件来协助我们做网络的管理,大概是这样的情况。

   

8. 像你们自行开发的产品或者软件,有没有计划去开源。另外,就是能不能给我们其他的运维人员提供一些建议,关于一些通用性的工具方面,比如有没有可以推荐的工具?

在这一块我们其实一直以来都在考虑这个问题,因为我们公司本身的精神就是要开放、分享。我觉得在合适的时期,我们也会考虑去把我们开发出来的一些工具炫耀出来。那如果说要推荐一些通用性的工具,从我们过往使用的一些经验来看,像装机系统,包括像kickstart、CFengine一些系统管理工具,包括像MRTG(Multi Router Traffic Grapher)的网络管理工具,这些工具我觉得都是比较值得大家去使用的。

   

9. 运维人员他需要自己去编写自动化脚本来完成很多运维的任务,你们实施这种脚本语言有没有去写这种语言?

我们现在是从规划来做这些事情,那么自动化的系统,我们现在用的比较多的是Python,当然还有Perl这种脚本语言。那我觉得还是像Python的特点是支持的数据类型丰富,容易开发,具有比较好的扩展性,不管是发一些小的脚本,或者是发一些应用我觉得它都比较合适。那么像Shell的话,相当于把Unix的命令进行一些堆积做一个批量的处理。但是呢,他有一个问题就是他可能支持的数据类型不是那么的丰富,那这样的话,在做一些简短的脚本的时候,可能会比较合适去用这样的脚本语言。但是如果要开发系统的话,可能他会去,缺少一些这方面的一些功能。那么像Perl的话,也是跟Shell有点类似的,支持的数据类型相对会比较少一点。它的语法上可读性会差一点,后期的维护上会稍微困难一些,Perl的话,我们会用的相对还是比较少,Python相对来说用的还是比较多的。大概情况是这样。

   

10. 那在性能优化方面,在网络操作系统级的优化方面有没有比较好的通用的经验和大家分享?

说到性能优化的话,我觉得其实是一个比较大的话题,性能优化是一个长期的过程,是在工作的过程中不断地积累经验的一个过程。那么在我们过往呢,性能优化的这个过程中也做了非常多的事情。比如说像网络层面,我们通常会从架构上,从流量上,从监控上,以及管理上,这几个方面会去做一些优化。那么我们做得比较多的一些事情。比如说像网络的标准化,还有像我们的大二层(L2MP、OTV),还有去二层的环路,还有双机的集群提高网站可用性方面,在这方面下了很大的工夫。然后在一个自动化的工具开发上。在提高整个网络可用性的基础之上,提高大家的工作效率,这个是我们做得一些优化的工作。那么从操作系统以及服务器的优化方面来讲,因为目前大多数网站,基于Java的还是比较多,那么Java它有一个比较好的一个特点,就是它前端展示比较好,开发起来,相对也会比较容易一些。但是它有一个缺陷,就是他很难充分发挥CPU的利用率。我们知道现在新型的服务器都是四核以上的,很多都是高性能的服务器,但是它不能充分的发挥这些服务器的性能。通常的解决方案就是说做一些虚拟化的一些工作。原来在一台服务器,比如说只提供一个服务的,那么我们如果把它虚拟成四台,我们就可以同时提供四个服务,那这样的话,我们可以把服务器的性能给充分发挥出来,这个是我们在服务器的性能优化上所做的一些工作。另外一个方面,我们也会去结合我们的平台部门,还有开发部门去做一些网站的代码的一些优化,那么去年我们网站平台也做了一个非常大的项目,就把我们网站的一些代码做了一个大的优化,据我了解可以降低1/3的服务器的利用率,这个也是对整个服务器的利用率的一个性能的优化做了很大的贡献。

   

11. 那像那种涉及到一些代码方面的优化,是运维团队去推动还是研发团队自己去推动?

可能都会有,我们团队也会,如果发现有这样类似的问题,比如说像我们数据库部门,他们也会发现一些,有些部门可能对数据库的使用不是很恰当,那他们也会提出一些自己的建议。当然我们那个平台部门可能是主导这个事情的发展,最后会有我们的平台和开发最终来落实到这个方面去优化。

   

12. 刚才你也提到了虚拟化,现在云计算也是比较热的一个话题,那对于云计算它能够给运维团队带来的影响,你是怎么看待这样的问题的?

云计算的话,现在是大势所趋,大家都在研究云计算。那我觉得云计算最大的一个特点,它就是弹性的计算和按需所取我们的网络资源也好,其他的一些服务资源也好,这个是一个整体的方向。那么我们另外有一家兄弟公司叫阿里云计算公司,从09年开始成立的,他们主要就是研究这方面的一些技术。到现在为止,一些服务已经在用了,包括我们自己B2B公司,还有我们其他的兄弟公司已经在使用他们一部分的云服务了。如果说到云计算对我们运维团队的影响来讲,我个人觉得可能会有两个方面,第一个方面,我觉得作为运维人员,保证网站的可用性当然是第一位的,当然我觉得可能最重要的要去更多的去学习新的技术,要有创新的精神,然后不能固步自封,要提高自己的技术性能,技术能力。否则的话,随着一些新技术的发展,就会被这个时代慢慢淘汰,就像我所说的“逆水行舟,不进则退”。第二个方面的影响我觉得,可能我们也会去考虑,作为我们自己一家公司来说,我们是不是也可以把我们的网站设计成一种稍微相对来说规模小点的云提供给我们的客户来使用。把我们这朵小的云结合到我们阿里云计算那朵大的云上去,共同来提供服务,这样会不会,有更好的效果,这个是我们可能以后去研究的一些东西。

   

13. 现有的运维人员是如何培养起来的,是不是有专门的针对运维人员的一些培养的规划。然后另外的话,就是一个好的运维人员需要具备哪些重要的特点和技能,能不能举出三个或者五个的一个这样的例子?

我们现在来讲,我们以前的一些培养的经历,最主要的手段或者是方法,一般都是通过一个老人带一个新人这样一对一的模式去带动他的。一般会通过一些具体的项目,然后通过一些平时的一些工作上的习惯上,包括你自己跟团队之间合作的一些方法上面,还有一些技能的掌握上,和工具的掌握上,从这几个方面去培养我们的新人。从长远来讲呢,我觉得,当然我们公司有一个具体的一些人才的培养计划,那么主要会有三个方面,第一个就是说,我们的新人的培养,这个是着眼于短期的。那么新人的培养主要是我刚才讲过的,通过一个老人带一个新人,我们叫师傅和徒弟的关系,一对一的这种手把手的去教导他,去指导他去做一些日常的一些工作,提高他一些满足我们工作所需的一些技能,包括对我们团队的一些文化的理解,对一些责任的一些理解,那这个是一个方面。那么从中期来讲,我们会组织一些团队内部的一些分享,还有一些跨团队的,甚至是跨公司的一些技术分析,我们公司也会相对出一些激励措施来激励大家多分享自己的一些技术上的东西,在分享的过程中提高了自己,同时也提高了别人,这是一个比较好的良性循环的过程。从长远来讲,我们公司也在做一些事情,包括人员培养的一些计划,我们具体做的一些工作主要是在一些领域的研究方面,每个团队会有一些技术专家来规划他们相应团队的一些技术研究的方向,制定出一些领域研究计划,最后会选拔出相应的该领域的一些领域带头人。由这个领域带头人来设计该领域的一些具体的研究的目标,研究的计划,和具体的一些实施的步骤。在这个过程之中,每个团队的人员也会根据自己的兴趣爱好,去加入一些领域的研究。在这个过程之中,大家研究的过程之中提高了大家的技术性,技术能力,这是一个长远的一个计划。

   

14. 好的运维人员他应该具备那些最重要的特点和技能,比如列出三个到五个?

我觉得作为一个运维人员有三个,如果说要列的话,我觉得三个最重要的,首先是责任。第二个是技术能力,第三个是团队意识。为什么这么说呢?特别是运维人员,保障我们网站的可用性是第一位的。如果说网站都不可用了,后面的一切其实都是空谈。那么怎样才能保证这个网站的可用性?我觉得除了你工作的方式方法,除了你的技能,最重要的是你要有一份责任心。你在做具体的项目的时候,或者是做具体的一些变更的时候,要真真切切的去考虑这个问题对我们网站带来的影响,这个是责任心的事了,还有一些比如说当我们网站,我们设备出了故障的时候,你是不是能够积极的承担起责任来,积极的去做一些维护的工作,尽快的恢复网站的可用性,这个责任是第一位的。第二个就是工作的一些技能,包括要不停的学习,因为IT行业是一个不断发展的一个行业,而且更新换代,技术的更新换代非常快,需要不断的去学习,不断的创新,要跟得上时代发展的需要,那么技能我觉得也是非常重要的。第三个我觉得就是团队意识,要有团队的合作精神,要善于和你的同事们一起工作,包括去帮助同事们成长。还有一个就是不能只顾自己眼前的一些利益,只保证自己的这一块一亩三分地,要尽可能去帮助你的同事,去帮助解决他的问题,不能把这些划得太清,这个是一个团队合作的精神,我觉得这三点对运维人员应该说是最重要的。

   

15. 非常好,非常感谢旭升接受我们的采访。

谢谢。

你可能感兴趣的:(阿里巴巴张旭升谈ITIL及运维架构)