系列文章:—— 稳定性保障:从Case by Case到全局与终局思考的转变 为什么会有这篇文章,因为是我从去年10月开始就一直在做稳定性保障这件事,从这个事上,我收获了不少,遂将其整理成文,与大家交流相互学习。 谈到稳定性,大家一定都不陌生,可当真要具体落实稳定性,还真的需要仔细的思考一下策略和打发。其实,这件事的业务背景和大多数系统演进过程很相似,在业务的粗旷期,为了满足业务需求的快速迭代,在系统架构的沉淀和稳定性保障上,逐渐凸显短板效应,现象就是稳定性事件频发,被客户投诉,更甚者造成客户流失。 那么,面对这个情况,如何有效的进行稳定性治理,做到稳定性事件的收敛,以及客户投诉率的降低?下面我就说一说我在处理这件事情的思路与过程中思路的转变。 From Case by Case稳定性保障的切入点是什么?首先,你一定经常听到的一句话,监控和日志就是系统的两只眼睛,所以做稳定性,切入点就是迅速梳理整个系统的全链路监控,做到第一步,有问题要能感知到,其次,梳理系统架构中的薄弱点,并针对曾经出现过的稳定性事件进行复盘和整改。 最开始的思路,就是上来先干,把漏洞补上,所以效果是立竿见影的。但是,稳定性保障也很快就进入了深水区,一个漏洞补上了,另一个漏洞莫名的还会冒出来,这时的感觉就是感觉问题都处理了,但是第二天总会在一些意想不到的地方,蹦出个新问题,所以,这种Case by Case的处理方式,并不是做稳定性的长久之计,痛定思痛,这个事是一个长期且持续的过程,而且,我发现这种处理方式还只是一种事后补救的方式,还有发现的问题解决的也仅仅是很表面的问题。所以,稳定性这件事,必须从全局的角度去考虑,以及,重要的一点是确定阶段性的终局是什么样的。 To 全局与终局稳定性保障的任务拆解。如果从全局的角度来看稳定性,那就必须清楚目前稳定性保障的组成有几部分,这时的做法,就是系统化的思考问题。 假设一个场景,一天晚上10点某系统变更发布,10点30系统告警客户请求成功率跌零,10点40收到客户投诉工单,10点50系统开始回滚,11点成功率恢复。整个过程,可以看到整个故障影响了1小时,从这个Case里该如何思考?首先,监控的发现太慢,其次,应急响应流程是缺失的,结果是直接导致客户的投诉,其三,整个故障的没有快速恢复的预案保障。所以,基于这个简单的Case,就能提炼出一些稳定性体系流程建设的基本要点。 那么,从稳定性体系流程建设的角度来看,如何从全局的角度进行内容的拆解和细化,下面是我的一些思考:
如此细化之后,你就会发现整个事情就比较清晰了,对事前、事中、事后都有了明确的保障机制,同时,实施稳定性保障需要哪些协同方也能确定了。与此同时,在整体协同方面,为了确保各方对稳定性的重视,需要正式的稳定性启动的KO,并明确每周的周例会制度进行信息同步,在会议的章程要重点关注以下几点: 本周稳定性事件有哪些?
除此之外,从全局上来看,稳定性这件事还需要运营、产品、运维等多个角色的共同协同才能搞定,所有建立有效的协同机制是必须的,不过,在实施阶段要与运营、产品、运维讲清楚,不是所有客户投诉出现的问题都是稳定性问题,哪些是现在产品功能缺失导致客户投诉的问题,哪些是供应链质量问题导致客户投诉的问题,以及哪些是客户服务团队响应不及时导致客户投诉的问题。为什么要这么分清楚,因为只有职责分清,问题才能得到有效的改进。 啰嗦了真么多,最后,我还想补充说一下,稳定性与质量和高可用的关系。 稳定性与质量和高可用为了实现平台的稳定性,还必须在质量上下足功夫,俗称质量内建,据统计60%+的稳定性故障都是变更导致的,所以阿里一直在强调三板斧:可灰度、可回滚、可监控。其次就是要在架构上进行合理的演进设计,所以,解决质量的问题,主要的手段还是通过CR。 关于CR可以组建了架构评审委员会,针对变更发布进行必要的CR评审,关于CR的目的我认为主要有以下几点:
不过,要认清一点,CR不是银弹,更何况在现实中,越复杂的代码逻辑CR越难发现问题,所以,既然做不到100%不出问题,那就还是要在可灰度、可回滚、可监控上多多努力。 谈到高可用就会想到业务SLA、技术SLI/SLO,所以在稳定性保障上,还是要认清自己的现状,底子薄就是底子薄,可以很坦白的讲,现状就是做不到监控发现率100%。那么,能做到多少呢?关于这一点,我个人的建议是,这个能力不是拍脑袋拍出来的,唯一有效的检测方式就是性能压测,并且系统的薄弱点也是通过性能压测识别出来。所以,系统可不可靠,压一把就知道了。 总结至此,讨论了很多,目前稳定性的情况已经有所好转,但是未来必将面临更大的挑战,可谓任重而道远。不过,通过与稳定性团队、数据团队、测试团队、监控团队、运维保障团队的协同,在稳定性保障上已取得了初步的成果,希望后续进一步取得更好的成绩。 本文受原创保护,未经作者授权,禁止转载。 linkedkeeper.com (文/张松然) ©著作权归作者所有 |