从ITIL到SRE-唯品会运维自动化实践_第1页
从ITIL到SRE-唯品会运维自动化实践_第2页
从ITIL到SRE-唯品会运维自动化实践_第3页
从ITIL到SRE-唯品会运维自动化实践_第4页
从ITIL到SRE-唯品会运维自动化实践_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 从ITIL到SRE - 唯品会运维自动化实践高效运维 微信号 greatops功能介绍 高效运维公众号由萧田国及朋友们维护,经常发布各种广为传播的优秀原创技术文章,关注运维转型,陪伴您的运维职业生涯,一起愉快滴发展。前言今天给大家分享的题目是“从ITIL走向SRE”。ITIL和DevOps两种体系只是一种方法论的差别,没有好坏。今天这个题目可能让大家有一些误解,并不是说SRE就要比ITIL好或者ITIL比SRE差,只不过是在不同时代的产物,相当于我们每个人都会走向成熟,大家都会从童年走向青年、走向老年,我们都会迈向老年的阶段,但是不能说童年和青年没有价值或者童年和青年要比老年强。我会从以下四

2、个方面阐述我的整个演讲:一,ITIL,建设方法及瓶颈二,困境,破局三,自动化,SRE尝试四,个人心得和感悟一、ITIL,建设方法及瓶颈唯品会整个运维体系的建设是从2013年开始,实际上唯品会这家公司是在2008年成立的,到2013年经历了五年时间才开始发展运维,这是一个业界很正常的现象。因为运维往往都是走在开发后,业务先要保证能活下去,活下去之后才能找一些人去做运维工作。2013年唯品会的单日订单量达到13万,会员数量达到5000万,服务器大概8000多,应用服务130多个。在这种情况下,全年的有效报障数是5700多个,相当于一天大概有将近20个报障。这里5700是估算,相信实际数字比这个多。

3、我是2013年加入的唯品会,我面临的就是这样的场景,怎么把故障量降下来。1.1 运维能给公司带来什么价值作为运维人员,我们一直谈运维能给公司带来什么价值。很多人总结说我们有四点:质量、安全、效率、成本,这些我都赞同。不过大家记住,质量是及格项,当我们质量hold不住的时候,上面那些再高也没用。提升质量,当时的想法很简单,如何能把质量稳定下来,无外乎两点。第一点,怎么样做一些线上操作时不会发生故障;第二点,当发生故障的时候,怎么能快速把它解决掉。这两点合在一起其实再说一件事,要可控,遇到故障我能不能控制住,那么,要怎么样做到可控。1.2 建立ITIL体系系统做到可控能不能上一些流程,有了这些流程

4、,我规范一下行为,让他在做一些东西的时候,一层审批,如果不行就两层审批,两层不行就三层审批,层层让这个事情变成可控。基于这个,我们2013年建立了ITIL体系。首先它是全面围绕流程为核心,在质量效率发生冲突的时候,2013年我们选择保质量。所以我们开始建立各种流程,包括发布流程、变更流程、故障处理流程,问题管理流程。唯品会在当年流程优化做到很精细程度,整个发布要走3-5天。从开发要写代码的时候,最终达到线上给用户交互的时候,需要近一周时间用户才能看到。一个变更流程要走2-3天,我们要求开发提前24小时提变更单,中间要经过经理审批,有的时候还需要总监审批,质量可控后才可以做变更。因为有了这些流程

5、,才有了后来搭建各种系统。在整个ITIL大家会看到这样的现象,一定先有流程再有系统,整个系统是为流程服务的,如果没有流程,大家在建设系统的时候都比较空谈。在ITIL阶段,实际上也不太关心有没有系统,假如说没有发布系统怎么办?你手动去做,或者用开源系统搭建,只要能体现流程就可以。1.3 做好ITIL的四个方面特征ITIL体系有这四个方面特征,大家怎么做好ITIL要做的事情,我给大家逐一解释一下。第一,它一定是一套管理体系,这个跟大家理解的DevOps或者SRE都不太一样。它是管理思想落地,既然是管理思想,整个ITIL一定是运维主导,因为整个过程都是他建立的流程。什么叫管理,管理的思想在某种程度上

6、要用一套制度呈现出来,落到纸面上就是一些流程。第二,先有流程,后有系统,流程推动系统迭代。第三,故障发生后,想的办法就是修改流程或者增加制度。比如一个容量评估发现不够了,如果按照ITIL体系怎么做,大家想的是不是我在哪个流程环节出问题了,流程上有没有优化的空间。能不能更快的发现问题,这个不是整个ITIL关心的,它关心的是不是容量发生故障之前就发现它,然后是扩容或者缩容。第四,责任到人而非系统。1.4 案例解析案例一、发布流程下面给大家举一个例子,这个是唯品会目前的发布流程。整个发布流程是从研发开始,中间到测试,再到TC,然后由运维把它部署到线上。做了这个流程之后才开始做一些系统的开发,比如说在

