【稳定性】浅谈团队如何做好系统稳定性
背景
稳定性建设需要一系列具体的建设活动推进和落地,这些建设活动涉及人员、机制和文化,全方位的建设活动才能更好地落实建设模式。
一、稳定性保障机制
稳定性涉及团队所有不同水平技术人员、所有系统、研发所有环节、线上时时刻刻,单个技术人员是无法保障好的,必须建立团队流程机制来可持续保障。
人为因素的根源一方面是专业能力不足,经验不足,另一方面很多都是无心之失,所以需要通过流程、规范来保住“底线”,减少人为因素导致的故障。大家严格遵守咱们的各种规范即可(CodeReview规范、发布xbp流程、上线后doublecheck机制)。通过流程和doublecheck机制确保每个人发布不会太差,解决人的因素。永远要记住团队的力量是无穷的,要学会借力。
1、规范先行
稳定性关键还是要靠大家,如何靠大家呢?稳定性工作,规范先行.就是要落地一套稳定性的机制体系,用机制的严格执行来约束大家,不然无法展开。这套机制包括:
2、开发和SER的区别
提到稳定性,先讲个概率SRE(Site Reliability Engineering,站点可靠性/稳定性工程师)
一说到 Software Developer,人们脑子里就能反映出需求评审、编码、调试、测试、上线、修 bug等具体工作内容。那 SRE 呢?SRE与普通的开发工程师(Dev)不同,也与传统的运维工程师(Ops)不同,SRE更接近是两者的结合,也就是2008年末提出的一个概念:DevOps,这个概念最近也越来越流行起来。SRE模型是Google对Dev+Ops模型的一种实践和拓展(可以参考《Google运维解密》一书),SRE这个概念我比较喜欢,因为这个词不简单是两个概念的叠加,而是一种对系统稳定性、高可用、团队持续迭代和持续建设的体系化解决方案;
都是做技术的,很多开发刚刚转向稳定性方面时,有些弯转不过来。 举个例子:对于“问题”,传统的开发人员更多的倾向于是“bug/错误”,而SRE倾向于是一种“风险/故障”,所以,两者对“问题”的处理方法是不一样的:
可见,开发人员面对问题,会首先尝试去探究根因,研究解决方案;而SRE人员首先是评估影响,快速定位,快速止损恢复。目标和侧重点的不同,造成了SRE思考问题的特殊性。
所以,成为一名SRE,就一定要从态度和方式上进行转变,切换到一个“团队稳定性负责人”的角度上去思考问题。
3、谈谈个人对SRE的几点要求
二、稳定性建设方向
1、地基要打牢
稳定性建设工作重在预防,根据多年的工作经验,至少70%的线上故障都可以通过预防工作来消除。因此,在日常工作中,我们需要投入相应的精力来进行根基建设。所谓的根基建设,就是要把开发、测试和上线这三大流程做到透彻。包括:DesignReview、CodeReview、提测流程、上线流程、引流验证、性能测试等。
2、工作在日常
俗话说养兵一日,用兵一时。稳定性工作不是一蹴而就,而是日常的点点滴滴,一步一个脚印走出来的。
需要团队人人参与、持续完善监控告警、检查每一个告警是否配置、及时消灭线上小隐患。可参考每周的稳定性会议。
3、预案是关键
我们需要认识到预案的重要性,并投入相应的精力来进行预案的制定和更新。这样,我们才能更好地应对各种突发情况,保障项目的顺利进行。通过每周的稳定性去深入挖掘每个接口的隐患及不足,比如业务指标是否加上、业务指标是否能真实反馈该接口的特性等。
4、大促特殊场景
系统在大促的稳定性和日常稳定性的区别在哪呢?个人理解核心是两点:
1、【技术】高并发流量:大促流量峰值是日常的N倍(几十、几百倍),需要具备更高的并发流量处理能力,以保证系统的稳定性这方面。针对这评估好流量,做好容量规划即可。
2、【业务】业务场景多样化:大促会增加很多日常用不到的场景,很明显的比如预售场景、Promise特殊时效控制、停运降级功能等。针对日常不用,大促才用的功能点。可整理功能点,在大促前1个月模拟大促,业务进行相关功能配置,演练全流程,类似每年大促都进行的预售场景演练。因为每年需求都在迭代增加,难免会影响之前的功能点。这样就可避免大促期间突然使用功能发现不好用的问题
5、执行是王道
其实听复盘会学东西是一方面,最主要是应该问问我们系统是不是也存在这种问题,我该怎么规避或解决这类风险问题,别人暴露的我也存在,应该第一时间去解决,而不是我知道但我不做。
三、前置:扁鹊三兄弟
与扁鹊三兄弟一样,如果想要让稳定性有价值,SRE同学一定不能站到系统的屁股后面等着擦屁股,必须走到前面,看到未来的风险。
既要在发生问题时快速解决问题(做扁鹊)
也要把风险归纳总结,推动解决(做二哥)
还要在系统健康的时候评估链路,发现隐藏的问题(做大哥);
1. 做扁鹊大哥:擅长的是“事前控制”,具有敏锐的洞察力和战略眼光,防患于未然,在系统健康时发现问题。
2. 做扁鹊二哥:擅长的是“事中控制”,具有出手迅速、果断、干练的特点,在系统有隐患时发现问题。
3. 做扁鹊: 擅长的是“事后控制”,是临危受命型的关键人物,在系统发生问题时快速解决问题。
根据《鶡冠子·卷下·世贤第十六》的记载,有一次,魏文王问扁鹊说:“你们家兄弟三人,都精于医术,到底哪一位最好呢?”扁鹊回答说:“长兄最好,中兄次之,我最差。
”魏文王又问:“那么为什么你最出名呢?”扁鹊回答说:“长兄治病,是治病于病情发作之前,由于一般人不知道他事先能铲除病因,所以他的名气无法传出去;
中兄治病,是治病于病情初起时,一般人以为他只能治轻微的小病,所以他的名气只及本乡里;而我是治病于病情严重之时,一般人都看到我在经脉上穿针管放血,在皮肤上敷药等大手术,
所以以为我的医术高明,名气因此响遍全国。”
参考:
公众号普惠出行产品技术:https://mp.weixin.qq.com/s/R2qBQgJCueErBL35ld4KZQ