美文网首页程序员
技术管理篇7一高质量运维

技术管理篇7一高质量运维

作者: 靳顺隆 | 来源:发表于2018-06-10 19:00 被阅读65次

前几篇我们聊了系统的设计、编码开发等各个环节需要注意的地方。但是,如果仅仅做到这些,距离真正支撑7×24小时、不间断的业务运营,还有很远的距离。我们还要做好线上服务的高质量运维。

运维的三个层次

古代神医扁鹊说医术有三个层次,当病人已经病入膏肓,你能让他绝处逢生,厉害吧,但这只是第一个层次;第二个层次,就是当病情已经出现了初期症状,你能准确判断,药到病除,这是第二个层次;第三个层次就是当一切都还没有征兆,你能识之于未发,提前预防,这是第三个层次。人们往往重视第一个层次,缺忽略了第二第三个层次。

线上服务的运维也有这类似的三个层次。发生了故障能快速恢复,止损业务,这是第一个层次。在故障刚开始有苗头的时候,就快速采取措施,控制影响范围,这是第二个层次。提前做好各个流程节点的控制,当有问题可能发生的时候,系统甚至自动识别出来并自动调整,对业务完全无感,这是第三个层次。我们分别来看一下每次层都要修炼什么。

第一个层次

第一个层次,当系统真的发生线上事故的时候,我们要能有能力快速力缆狂澜。这阶段的目标就是一个字快。这需要我们具备什么样的能力呢?

首先,我们得有能力快速定位问题所在,决策要准。这就需要我们能够快速收集到线上运行的所有信息,就像飞机的仪表盘,我们得能看到全局的信息。当问题发生的时候,我们才能快速甄别出异常点,定位问题所在。

然后,我们得有提前准备好的危机预案。这种紧急情况下,如果临时想方案肯定就延误了恢复的时间,而且风险很大。对各种可能的故障情况想得越清楚,准备得越充分,恢复得越快。

最后,这一个阶段基本要靠人去修复问题,所以人的协调和沟通效率至关重要。尤其是紧急情况下,大家的压力都比较大,平时舒畅的沟通可能变得走形。

这里有几点特别需要注意。第一,所有人要目标一致,先止损,先去恢复线上服务。不要带有情绪,就事论事,先解决问题。至于是谁的责任,事后再来复盘。

第二,事故发生时,经常不会在办公时间,大家要通过各种通讯手段进行沟通,所以传递信息一定要尽可能的简洁、条理且清晰。尽可能传递清楚事实数据,表达清楚哪些是事实,哪些是猜测。比如要告诉别人手机上产品的一个故障,就要说清楚手机型号,网络情况,做了什么操作,有什么异常现象等等,不要只给出你的判断。

第三,要有唯一负责人。紧急情况下,要有大量的协作和沟通,唯一负责人非常重要。这个要提前指定好,并且要指定好备选的人,以免突发情况下,第一负责人不能指挥的情况。

第四,要做好对业务相关方的沟通。当事故发生时,业务已经受到了影响,要第一时间通知相干方以及领导。这样,业务方才能第一时间去评估对用户的影响,并及时做出补救措施。

整个事故处理过程中,都要主动通知相关业务方事情的进展情况,做好协同和预期管理非常重要。

最后一点,要反复的彩排故障处理流程,不断复盘和改进。

台上十分钟,台下十年功,一丝马虎都不能留下。我们越觉得不可能发生的事情,就越会发生。

第二个层次

在系统可能有问题的时候,就及时报警出来。这个阶段,已经无法通过人力去盯线上服务的状态了。需要我们有非常完善的监控体系。

这个监控体系越完善,越细致,我们越能提前发现问题,就越能为故障处理赢得时间。

怎么才能做到监控体系的完善且细致,我们要从全流程的角度去考虑。什么叫全流程,就是从用户打开产品开始,到我们线上服务给到响应的整个过程。

我们看看这个全流程。首先,用户使用的什么网络链接到互联网,是小区宽带还是2G、3G、4G,是移动还是联通?域名是怎么解析的?然后网络请求又是通过什么链路到达了我们机房,我们机房又是通过什么设备到达服务器,服务器又访问了什么,等等。每个环节我们都要有监控。每个监控我们都要在成本收益的考虑下做到极致。

有了监控,我们还是需要人去处理。这就要求我们不要放过任何一个报警,不要以为优先级不高就忽略掉。除非我们明确的知道到底发生了什么,不要放过任何蛛丝马迹。每次报警都是有原因的,都是优化我们系统的好机会。

第三个层次

最后一个层次,就是要我们防患于未然,提前做准备。我们要知道做好线上运维不仅仅是运维同学的事情,他是所有研发、测试各个岗位最重要的事情。

我们所有的研发、测试、上线流程和制度,其实都是在提前做准备。所以每一个环节都非常重要,都要提前考虑对稳定性的影响。

首先,线上变更是最容易出问题的点。所以上线流程需要规定好各个节点的检查项,做得越细致越不容易出问题。

其次,充分的想好可能的应急方案。方案考虑的越细致,出问题后就越快能解决。比如系统设计阶段要考虑好系统的高可用性,全流程的各个环节都考虑;代码阶段要考虑好健壮性;测试阶段要考虑好边界条件的测试;上线要做好回滚策略等等。

最后,逐渐提升线上服务的自愈能力。如果全部靠人来保证线上稳定,人都要有一个响应、协同、处理的时间,这将是线上可用性的上界。

如果说3个9的可用性还能用人来抗的话,4个9、5个9就必须要运维自动化。这个自动化是整个研发、测试、上线、运维的整体自动化,越少人参与,出错的几率就越小。

总结一下,线上稳定无小事,事事认真,不断复盘优化,做好各个流程点的控制,提前做好各种方案,才能防患于未然。

相关文章

网友评论

    本文标题:技术管理篇7一高质量运维

    本文链接:https://www.haomeiwen.com/subject/sjwwsftx.html