再流弊的技術,也抵不過一次事故:兼談技術管理
作者介紹
蕭田國,觸控科技運維總監(jiān),高效運維技術社區(qū)創(chuàng)始人,互聯(lián)網(wǎng)專欄《高效運維最佳實踐》作者。
“高效運維”和老王(王津銀)提倡的“精益運維”、智錦提倡的”白盒運維”并稱為運維三大流派。
引言
2015年,業(yè)界已經(jīng)連續(xù)出現(xiàn)了幾起大的故障。究其根本原因,都是不應該的人為事故。本文從這些大故障說起,主要談及運維管理相關的一些話題。本文的主要內(nèi)容包括:
一、不太平的互聯(lián)網(wǎng)
二、為什么這么多人為事故?
1.為什么運維更容易發(fā)生事故?
2.規(guī)范這么全,為什么還有事故?
3.都自動化了,為什么還有事故?
4.灰度這么好,為什么還有事故?
三、怎么規(guī)避人為事故?
1.選擇合適的人
2.培養(yǎng)安全意識
3.讓專業(yè)變成一種習慣
好吧!我們正式開始。
一、不太平的互聯(lián)網(wǎng)
近期獲悉的一些大故障,不僅來自于攜程、阿里云,還有一些影響范圍不是很大,但同樣非常不應該的人為事故。
901阿里云故障
阿里云稱因云盾升級觸發(fā)bug,導致部分服務器的少量文件被系統(tǒng)誤隔離。其已第一時間啟動系統(tǒng)回滾,被誤隔離的文件正在陸續(xù)恢復。
部分阿里云用戶表示很受傷。
很多微信群朋友紛紛表示也已中招。從波及面及技術層分析來看(詳見下文),應該是人為事故為主。
528攜程故障
5月底的這次攜程故障,在17小時后才恢復業(yè)務。官方更是直言為“員工錯誤操作導致”。
其他“令人發(fā)指”的故障
包括但不限于:
1.某公司技術人員大白天的給公司計費數(shù)據(jù)庫服務器更換電源…
2.某銀行總行大型機,關鍵線路接反了…
3.某銀行關鍵交易系統(tǒng),更新版本時SQL 腳本update 語句沒寫where 條件,然后所有網(wǎng)點信息都被重置…
根據(jù)筆者十多年的互聯(lián)網(wǎng)從業(yè)經(jīng)驗,重大故障,究其根源,至少60%都是低級人為事故。真正因為復雜系統(tǒng)問題導致的嚴重故障,非常之少。
二、為什么這么多人為事故?
互聯(lián)網(wǎng)發(fā)展至今,還沒脫離草莽時代。技術上,從最開始的小米加步槍,到現(xiàn)在逐漸自助化、半自動化,或者利用開源產(chǎn)品修修補補形成自己的系統(tǒng)。
如果說技術上的發(fā)展尚可陳詞、有些亮點,那么對人的管理和重視程度,就更加落后得太多。
可以佐證的是,微信技術社區(qū)里頭,討論技術熱點的文章非常之受追捧;但技術管理類的文章,往往非常被冷落。
究其原因,還是在于廣大互聯(lián)網(wǎng)技術人員的“手藝人情結”。從我所在的運維行業(yè)來看,尤為突出:
大家都是從Linux、Shell 開始學起,非常享受那種敲幾行命令一回車,自動部署多臺服務器的快感及成就感。并誤以為這就是自己的全部。
技術人員夢想著身懷“絕技”,對Linux系統(tǒng)的某些壓箱底活兒或?qū)δ稠椌幊碳夹g的獨門秘籍,自此笑傲人生,并“不為五斗米折腰”,如認為公司或領導有讓自己不爽的地方,即刻”瀟灑”遁去。
雖然,這往往驗證了一句話“最有才能的人,往往是最無效的”。
技術人員不愿受束縛,更多非常相信自己,覺得我的技術杠杠的。為什么需要別人來檢查我的工作?我就是完美。
技術負責人往往工作年齡更長,可能經(jīng)歷過更野蠻生長的時代。
而且很多人潛意識地認為,技術可以解決一切問題,但問題是:
當系統(tǒng)越來越大、自動化和智能化程度越來越高,開飛機的人,水平跟不上,怎么辦?
機器再強大,也需要人來操作。你說是不?
1.為什么運維更容易發(fā)生事故?
其實相比運維,開發(fā)人員還是幸福的。開發(fā)更多關注功能、怎么快速交付項目需求即可。程序有Bug?還好啦!后面還有測試在兜底。甚至,Bug 多些也無妨,還能算做測試的績效。
在這個時候,開發(fā)是操作人,測試實際上是檢查人,兩個崗位互補:
這就是為什么飛機駕駛艙會有兩名飛行員的原因,即使副駕駛員看上去無所事事的樣子。但,關鍵時候可是能救命的。
運維就沒這么幸運了。運維往往苦逼地沖在第一線,手上掌握著的都是生產(chǎn)環(huán)境。而且一般情況下,問責自負,基本上沒有誰來檢查運維的工作。也少有人意識到這是個嚴重問題。
2.規(guī)范這么全,為什么還有事故?
規(guī)范是用來“制約”人的,技術是用來“簡化”人的。But,系統(tǒng)再智能也得人來操作,不是么?
對于人本身,我們究竟做了哪些事情呢?這是值得捫心自問的。
規(guī)范再多,人也可以束之高閣。所以管理者一定不能覺得規(guī)范制度完善了,就已萬事大吉。恰恰相反,放松警惕,放松對人的管理,放松貫徹執(zhí)行,更大的悲劇可能將要來臨。
規(guī)范制度不是技術管理的全部,規(guī)范可以理解為最低標準,用來杜絕不專業(yè)的人去會犯毀滅性錯誤。
規(guī)范更多是“術”,而不是“道”。雖然規(guī)范想體現(xiàn)“道”,但畢竟,“指向月亮的手不是月亮”。
重視選人、重視培養(yǎng)人的專業(yè)意識,才是王道。
3.都自動化了,為什么還有事故?
近期這幾起嚴重故障定義為人為事故,我想應該沒有多少人反對。
自動化可以減少人員例行的、重復的登錄服務器的操作,從而減少人為事故的發(fā)生。那么這又是鬧哪樣呢?
其實剛好相反,人為事故因為運維自動化平臺的出現(xiàn),其惡劣影響更是被無限放大。
之前小米加步槍的時代,大家都登錄服務器進行操作,千百臺服務器各自為政,想一次性搞癱整個系統(tǒng),還真的很難。
運維自動化平臺的出現(xiàn),很好的“解決”了這個問題。畢竟,平臺再智能,也需要人來操作。而過分依賴平臺,反而削弱對人員專業(yè)性的培養(yǎng)。
人的關系沒協(xié)調(diào)好,問題的根源就沒解決。壓死我們的往往是最后一根稻草。
4.灰度這么好,為什么還有事故?
有人會說了,我們公司灰度發(fā)布非常完善,理應能控制各種事故發(fā)生。即使有,影響范圍也應該非常之小。
這其實有兩個問題。一則有了灰度發(fā)布,就可以忽略測試環(huán)境了么?如果模擬環(huán)境并不足夠仿真,或沒有在模擬環(huán)境充分測試過、直接在生產(chǎn)系統(tǒng)上進行灰度,這個也是非常值得商榷的:
一個朋友說,電信內(nèi)部做運營,動用了九個機柜100%模擬生產(chǎn)環(huán)境,專門做測試。包括網(wǎng)絡設備版本,也都充分的穩(wěn)定性測試。
可能根本原因在于,互聯(lián)網(wǎng)行業(yè)草根出身,長期野蠻生長,從亂到治,習慣試錯和快速迭代,因此容易亂象叢生。而電信、銀行這些行業(yè),這些從一開始就視安全為命脈,循規(guī)蹈矩,謹小慎微。
還有,重大事故發(fā)生時,灰度范圍內(nèi)的用戶,對他們而言,總歸是無妄之災。憑什么他們就應該蒙受此等“待遇”呢?他們何罪之有?
他們就理應是”小白鼠“么?
二則灰度策略,是否合適?版本發(fā)布平臺往往匯聚眾人智慧結晶設計架構而成,但可能沒有定義具體的灰度策略(這不屬于技術范圍,而是業(yè)務范圍)。
也就是說,一次更新100臺服務器,還是一次更新10000臺服務器,是可以被操作人員手工指定的。
最怕的就是,工具做得很流弊,使用者綜合能力很一般。
使用者如果圖個省事,所謂的灰度發(fā)布,一次性的更新成千上萬臺服務器,那么工具就不僅沒有產(chǎn)生效率,反而變成了幫兇(就像刀磨快了,反而變成殺人利器)。
究其本質(zhì)而言,灰度其實就是一種制度和意識。是希望通過灰度,喚醒人的安全意識。如果操作人員,不能覺悟到這一點,就是死路一條。
三、怎么規(guī)避人為事故?
在生產(chǎn)系統(tǒng)上更新版本(特別是如果沒有同等模擬環(huán)境的話),就像在高速公路上換輪胎,各中危險,不一而足,特別是服務了成千上萬臺物理機的大系統(tǒng)而言。
人為事故的出現(xiàn)往往不是個例,是長期積累的結果,單個人為事故往往也只是呈現(xiàn)了問題的冰山一角而已。人為事故,是必然而非偶然。
想要有機會徹底的解決人為事故,建議從如下幾方面著手。
1.選擇合適的人
選好人,往往能做到事半功倍,反之亦然。
管理學的重要原則之一是發(fā)揮人的優(yōu)勢,盡量不要嘗試著去改變一個人。特別是對于一線生產(chǎn)系統(tǒng)的操作崗位(其實非常重要)而言,找到合適的人,比什么都重要。
運維的首要工作職責是穩(wěn)定性。因此需要找性格老實、謹小慎微的人來做更加合適。性格毛糙,甚至容易“幻聽”的人,明顯不合適,畢竟,“常在河邊走,哪能不濕鞋”。
為什么非得要讓二把刀來開飛機呢?
德才兼?zhèn)涫钦?。這里所謂的才就是技術,德是人的德行、行為和意識。道和德是相通的,運維人員的意識增強了,綜合能力提高了,規(guī)范了,是可以避免一些問題的。
這里順序很重要,直接從規(guī)范切入,往往是失敗的開始。需要首先提高意識水平,然后順勢而為。而不是生猛切入。
2.培養(yǎng)安全意識
“對運維操作要有敬畏之心”。這句話應該作為警世恒言,掛在每一個運維人員的心頭。
腦子里牢記安全意識,比死記硬背規(guī)章制度更重要(當然,首先需要有規(guī)章制度)。
運維制度及規(guī)范體系的最大意義在于,控制死角可能的影響。每一次事故,都是一個盲點、一個死角又被發(fā)現(xiàn)的過程。運維最難之處在于,不可能做到?jīng)]死角。
規(guī)范制度肯定落后于問題。為了規(guī)范而規(guī)范不是目的,根據(jù)訴求控制風險的規(guī)范,才是有意義的。
誠然,“安全沒有捷徑,該踩的雷都會踩到。”但這不是借口,不是免死金牌。同理,用技術來保障技術,也是不可取的。
讓每一個運維人員腦海里都緊繃著安全這根弦,比什么都重要。畢竟,死角永遠都存在。只能用未知來解決已知,而不是反之。
3.讓專業(yè)變成一種習慣
先哲亞里士多德曾說:“人的行為總是一再重復。因此,卓越不是單一的舉動,而是習慣。”
單次的刺激無法形成習慣,單次過猛的刺激,只會形成恐懼,變得畏手畏腳。
專業(yè)是否變成一種習慣,往往更多取決于管理者。因為管理者更能分清楚,哪些是重要緊急,哪些是不重要不緊急。專業(yè)首先應該是管理者的一種習慣,然后時時傳遞不松懈。
管理者應該選對人,然后對于有重大操作權限的人員,經(jīng)常性的溫習各類故障、事故,采取各種辦法,讓員工時刻具備安全意識,真正認識到責任重大。
“警鐘常鳴”,各種震撼人心的模擬演練、演習和培訓,也必不可少。
需要樹立檢查人機制,建立一個好的團隊工作習慣,“結對運維”:
沒有檢查崗,單槍匹馬做事情,平時還好,在情況復雜時,個人情緒波動和精神壓力都可能非常大,容易錯誤決策,或使出“昏招”。
另外補充說下:對于公有云而言,如果參與云保險,這對于終端用戶而言也是幸事。畢竟云廠商的賠償,即使100倍又能多少呢?業(yè)務的損失,如果由第三方保險公司來做些承當,應該更好。
路漫漫其修遠兮,吾將上下而求索。謹以此句,和天下運維同仁共勉。一起加油。
如何一起愉快地發(fā)展
“高效運維”公眾號(如下二維碼)值得您的關注,作為高效運維系列微信群(國內(nèi)領先的運維垂直社區(qū))的唯一官方公眾號,每周發(fā)表多篇干貨滿滿的 原創(chuàng)好文:來自于系列群的討論精華、運維講壇精彩分享及群友原創(chuàng)等。“高效運維”也是互聯(lián)網(wǎng)專欄《高效運維最佳實踐》及運維2.0官方公眾號。
重要提示:除非事先獲得授權,請在本公眾號發(fā)布2天后,才能轉載本文。尊重知識,請必須全文轉載,并包括本行及如下二維碼。