給1到10年運維人的修仙指南
(點選“ ofollow,noindex" target="_blank">此處 ”可獲取李強演講完整PPT)
講師介紹
李強, 10年以上運維及管理經驗,先後在AdMaster、餓了麼擔任運維經理;現任天天拍車運維總監,主要負責天天拍車運維架構的管理、持續優化以及運維團隊的建設、培養。擅長網際網路運維體系、運維技術體系的建立以及高併發網際網路基礎架構的設計及優化。 同時作為國內最早一批思科網路模擬器的推廣者、虛擬化先鋒論壇的創始人,一直致力於網路模擬器使用的推廣,為國內培養網路工程師盡一份力。
今天跟大家分享一下運維人的職業生涯發展和相應的軟硬技能提升,議題分為兩個部分,第一是運維工程師成長的煩惱,第二是怎麼走好自己的運維之路。
一、運維工程師成長的煩惱
第一部分裡,根據我自己長時間的工作經驗,把運維工程師按照工齡做了一些年限上的劃分,比如任職三年、五年、八年……處於不同階段,運維人也呈現出相當不同的狀態。
1-3年:有技術的逗逼
(1)隨性工程師
在工作時間內,一般 是比較隨性的 工程師,做一天和尚撞一天鐘,我也親身經歷過此階段。這時候還沒有什麼責任心,不會有過多的想法,只負責去執行,而不做過多的思考。與工作時間內的“被動思維”呼應的是,下班之後夜生活比較豐富,撩妹、抖音、打遊戲等。
(2)做技術容易“管中窺豹”
什麼概念呢?一到三年的運維人大部分靠度娘,例如 Nginx配置最大連線數只知道上網獲取65535相關的配置,但是配置背後的原因和原理,他們不知道也不甚關心。至於各種一些文章裡的配圖,更不會做深入研究。
(3)工作態度積極,衝勁足
我曾接帶過一個實習運維工程師:3月份入職,9月份離職。初來乍到特別散漫,做事只應付我們的基本期待。後來接受了一些思想指導,小夥子工作突然很有衝勁;他所做的事情,包括日報、週報內容的撰寫,表現得判若兩人。2015年4月份的22個工作日,他加班22天,天天至凌晨兩三點。期間技能也得到了極大提升:比如讓他測試叢集的效能,積極去做之外,也會認真思考為什麼去做這件事情;對新技術進行研究,思考怎麼樣把它快速地掌握。
(4)事務型人才
最後,我把各個行業的小朋友都稱為事務型人才,顧名思義,只需要把事情做好,達到公司的業務目的即可。“顧頭不顧尾”也是一種常態,我指導過一名90後的運維工程師,他做程式碼釋出,只管發上去,無視後期事態,比如是否釋出成 功、業務是否可以訪問 等。
3-5年專業資深人士
(1)技術提升
技術的確得到一定的提升,這是生存規律。初入公司,一張白紙,為了掌握瞭解公司的業務,你會去學習,否則就只能被淘汰。
(2)“跳槽”慣性
技術提高以後,會陷入“跳槽”慣性。上面提到的2015年3月份到我這邊的運維工程師,剛入職時轉正5K,9月份離職去大麥網以後薪資一下到13K,的確這時候跳槽提升得很快。但是容易迷茫,如果頻繁跳槽,發現好像跳到這家公司和那家去差不多,到底應該怎樣去做,就不明晰了。這時候,我們運維的技術方向就發生變化了,基礎架構運維和開發型運維開始分化,其中DevOps會更多一些,一些運維工程師會產生迷茫,到底是去做什麼。我所認識的一些人做到五年左右,基礎架構運維的事情還沒有非常深入的時候,就去做了 DevOps ,發現原有的開源元件並不能用得很好,給公司以及個人的發展帶來了一定的風險。
(3)技術能力與高薪預期的“錯位”
技術能力提升減緩與高薪預期的“錯位”,這一階段的中級運維或高階運維都容易自傲。我面試的運維人有跟我同齡的,還有比我大的,他們中有些人技術知識還停留在五年前,卻因為自己從事這方面有一定時間了,產生高薪的期望。這就造成錯位,高薪期待和實際能力不匹配。
(4)事務型和思考型人才
3-5年運維人屬於事務型和思考型人才,身為中級或再高一級的運維工程師,大部分人還是處於被領導的狀態。有經驗和學習能力加持,他們會思考什麼是該掌握的東西,不過思考的強度往往還不夠。
(5)缺乏總結跟覆盤
最後,缺乏總結跟覆盤。我相信運維人面對新的技術,或者做一些測試的時候,都會做筆記。那為什麼還缺乏總結?很多時候筆記就只是一本筆記,並沒有回翻筆記來複習,更不會及時更新筆記內容和分類。
5-8年:運維經理,至少運維主管
5-8年的運維人基本上是運維經理,至少是運維主管。但是,很多運維工程師是憑著技術能力和工作年限成為運維經理的,這中間要面對一個從技術到管理的跳躍,所以存在較多問題等待適應和解決。
(1)找不到自己的定位
升任到運維經理後,很多事情還是自己承擔,導致團隊裡的其他兄弟分擔任務很少,進步很慢,長遠來看也不利於整個團隊的發展。
(2)團隊意識薄弱
不會帶團隊,不懂得利用團隊的力量來滿足公司的業務需要,還是做原來的角色。
(3)對管理角色的認知出現偏差
身份轉變來得突然,面對新角色不適應,比如開始擺架子,趾高氣昂,指使別人做這個做那個。另外,不習慣處理管理類事務,比如某一公司的業務在機房的哥們先是運維工程師,被提到了IT主管。每天都要做報表,他會覺得太煩了,寧可不做,想回去繼續做一個運維工程師。
(4)思考與事務佔比相對來說會更均衡
做了運維經理以後,你更多的時候要思考的是怎麼讓自己的運維更加有效率,怎麼讓公司形成這種標準化、規範化的運維體系以及運維技術體系。所以這時候,作為一個領導者,可能既要處理團隊裡疑難的技術問題,同時還要去規範運維體系。
(5)運維技術容易達到瓶頸期
公司 裡面處理線上事務特別多的時候 ,對於一個運維經理來講,時間、精力用來補足管理,很少能進行技術知識的更新,所以技術知識往往就會停留在那個階段。但是在做技術的圈子裡有個特別好玩的現象,底下的普通員工如果要服你,就要看你的技術能力是否夠強。技術能力不強,即使你的管理能力很強,下面的兄弟也不認你。
我遇上好多這樣的情況。有一位運維工程師朋友認為自己經理的技術能力不強,瞎指揮。但縱然這位經理技不如人,他可以把一些任務安排有時間節點地完成,而且保證一定的質量,這就是懂得管理。而我認識的這個朋友,雖然他也做了八九年了,卻始終是一個普通的基層技術人員,做不上管理崗。
8-10年:運維總監/運維架構師
8-10年的運維人,已達運維總監/運維架構師層次。 這時候技術經驗和管理經驗都已經非常豐富,加上做了運維總監或運維架構師,他們都有比較好的職業習慣。
(1)知識陳舊
因為他們不再做一線的運維了,問題交給團隊的人處理,自己只會給一個思路。比如說:不管做DBA還是做運維的,他們對聽過的名詞都熟得不能再熟,但就是做不到毫秒級的故障切換。不久有人來問我,你們是怎麼能做到毫秒級故障切換的?我回答說我們對於技術的領域是一直更新 的,Failover用的最多的還是Keepalived,Keepalived官方已經給了答案。另外做技術是我的興趣,做管理是我的工作。
(2)學習能力下降
能做到運維總監或運維架構師,年齡絕對不會特別小,一般都在33到35歲之間。這時候,家庭、團隊、公司都有很多事情會分散精力, 相比而言學習能力會有所下降。 我在沒有孩子之前,一週至少有三個晚上可以騰出來三個 小時學習。現在,常常被兩個孩子纏著玩,等他們睡著以後發現剩下的一個小時或半個小時壓根兒就不夠,加上早起,精神上會很累。
(3)新事務接受能力下降
比如做資料倉庫和區塊鏈這些比較火的技術,沒法讓一幫三十幾歲的人去搞技術攻關,攻不了,精力也不夠。
(4)不懂的東西會越來越多
現在的新技術非常多,如果你不保持更新自己的知識體系,就會發現跟不上行業的發展節奏。
(5)對於事情目的、目標不明確
很多人對於運維這件事只管做,但為什麼做、到底要做成什麼樣子的,並不在乎。比如做故障切換的時候,我們是要求十毫秒必須發現問題,兩毫秒以內故障切換。但很多公司並沒有這個要求,只要出了故障切過去就行,至於你的業務中斷多少時間可能都不會去思考。
以上是我根據實際工作經驗,對不同階段運維工程師的特徵做的一些總結。我還是希望更多的運維工程師可以走好自己的職業生涯,因此有了下面的一些建議。
二、怎麼走好自己的運維之路
先分享一下我最近面試新人時的一些經驗。我面試時不會問過多問題,我就問應聘者:你會不會安裝作業系統?
這個問題看似簡單,其實不那麼容易回答。應聘者沒有一個人說得上來,為什麼我的作業系統安裝到伺服器上,伺服器可以正常執行,也沒有一個人說得上來。
我又問,你能在任何一個伺服器上安裝作業系統嗎?他們回答是“能”。這就是不善於去深入挖掘,是比較膚淺的。
再比如做配置的時候,很多人會選擇輸入網上的 資料,我們作業系統裡面配置/etc/security/limits.conf時,有人會將nofile配置為65535。我問他們,你為什麼不配一個65536呢?他說不允許。我就笑了,說明很多人不會仔細地深究這個65535到底能配還是不能配,能不能比這個大,大多少倍,這些都沒有人去思考。
所以,面試結束我都會告訴他們說,能夠深入,你才會有價值。
對於剛入職場的人而言,五年以內的發展多憑藉硬實力;而五年之後,運維軟實力才決定他能走多遠。
1、打磨硬實力
(1)官方文件
紅帽招人面試時會問一個問題,當運維的環境出現故障,你首先從哪裡查詢資料解決問題?如果回答,我先從紅帽的官方文件上找,然後再去處理思路,你已經把一隻腳踏入紅帽了;如果說你先通過谷歌搜尋,還能繼續往下聊一會兒,但如果你說先通過百度搜尋,下面就已經不用再進行了。這些都是紅帽相關負責人告訴我的。
(2)及時跟上時下比較火的技術
現在很多人學運維,只把技術停留在落後的架構上,然後根據百度上查詢到的資料使用起來,而且沒辦法做到更深入的使用。對於優化也僅僅停留在稍微修改就可以的程度,不會做更深入的研究。
(3)多關注技術公眾號
我關注了二十多個技術類的公眾號,不為別的,就是為了能及時瞭解新技術,提升自己的見識。
(4)給自己投資技術類書籍
我有一個觀點,給自己家庭買東西的時候,要捨得花錢;給自己手底下兄弟謀福利的時候,眼睛眨都不要眨;給自己的大腦做投資的時候,也是如此。看書就是一項對自己有益的投資,以下是我看過後覺得不錯的書,推薦給大家:
(5)實驗
因為技術對我而言是一種興趣愛好,雖然精力上分不開那麼多,但每當出來一些新軟體或新版本,我都會去摸一摸,看看根據自己以前的技術知識能不能把它運作起來,同時摸索是否有更好的新用法。
2、提升軟實力
我現在對部門所有運維工程師的軟實力提升,要求非常高,比硬實力要高得多。
(1)溝通能力
面試溝通: 我面試的時候,發現有些人溝通能力太差,坐了一會兒就開始緊張,緊張得手都不知道該往哪放了。雖然我已經儘可能地讓他在輕鬆的環境裡面試,以最輕鬆的話題談起再逐漸進入主題,但他還是緊張得不知所措。
不過,溝通能力不代表口若懸河,應該具備一些關鍵要素,交流時講清楚做了什麼事、為什麼做這個事、有多少種方法去做,這才是溝通能力。
上下級溝通: 做管理的時候會發現,領導者最希望聽到下屬的反饋。當我向下安排任務時,我希望他們過一會兒會來找我,瞭解做這件事的目的、怎麼規避風險、有沒有其他應急預案等。如果不溝通的話,上下級很容易會產生這樣的問題:比如說我安排的配置要求很高,但他們並不知道我所希望達到的程度,自以為已經配置得很好了,到了交付成果的時候才發現效果不夠好。如此反覆,領導者只能不時盯緊手下人的任務程序。
我們建立呼叫中心的時候,招來了一個管人力資源的人,他入職第一週下午下班後給我和公司所有高管發了週報,彙報專案的完成進度、完成結果、由誰負責、為何延期等,寫得非常詳細。當時所有人的反應都是,這個人一定要好好留著。所以說,通過寫週報,就體現了他的價值。推薦看看《不懂彙報工作,還敢拼職場》這本書。
(2)時間管理能力(碎片時間)
大家在不加班的情況下,下班後手機一般都是用來幹什麼的呢?我的習慣是如果坐地鐵,會利用這個時間看看文件、PDF等。
非常值得一提的是去年給我們公司做培訓的一位講師,他的碎片時間管理極為優秀。比如這會兒在我們的峰會現場,會有10分鐘的短歇時間,他可以在這10分鐘裡寫一份PPT為明天的演講做準備,但一般人都會在做完今天這場分享之後再去做下一場的PPT。所以說,懂得利用碎片時間是很重要的。
(3)方法論
作為技術人員經常會用到的方法論是什麼?
-
SWOT
-
6W2H
-
PDCA
-
魚骨圖:人、機、法、料、環
-
任務分解法
-
SMART原則:具體、可衡量、可實現、時效性、相關性
-
思維導圖
SWOT原則可用於分析你自己的優勢和劣勢。當你去新的一家公司工作,挑戰、機遇各是什麼?所以我面試的時候常會問兩個問題,你認識你自己嗎?有些人想過,有些人沒想過,我會再細化,你自己的優勢是什麼?劣勢是什麼?
PDCA原則其實就是幫助我們在做事情前做好計劃,做完了再去檢查,檢查之後發現有沒有改進,或者有偏差的地方通過糾偏,通過不斷的PDCA原則越做越好。很多時候,如果想做好,PDCA原則是一定要有的。推薦看看《管理管到位就這幾招》這本書。
魚骨圖、任務分解法、思維導圖,這三個是我做任何事情都會用到。如果用魚骨圖做不成功,反過頭來,把做不成功的原因定位,做好方案,再根據思維導圖做這個任務;你的執行計劃是什麼,執行計劃做出來,接著任務分解:什麼時間,做什麼事情,你需要什麼配合。
(4)工具
以下這些工具也是技術人員經常需要用到的:
-
Xmind:用於做思維導圖;
-
JIRA:通過JIRA管理專案,根據專案的進度來評估團隊每個人每週工作是否飽和。如果誰這周空著,我就讓他做學習、提升或優化;
-
Confluence:在這個系統裡做文件管理。
(5)專案管理能力以及事件回顧、覆盤能力
最後,專案管理能力以及事件回顧、覆盤能力也同樣是需要提升的軟實力,推薦看看《覆盤:對過去的事情做思維演練》這本書。
Q & A
Q1: 我是做系統安全運維的, 目前我所瞭解 的安全事件一般都是因使用者洩露引起的, 想問一下,您對現階段運維安全結合的方向有什麼指導嗎?
A1: 我聊一下我的感受:運維如果是面向安全的話,我都不知道怎麼去面對。為什麼?因為運維在做一些開源元件配置的時候,很多時候安全問題本身是可以避免的。像之前網上看到的NTP、DNS的域名反射攻擊,還有資料洩露,這些其實在我看來都不是一個應該發生的問題。因為作為一個運維,他的職責,第一個是穩定,第二個是 安全,我們討論的安全問題80%就是運維引起的,為什麼呢?因為不去把配置思考,預設把配置全部建立到公共的IP上,你的資料就是直接暴露的。
我認為,如果安全方面你把這些開源元件用好,更直接一點,如果這個開源元件裡有引數是指定的IP,你只要把這個IP指向內網IP,然後讓埠指向內網,你的安全運維80%就做到了。
Q2: 我是一名運維開發,想諮詢一下,您怎麼看待運維跟運維開發的關係?
A2: 只有當你對你所負責業務的基礎組建深入瞭解並能用得好的時候,足夠的運維開發你才會得心應手。 比如我們公司從運維到現在沒有做過一個運維開發,但是在做運維的過程中,我們會做簡單的運維開發,做一個平臺實現很多的功能。
為什麼不招運維開發?因為當時還沒有構建完善的運維體系。只有當建立符合標準化、規範化的運維規則、制度、流程之後,我才會用運維開發。比如現在我已經有了標準化、規範化的東西,那就需要招運維開發幫我實現相應的平臺,來更加高效地實現運維的目標。
所以,運維開發,我個人建議你要麼去做監控,要麼你想負責所有的開源元件更好地做好運維工作的話,先把運維的基礎東西夯實了,然後再去做運維的架構。