7、这里我发现需要编译系统,那我可以找开源的Jenkins;这里我发现我的代码包需要把它扔到一个地方,让其他服务来取;这里我发现在线上部署,开始搭建各种云之类的,在这里我做一个PLCS,线上审核,审核之后在线上发布。这里会碰到一个问题,比如我每周或者每天有很多个服务或者很多个应用要发布,我整个发布过程中,这些服务一定是有先后顺序的。我先发哪个服务,先发哪个应用,后发哪个应用,哪些应用之间有前置依赖,哪些一定要同时上生产的。在这种情况下如果用DevOps思想,他可能会自己制作一个策略,通过策略来解决,但是在ITIL体系,它一定是通过流程来解决。在唯品会要做的事情就是,又建立一个新的流程,这个流程是在

8、2015年到2016年建立起来的,被称为是一个火车发布模型。在这里每个要做的事情,大家可以这样理解,既然叫火车发布,它就跟火车相关。比如我要坐火车去哈尔滨,首先我要买票,记下来要选择一些车次,看一下哪些车次我能到哈尔滨,然后我在上面抢座位,买好之后接下来等火车开,整个火车有列车长,这个列车长获得整个火车在运行途中的行程安全。火车发布也是这样的,我们每周一会把这些应用做一个排序,这些应用相当于我要挤哪列火车。到周三周四上线之前,把所有的排好,接下来做的事情是按照正常来。但是有一些应用很急,比如线上修复代码bug,整个火车票有限,容量有限,这时候火车长可以去调整座位,他觉得你比较急或者你的总监审批

9、了,就可以把你的往前调或者往后调,整个过程是模拟火车发布。当我遇到一个新问题的时候,实际上又有了一个流程,比如在ITIL体系我想删减一个流程,最后发现又多了一个流程。这样做的好处是,质量一定是可控的,比如我变更,假如说我一天变更量有100个,现在我给你上变更流程,我把流程拖长了,拖长之后这个变更要走三天,接下来会面临什么问题,每天的变更量是30个,照原来的相比,我的质量一定可控,这就是整个ITIL在唯品会给它带来的最大价值就是质量可控。案例二、全网巡检第二个例子,刚才所说的整个流程,我们每天会发一个全网的巡检,检查全网正不正常,网络正不正常,服务正不正常。这些东西人是画不出来的,我每天让他保证

10、一个小时就巡检一次,这时候怎么办?系统把这些都画出来了,系统来判断,有一些指标,这些指标给他之后确定这个正不正常。现在带来一个问题,谁来发这个报告,系统把所有的数据、所有的报表都帮你准备好了,接下来你要做的事情就是点一个发送按钮,把这个东西发给公司各个层面。这个报告既然是系统来做,系统一定能做到自动取发,大家一定要相信这个事实,人能做到的事情系统都会帮你做。这时候我们碰到一个问题,谁会发这个报告。这个就是举的例子帮大家理解一下,整个ITIL最终的责任一定落在人的身上,不是落在系统身上。在唯品会这个报告一定是由一个人来发,不管这个人是什么级别,他每天定时发这个报告,他很辛苦很麻烦,每天什么事不做

11、,就点按钮。但这样做有什么好处,有问题我能找到这个人。如果有问题能找这个系统吗,这个系统会面临很多个,包括开发、测试、监控,很多人,一个系统有问题,根本找不到责任人。在整个ITIL体系,我一个系统最终落地就是责任到人,由这个人推动系统的优化,所以这个报告现在还是由人来发,在没有新的方式或者新的企业文化建立之前还是按这种方式来做。二、困境、破局我们整个ITIL大概经过了三年时间磨合,从2013年5月份一直到2016年年初,然后在这种情况下,我们看一下整个ITIL取得的成绩。在业务上,原来是13万,现在到百万级别,会员数开始翻倍,节点都开始翻倍,带来的好消息是故障量降低了,全年大概是2800多个,

12、包括了重大故障和非重大故障,ITIL取得的成效是非常显著的。既然ITIL这么好,我们能不能一直用下去?任何一种思想,在没有新的思想取代DevOps之前,一定也会面临这种问题。任何一种思想都会有利有弊,有好的有坏的,只不过是你看重哪一个。比如我看重质量就可以用这个,看重效率就可以用那个。2.1 ITIL的困境2016年碰到一个什么问题,这里给大家举一个故障,其实不是个特别大的故障,全网抖动。网络发生抖动了会不会影响业务,这个故障我描述一下。大概是去年发生一次网络抖动,由于它抖动的不是我们的核心机房,以前也经常发生,不是一个个例,经常发生,又是发生在凌晨大概1点钟这样,网络那边收到报警,没有当回事

