天天看點

運維與個人英雄主義

什麼是個人英雄主義?

根據互動百科,個人英雄主義有以下釋義:

不突出依靠人民群衆的力量,而強調個人力量而去完成某種社會任務的英雄主義思想和行為。與“革命英雄主義”相對。它以個人主義為原則,強調個人在社會生活和曆史活動中的作用,将“人民群衆的力量和智慧”置于次要地位。

以上釋義是一個适用于所有行業的解釋,那麼對應到運維領域,個人英雄主義該怎麼定義呢?我的了解是下面這樣的:

依靠個人力量去維護一個有問題的系統,使外界看來一切都很正常,這個過程中會涉及犧牲個人利益。

這裡我們需要對系統進行一下定義,系統可以是以下任何一個或者他們的組合:服務、團隊、流程、軟體

個人英雄主義在運維中的表現

前面對系統進行了定義,在運維的過程中一般會給系統定義SLA,或者一些其他可以描述系統正常運轉的名額。

但是現實中的系統往往達不到預定的SLA或名額,這時候英雄出現了,他或她會盡全力試圖使系統達到預定SLA或名額。

通常英雄會通過以下努力來力挽狂瀾:

  • 每天工作到很晚
  • 占用自己的周末時間
運維與個人英雄主義

具體執行個體

工單隊列

英雄的團隊負責一個工單系統,對外承諾的SLA是24小時處理,每周由不同的團隊成員輪班。

由于業務系統的高速發展,每天都有很多新的工單進來,在8個小時之内根本處理不過來,我們的英雄會工作到很晚去處理,每天的工作時間從8小時發展到10小時、12小時、16小時,以確定可以達到承諾的SLA。

服務SLA

英雄的團隊負責一個生産服務,該服務設定的SLA是可用性4個9。但是由于該服務的軟體架構設計、釋出流程、監控設定等問題,該服務達不到4個9。

我們的英雄會每天巡視服務的監控系統,人肉定位異常、復原有問題的釋出、提前發現資源預警、重新開機有問題的程式等等,以確定可以達到承諾的SLA。

運維與個人英雄主義

個人英雄主義好不好

回答這個問題需要看站在什麼樣的立場來看待好不好。

  1. 從公司角度

    短期内對公司是有利的,系統正常運轉沒有出現故障;長期來看對公司是不利的:因為更深層次的系統問題被掩蓋,當系統高速發展時問題會暴露出來。遲早英雄的個人精力會被耗盡,離職或者轉組之後問題暴露出來。

  2. 從團隊其他人角度

    短期内團隊其他成員有更多時間投入到項目中,而不被瑣事打擾,因為不少瑣事已經被英雄處理了;團隊會被表面現象迷惑,認為目前運維的系統運轉良好,進而不會投入人力去改進,但是問題會随着系統發展和英雄的離開暴露出來,那時候解決會花費更多的時間和精力,損失也比之前修複問題要更嚴重。

    英雄的工作方式會潛移默化的影響其他人,影響團隊成員判斷什麼才是更有價值和長遠影響的工作,也會影響團隊成員對所維護系統的期望(什麼樣的系統才是一個正常運轉的系統)。新成員可能會理所當然的認為,系統就是這樣工作的。

  3. 從英雄個人角度

    除了所謂的個人成就感,英雄本人是沒有什麼好處的。你也許會争論說系統缺了英雄就沒法運轉了,英雄應該獲得升值和獎勵。但是問題是,别人并不知道英雄所做的這些努力,而且往往這些努力是短暫的重複性的,并不能解決根本問題,僅僅停留在靠一個人的時間精力可以維持的程度,在技術驅動的公司這樣的工作并不能使英雄升職加薪。

    更可怕的是,随着時間的推移,系統變得更加龐大和複雜,英雄個人無法修複所有問題時,不僅會花費更多的時間而且會打擊英雄的自信心、降低工作效率和創造力,最終導緻英雄的離職和轉組。

  4. 從系統角度

    由于英雄的積極努力,看似系統是運轉良好,但是深層次的系統性問題被掩蓋了。英雄變成了系統正常運作的單點,但是其他人并不知道;系統的問題不能被暴露出來,進而沒有任何改進,在系統複雜性變大時,問題會以更嚴重的方式暴露出來,後期的改造往往意味着更高的成本。

如何避免個人英雄主義?

在遇到突發問題時,個人英雄主義對暫時度過難關是有幫助的。但是長遠來看則應該建立正确的期望,團隊運維的系統不應該依賴任何英雄就能做到正常運轉。

為什麼會發生?

前面講了那麼多的不好,那為什麼還會發生呢?原因主要有以下幾點:

  1. 短期修複很容易實作,你知道可以完成。(尤其是受冒名頂替綜合征影響)
  2. 修複往往立竿見影,帶來的成就感。(治标不治本)
  3. 自認為所做的工作非常重要。(其實缺乏全局觀念)

如何避免?

如何在運維中避免個人英雄主義,首先需要團隊經理或者技術上司能夠意識到這個問題,了解這種思想、行為對個人/團隊/系統所帶來的巨大負面影響,然後采取行動

1. 思想傳達

定期、及時的傳達個人英雄主義帶來的問題,讓團隊成員清晰的認識到沒有必要忍辱負重的維護不合理的SLA或名額;鼓勵團隊成員分享所遇到的問題;鼓勵團隊成員及時向上級回報問題。

2. 工作安排

根據團隊成員回報的問題,合理制定工作,對系統進行改進,使之不依賴于任何單點就可以達到預期的運作狀态。團隊成員把時間花在可以對系統産生長遠收益的項目上。

這是個很高的要求,因為并不是所有人都能看到一個項目對系統能帶來的長期收益,抑或是有些人隻關心功能的快速上線,這時候運維經理需要頂住迫切上線的壓力,合理安排團隊成員的時間,以短期被動換取長期的主動。

3. 合理預期

如果系統的SLA或者名額沒法達到,承認這個事實,然後對系統進行改進。

這會使系統短時間内達不到SLA,但是通過投入精力改進系統,修複真正的底層問題,系統會最終恢複而且是恢複到一個長期穩定不需要人額外關注就可以達到SLA的狀态。

4. 消除單點

團隊負責運維的系統很多時,難免會産生不同團隊成員負責不同元件的情況,這時即便沒人想成為那個英雄也難免被成為那個英雄。

這時每個元件的負責人,就需要盡力消除自己這個單點:

  • 文檔記錄元件的架構和功能
  • 提供工具自動化處理盡量多的場景
  • 為手工流程提供檢查清單
  • 知識分享
  • 人員互備

結束語

個人英雄主義會使人聯想到運維團隊就好比救火隊員的形象,英雄總是能及時撲滅大火,但是也随時忙于撲滅大火,卻沒有時間把起火的原因徹底解決進而不用忙着撲火了。

減少運維中的個人英雄主義,其實就是降低甚至消除系統對人的依賴,自治程度越高的系統才可能達到更高的SLA,更快速的釋出等等。

對于上司來說,要把運維工作搞好,就要發現和消除系統對個人英雄主義的依賴。對于個人來說,要把運維工作做好,就要有不充當個人英雄的意識。

把下面一句話送給做運維的朋友:

Don't sacrifice your social life for professional life and later regret it.