有整整 10 天木有更文了溜族,這段時(shí)間確實(shí)比較忙讹俊。
有加我微信的朋友知道我上周末出去春游了,部門組織去了趟外伶仃島煌抒,環(huán)境挺不錯(cuò)的仍劈,這段時(shí)間去的人也比較少,值得去玩寡壮。
今天講講上周末一次生產(chǎn)問(wèn)題的復(fù)盤贩疙。
1 事情經(jīng)過(guò)
周日中午從外伶仃島回來(lái)就直奔公司,因?yàn)樯a(chǎn)出了些問(wèn)題诬像。問(wèn)題是這樣的:HBase 的一些節(jié)點(diǎn)掛了屋群,導(dǎo)致一些數(shù)據(jù)丟失。丟失數(shù)據(jù)的客戶來(lái)授信或者借款坏挠,都會(huì)卡件芍躏。在確定數(shù)據(jù)短時(shí)間沒法恢復(fù)時(shí),就決定從系統(tǒng)的層面去解決這個(gè)問(wèn)題降狠。這時(shí)我咨詢了 2 位老員工对竣,這些數(shù)據(jù)雖然是規(guī)則的入?yún)?shù)據(jù),但是規(guī)則可能沒用這些數(shù)據(jù)去做決策榜配,能否先跟規(guī)則的同事確認(rèn)這些數(shù)據(jù)是否有使用否纬,如果沒有,就可以先暫停這些數(shù)據(jù)的獲取蛋褥,減少影響面临燃,再來(lái)細(xì)致的分析數(shù)據(jù)。得到的回復(fù)都是這些數(shù)據(jù)很早前就上線了,肯定有在用膜廊。這時(shí)只能分析系統(tǒng)數(shù)據(jù)乏沸,恰巧丟失的數(shù)據(jù)是原始數(shù)據(jù),不是加工數(shù)據(jù)爪瓜,原始數(shù)據(jù)不做規(guī)則入?yún)⒌旁荆跃秃?jiǎn)單的修改了獲取數(shù)據(jù)源的代碼。
在測(cè)試同事進(jìn)行簡(jiǎn)單回歸測(cè)試時(shí)铆铆,發(fā)現(xiàn)了一個(gè)奇怪的現(xiàn)象蝶缀,舊數(shù)據(jù)被覆蓋,檢查了各種 SQL 配置薄货,沒有發(fā)現(xiàn)問(wèn)題翁都,因?yàn)橐郧耙灿泻芏嗄P秃鸵?guī)則入?yún)⒍际沁@樣配置的,接著就陷入歷史問(wèn)題的 debug 中谅猾,還是沒有發(fā)現(xiàn)問(wèn)題所在荐吵,到了晚上快 11 點(diǎn),有同事聯(lián)系了規(guī)則同事赊瞬,才發(fā)現(xiàn)卡件的數(shù)據(jù)他們并沒有在借款的規(guī)則中使用先煎,也就是可以通過(guò)關(guān)閉獲取數(shù)據(jù)源來(lái)解決借款卡件問(wèn)題,作罷巧涧,先解決數(shù)據(jù)卡件問(wèn)題薯蝎,后面再細(xì)致分析歷史問(wèn)題,搞完回到家 1 點(diǎn)半谤绳。
2 復(fù)盤
這周也是持續(xù)在跟進(jìn)這個(gè)生產(chǎn)歷史問(wèn)題占锯,最終發(fā)現(xiàn)是系統(tǒng)框架的 Bug,在數(shù)據(jù)處理的時(shí)候缩筛,私有的數(shù)據(jù)被公共的數(shù)據(jù)覆蓋導(dǎo)致的消略。這段時(shí)間也一直在思考這次生產(chǎn)問(wèn)題,從馬后炮來(lái)說(shuō)瞎抛,其實(shí)可以很快就把卡件問(wèn)題解決艺演,但是其中卻經(jīng)歷了整整 10 個(gè)小時(shí)的折騰,肯定是有原因的桐臊,通過(guò)這篇文章復(fù)盤一下胎撤。
2.1 慣性思維
從維基百科上看這個(gè)定義:慣性思維(Inertial thinking)
指人習(xí)慣性地因循以前的思路思考問(wèn)題,仿佛物體運(yùn)動(dòng)的慣性断凶。慣性思維常會(huì)造成思考事情時(shí)有些盲點(diǎn)伤提,且缺少創(chuàng)新或改變的可能性。
上面的過(guò)程發(fā)現(xiàn)了 2 處慣性思維认烁。
- 一處是同事們因?yàn)榻?jīng)歷了整個(gè)系統(tǒng)的開發(fā)過(guò)程肿男,所以直接否定了確認(rèn)規(guī)則是否有在使用丟失的數(shù)據(jù)的方案介汹;而我因?yàn)闆]有經(jīng)歷前程的開發(fā),算是一個(gè)旁觀者去看待這個(gè)問(wèn)題舶沛,所以才有這個(gè)想法先確定數(shù)據(jù)有沒在使用痴昧。這里的慣性思維是:因?yàn)閿?shù)據(jù)很早前就上線了,當(dāng)時(shí)就在使用冠王,所以現(xiàn)在數(shù)據(jù)還在使用。
- 另外一處則是我對(duì)待生產(chǎn)出現(xiàn)的歷史問(wèn)題舌镶,一直在通過(guò)檢查業(yè)務(wù)代碼和 SQL 配置去嘗試解決這個(gè)問(wèn)題柱彻,因?yàn)橐郧耙彩沁@樣使用的,以前沒出現(xiàn)問(wèn)題餐胀。這里的慣性思維是:以前這樣使用沒問(wèn)題哟楷,這一次有問(wèn)題應(yīng)該是業(yè)務(wù)代碼或者 SQL 配置有問(wèn)題。
這里都是因?yàn)橐郧白鲞^(guò)某些事情是沒錯(cuò)的否灾,導(dǎo)致在遇到相同問(wèn)題的時(shí)候會(huì)去把以前沒錯(cuò)的做法當(dāng)成是正確答案
卖擅,而其實(shí)沒錯(cuò)不等于正確,以前沒錯(cuò)的做法只是參考答案墨技,不是正確答案
惩阶,這里就涉及到思維問(wèn)題,如果當(dāng)成參考答案扣汪,那么思維是發(fā)散的断楷,這個(gè)參考答案覺得不對(duì)則可以再找其他參考答案或者去發(fā)現(xiàn)其他解決方案;如果當(dāng)成正確答案崭别,那么思維是僵化的冬筒,會(huì)把這個(gè)正確答案一直往里套,就會(huì)走不出來(lái)茅主。
理解了上面這點(diǎn)舞痰,那有什么可以去擺脫慣性思維呢?下面這兩點(diǎn)不確定是不是對(duì)的诀姚,但是是我通過(guò)思考响牛,決定接下來(lái)要嘗試去執(zhí)行的。
-
告訴自己赫段,這是慣性思維
娃善。《正念的奇跡》書中講過(guò)洗碗瑞佩、吃橘子的案例聚磺,都是去感受洗碗、去感受吃橘子的感覺炬丸。有健身的朋友也會(huì)知道瘫寝,健身肌肉酸痛的時(shí)候蜒蕾,去感受那個(gè)感覺。讓自己去清晰的正面對(duì)待慣性思維焕阿,而不是去埋怨自己怎么又陷入慣性思維咪啡,正面對(duì)待它,然后告訴自己暮屡,這是慣性思維撤摸,這個(gè)參考答案是錯(cuò)的,找另一個(gè)答案褒纲。 -
空杯狀態(tài)
准夷。如果沒有好的參考答案,放空自己莺掠,根據(jù)眼前看到的事情衫嵌,按正常的解決思路去解決。
2.2 明確輕重緩急
當(dāng)時(shí)最緊要的事情是解決生產(chǎn)卡件的問(wèn)題彻秆。在解決的過(guò)程中楔绞,卻發(fā)現(xiàn)了一個(gè)歷史遺留的 Bug,這時(shí)卡件的問(wèn)題代碼已經(jīng)驗(yàn)證通過(guò)了唇兑,應(yīng)該直接就上生產(chǎn)酒朵,解決當(dāng)前的燃眉之急,再解決歷史遺留的 Bug≡剑現(xiàn)實(shí)是一直去把心思放到歷史遺留的 Bug 中耻讽,導(dǎo)致延遲了很久才把 hotfix 上線。
明確輕重緩急很重要帕棉,不僅在特殊緊急的情況针肥,在平時(shí)工作中也是一樣重要,每天要做的事情很多香伴,要學(xué)會(huì)先做什么慰枕,后做什么。解決這個(gè)問(wèn)題即纲,可以采用四象限工作法
具帮,什么是四象限工作法?看下圖低斋。
<span style="font-size:0.8em;">(注:這里的象限劃分和數(shù)學(xué)上的有些差別蜂厅,數(shù)學(xué)上三、四象限和圖上是相反的膊畴,這里是按照事情的重要緊急程度排序)</span>
每件工作用 2 個(gè)維度去衡量掘猿,分別是重要性
和緊急度
。按照這 2 個(gè)維度進(jìn)行分析后落位到各個(gè)象限唇跨,然后根據(jù)象限的順序去執(zhí)行稠通,比如上面遇到的卡件以及歷史 Bug 問(wèn)題衬衬,卡件這個(gè)是放在一象限,歷史 Bug 是放在二象限改橘,所以應(yīng)該分開解決滋尉,解決好了卡件問(wèn)題之后,再去解決歷史 Bug飞主。當(dāng)時(shí)有這個(gè)意識(shí)的話狮惜,在驗(yàn)證卡件 hotfix 代碼沒問(wèn)題后,就可以直接上線了碌识,后續(xù)再分析歷史 Bug碾篡。
3 總結(jié)
經(jīng)過(guò)這次事情,讓自己靜下心來(lái)思考丸冕,思考哪些地方做錯(cuò)了,思考犯錯(cuò)的本質(zhì)薛窥,思考如何去避免再犯同樣的錯(cuò)胖烛,思考怎么去用實(shí)際的行動(dòng)改進(jìn)。犯錯(cuò)不可怕诅迷,可怕的是一錯(cuò)再錯(cuò)佩番。嗯,這一刻罢杉,我又成長(zhǎng)了趟畏。希望我的復(fù)盤也能給你一些啟示。
推薦閱讀:
行為型模式:觀察者模式
行為型模式:迭代器模式
行為型模式:策略模式
歡迎關(guān)注公眾號(hào):LieBrother滩租,一起交流進(jìn)步赋秀。