13、,放过了,第二天早晨发现影响业务了。这个业务的量本来不大,但是随着时间的累积,把这个故障变大了。接下来我们面临一个问题,网络应不应该告警,或者说网络的告警级别要不要调,因为不同的告警级别对应的是不同人员的处理时效,如果把严重级别调整为灾难级别,不管什么时候,半个小时内上线把这个处理完。故障其实挺简单,网络发生告警,监控人员没把它当回事。第二天发生故障了,面临一个问题,要不要调整告警级别,如果按照ITIL思想一定是调,因为出问题了,解决单点就可以了,把告警调整成灾难。但是过不久,由于这不是个例,会经常发生,人会不会疲惫,会不会忽视,之后会不会再把级别往下降。2016年之后我们一直在思考这个问题,

14、怎么把ITIL这个怪圈跳出来。整个ITIL会碰到这四个方面的问题:第一个是流程效益问题,原来一个变更,把故障降下来。接下来再增加一个流程所带来的边际效益会越来越低,这是个经济学的问题。比如我有一块地,原来我纯手工做操作,一定效率很低,可能我一个月才能把庄稼种完。现在我有钱了,买了台拖拉机,提升的效率会非常高,接下来我可能在三天就可以把一个月的活干完。如果再买了台拖拉机,能帮我节省27天时间吗?这就是所谓的边际效益随着流程增加会越来越降低,如果画条曲线可能是这样的,接下来慢慢变平,而对效益影响是越来越低的。第二个是人的问题,任何一个企业中包括我们运维也好,最难管理的一个问题就是人,怎么管理人?我

15、一直说每种体系无论ITIL也好,或者DevOps亦或者SRE这种思想,本质来说就是对人性的一些管理。人是有情感的,虽然流程增加,他会越来越腻烦,腻烦到一定程度之后他就会存在侥幸心理,我不用你的流程。我所增加一个流程要考虑他们的感受,他的感受是好还是坏。第三个是流程无法穷尽,不光网络,还有很多故障无法穷尽。但是在公司层面关心的是,不完全是你避免了哪些故障,更主要看新发生哪些故障没有有效控制,这也是运维人的一个悲哀。第四个是流程的波动效应,我虽然只改了一个监控等级,接下来我会面临什么问题?比如今天我发现这个告警是有效的,我要提升灾难了,在过去365天,有364天这个告警都是无效的,我调整这个是不是

16、否定去年364天的正确性。2.2谁应该为服务的个性负责:自动化和SRE再举个例子,这个告警级别应该由谁来负责?如果我们重复刚才的行为,磁盘空间满了,造成重大故障,按ITIL或者按公司原来的企业文化会怎么做?我会调整级别,但这种一刀切的做法对其他服务公平吗?如果这个服务对磁盘是高依赖的,有一点抖动都会带来很严重的问题,我调整是有效的。如果这个服务不高依赖,而且我写得很慢,我告警阈值是80%,现在你要求我马上处理,对我公平吗?这块就面临一个问题,同样道理,我这里举的磁盘空间,任何一种告警任何一个服务都需要有一个人来确认,我需要哪些告警,这些告警应该是什么级别,或者说有没有一个人能出来帮我敲定,说这

17、个服务出现,只要你监控这些东西,或者投入这些东西来处理,就足够了。这是在2016年我们碰到一个问题。接下来我们开始做自动化和SRE尝试。三、自动化,SRE尝试坦率来说,唯品会的SRE还是属于比低级的阶段,处于一个探索起步的阶段,我觉得最困难的是在探索阶段。所有都有可能,你怎么做都是对的,但是怎么做又都可能是不对的。经过一年左右探索,在生产上30多个服务做这种尝试,全网有2300多个,为了稳妥,我们30多个在尝试,整个在摸索在尝试,我接下来给大家汇报在这一年中我们尝试做了哪些事情,哪些值得跟大家分享。3.1 唯品会定义的两个运维职责整个SRE在唯品会把它定义两个职责:整个SRE在唯品会把它定义两

