随着23年年末期间,各大厂争先恐后的出现的各种线上故障,一时间“降本增笑”、“开猿节流”成为了大家调侃的话题,我自己所在的公司其实也因为在年中时出现了几次线上故障,而面临着系统稳定性的考验。因此,也就想借本文跟大家分享、探讨一下到底如何才能打赢稳定性之战?
“墨菲定律”相信大家都了解:任何可能出错的事情最终都会出错。
也就是说,无论你怎么做,都无法保证系统不出问题,既然如此,那我们其实应该“躺平”?当然不是,相反,我们应该更加重视才是。
另一方面,我相信无论是哪家公司,当故障发生之后,对于产生故障的原因一定都会高度重视,然后进行复盘,痛定思痛之后制定解决方案,投入人力开始优化。经过一段时间之后,系统运行持续良好,似乎又变的“稳定”了,此时领导也放心了。便语重心长的说道:这一年以来,咱们在稳定性上也投入了这么多精力,现在系统的稳定性也大大提升了,该还业务上欠下的债了。于是乎,需求的压力又上了,设计上各种妥协,逻辑上各种补丁,渐渐地,质量问题又开始被淡忘了,终于又在一年后的某一天,系统故障了!
问:这半年我们什么也没做,也没出啥问题,所以,我们是不是有点杞人忧天了?
答:不出问题,可能只是你运气好而已。
问:自从上次优化后,系统半年都没出问题了,是不是证明我们做的有效果了?
答:不一定,可能只是你的运气好而已。
问:你们做了这么多,怎么还是出问题了呢?你们做的这些到底有没有用?
答:可能我们不做,问题只会更严重。
要向第三者证明你做的这些稳定性是有效果的,其实还是挺难的,毕竟做的都是无法直接看到结果的事,你就很难引起别人对你所做的事的重视,扁鹊与魏文侯的故事,则能很好的说明这一点。
据史书记载,魏文侯曾向扁鹊询问他家中兄弟三人的医术水平。扁鹊回答说他的长兄医术最高,中兄次之,而他自己则是最差的。魏文侯问这是为什么,扁鹊解释说他的长兄治病是在病情发作之前,一般人不知道他能事先铲除病因,所以他的名气无法传出去。而他的中兄治病是在病情初起之时,一般人以为他只能治轻微的小病,所以他的名气只及于本乡里。而他自己治病则是在病情严重之时,一般人都能看到他在经脉上穿针管放血、在皮肤上敷药等大手术,所以以为他的医术高明,名气因此响遍全国。
大家都非常敬佩救火英雄,但我们也不能忘记那些为了防止让火情发生,以及在火情发生后能将有效将火情控制住的那些人所做的工作,研发稳定性保障工作正是如此!
我们所做的工作就是为了降低发生的频率以及发生后的影响程度,怎么证明你做到了?对不起没法证明,出名的永远只能是扁鹊,背后工作者就需要有奉献精神,不被理解是常态,大家也许偶尔会想起你的好,但你一定无法成为那颗耀眼的星。
系统稳定性之战,我认为既是一场持久战,也是一场防御战,持久战很好理解,正如前面在阐述“为什么总会出现问题”这个观念上,就足以说明。
那为什么又说是一场防御战呢?防御战一般怎么打?
提前建筑好防御工事的关键在于,你能坚持多久,毫无疑问大家都知道要建筑好防御工事,但要建到什么程度?年久失修后,要不要更新换代?这才是问题的关键。
因为我习惯跑步,也常有人问我,跑步对减肥或身体健康到底有没有好处?一开始你可能会觉得奇怪,跑步对身体有益,这难道还需要证明吗?但你会发现有些人跑了1,2个礼拜后,发现体重也没变化,身体也没感觉变好,甚至还会因为跑步后抵抗力下降出现感冒、发烧等症状,也有一些人急功近利,在1,2个礼拜内,不顾自己身体状况,拼了命的跑,导致身体出现损伤。
想想,这些是不是与我们做稳定性工作之后所期望的结果很像呢?说实话,要想通过跑步看到身体的变化,也是需要以年为单位来衡量。稳定性工作同样如此,稳定性工作靠的不是激情,不是打个兴奋剂,突击几个月就能完事了,而是要在思想上统一意识,要在每一次产品设计、每一次需求迭代这样的常规工作上做功夫,当你意识到自己放松时,要能立即提醒自己,保持警惕!
有时候我们也需要通过招兵买马来主动提升团队战斗力,并不断通过培训、分享等形式营造一个良好的技术团队的探究氛围,这样才能时刻保持着我们的战斗力!
除此之外,太平久了也难免会松懈,京东在经营过程中有一个很重要的理念,就是保护好老二老三。其中一个重要的原因就是因为一旦你没有了竞争的压力,那么你可能也会慢慢变得消沉!
所以,有一种有效的方式就是自己攻击自己,没有对手就自己创造一个对手出来,同样的,没有问题就自己制造点问题出来,混沌工程的出现很好的说明了这一点。
请记住,无论采取何种方式,以攻为守强调的是通过一种积极的防御态度,让自己能够掌握更多的主动权、控制权!
最后,正如前面所说,除了研发内部的松懈怠慢之外,外部支持程度同样也会有类似的现象,外部支持的态度也会在一定程度上左右防御工程的建筑质量,领导是否愿意持续投入去做这些看不到收益的事?业务部门是否愿意持续配合你们做升级改造?
所以,稳定性之战是一场没有硝烟的战争,拼的不仅仅是能力,更重要的是在拼整个公司的意志力与决心!