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