18、个职责:第一个是把你的运维能力转移出去,它要做的事情是你原来运维做的事能不能让其他人做,比如服务台能不能做,开发能不能做,测试能不能做。第二个职责,他要对服务质量负责,也是责任归属的问题。对生产的任何问题,给了你足够多的权力,你可以对服务应用上线说no,你要承担相应义务,出问题你要负责和改进。接下来会分别阐述一下这两个职责他们做了哪些事情。3.2 运维能力前置-系统架构首先是运维能力前置,他们做了这两个,第一个是开发系统,我们SRE由两部分人员组成,我带工具开发团队,所以他们是承担主力的,大概70%的人来自于这个部门。接下来我们会把移动运维一部分也补充过来,要求移动运维团队的情况是有开发系统能

19、力,能把自己琐碎的工作做出来。这是他当年给我规划的整体的架构设计图。问大家一个问题,当我们真的把运维效率提升了,比如你原来8个小时工作,现在变成4个小时文成了,另外4个小时做什么?如果我有一个部门10个人能完成的东西,我现在5个人能完成了,另外5个人干吗?如果不寻求改变,就会出现人力资源过剩。3.3 运维能力前置-jarnitors接下来是让另外5个人做什么,要做什么业务引擎、可视化图形报,要从线上的运维转到线上技术运营。这个系统是他们做整个运维能力迁移的最重要的系统,全称叫自动化运维平台。整个系统提供两种能力,第一种是解决人和服务器之间的关系,我要求任何人在限定的情况下允许把某些命令直接下发

20、到服务器上。我在任何机器间做了一层隔离,这就是这个系统要做的事情,任何人都可以操作生产,操作生产要走一些审核。干的第二件事是走第二条通道,一个是下行的,把命令往下发,一个是上行的,要求能把生产中的所有的数据上报上来。这样做的好处是降低了一些人的开发成本,我们运维最困扰的就是架构能力,坦率来说,我对运维想搞一些大数据那些东西实际上是抱有一些怀疑态度,可能现在理解比较肤浅,我总觉得这些东西要交给开发或者交给其他现成的大数据部门帮我们搭建,我们要做的事情就是你把数据报上来,报上来之后在那边能取就可以了。上边的任何数据都可以调底下的接口,我写到消息队列里,其他人读就可以了。接下来做了一些工具的开发,我

21、们在这里封装了各种脚本命令,像这种RPM包,类似这样我们是固化在代码里的,不允许别人修改的,保证任何人在线上都可以操作,保证这种操作是可重现的,接下来运维人员慢慢解放出来。3.4 运维能力前置-自动化另外是做标准化,我们原来所有东西,大家没有想法怎么做事情,如果每个团队都可以自己去做,遇到一个什么问题,大家都可以自己敲定,做完之后谁好谁坏谁说了算,没人知道。这个团队说我做得好,那个团队说我做得好,最后都不标准。做完标准模板之后,通过命令下发模式,接下来再做自动化变更。3.5 如何对质量负责?再者对质量负责,我们提了这几项要求:第一,所有SRE人员都要能读懂代码。这个很难,现在大概有一两个能读懂

22、开发代码就不错了,绝大多数人都不大读懂。我们为什么要读懂开发代码,整个开发人员是对业务进度负责的。实际上在业务开发进度很紧,有很多项目经理在催促他们,让他们定时上线、按时完成,所以他写的代码很多情况下是不会再考虑一些异常的。这时就需要SRE能看懂代码,他知道在哪加监控,哪块异常。要求他们能自己改代码,业务代码不用改,但是异常能不能知道,异常之后你能不能写一些代码做补充?第二,他要对整个服务的监控负责,监控代表什么东西,我刚才所提的概念,当一个服务发生之后,我究竟要监控哪些项,怎么设置阈值,设置哪些告警级别是合理的,这些都要由SRE人员把控。第三,是开始优化流程,现在流程已经达到一个瓶颈。整个

23、ITIL 是一个管理体系的落地,有些流程是必须必要的,但有些流程可以优化,优化的思路有两种,能用系统代替就用系统代替,不能用系统代替的怎么减少环节。3.6 对于SRE实施上的总结这就是整个部门对SRE做的一些要求,因为在探索阶段,所以真正能给大家做分享的不是特别多,这只是我们目前已经做的一些东西。但是我相信接下来,比如再有一段时间,会看到一些明显效果,其实整个体系的转变最困难的绝对不是技术,并不是说你技术能达到一个什么程度,如果技术不行,你可以学,再不行可以更换 。最困难的是人的思想,人的整个思想转变太困难了。当然从上往下会通过一些上层,会简单一下,如果从下层想把一些人的思想转变,非常困难。由这个引发出一些总结,整个SRE实施这块:第一,一定是新人,能承担起SRE这个人一定是有开发背景的新人,不要找老人,老人思维模式是固化下来的,他不会做一些改变。第二,企业文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论