1. 程式人生 > >優維科技老王:從運維職級面試看運維能力要求

優維科技老王:從運維職級面試看運維能力要求

作者:王津銀(老王),原騰訊/UC高階運維工程師,現優維科技CEO。

該文章是老王在騰訊期間輸出的,從騰訊運維崗位的職級來分析不同崗位對運維能力的要求差異。

這次很有幸作為運維線的通道評審,參與部門整個職級晉升的面試過程,三天下來,我感覺自己的收穫非常的大。因為從其他幾位評審和各位參加通道晉升的同學們身上,的確學到了很多東西。但此文是不談自己的收穫,而是談一些關於職級晉升的經驗,總結出來供大家參考一下。首先還是得說一說這個職級晉升的目的。個人理解,其實是公司和部門制定這一制度,想對大家的成長負責,設定一個清晰的路線圖,依此往目標方向發展。從另外一個方面來說,公司把職級晉升和部分利益掛鉤,其實是為了更好推行這一制度,從而驅動公司整個人才建設及個人成長進入漸進式的正迴圈中。當然這次從申請的數量來看,說明大家對於自己成長的訴求還是非常強烈的。其實成長是屬於自己的,自我驅動會是最好的結果

其次也談談在面試過程中,看到的一些問題。比如說面試者緊張、自信心不足;技術細節深入不夠;有些同學存在偏科現象,對職責範圍之外的運維關聯知識或者業務的瞭解不多;業務運維的理解和思考不多,沒有和業界去對齊;工作成績不夠突出,除了維護業務之外,沒有更多的成績支撐。針對這些問題,後面會談談個人的一些看法。

也不得不說我們公司的通道評審要求挺高的,技術能力、業務運維能力、專案管理能力等等多方面提出了很多明確而細緻的要求。既然通道有明確和細緻的要求,個人認為還是可以總結些方法來應對,以下就從面試中和麵試前兩個階段來做個經驗分享。

1、面對這次面試,你是否做了充分的準備?

A、注意點

  • 你是否有信心去面對這次機會
  • 你對你提交的資料是否有認真的梳理,以便說明自己過去的成績和表現。
  • 對相應職級的能力要求的技術點是否有做些準備,比如說再去重新去看一下相關的書籍或者網上資料。
  • 對提交的評審資料中涉及到的業務、專案、故障及優化事件,你是否有清晰和深刻的理解。
  • 你是否對你要提交的面試PPT有認真的準備,比如說從哪些維度來介紹自己、哪些內容需要重點突出。

B、措施和建議

  • 面試之前把PPT內容和提交的材料在review一次,熟悉其中的細節。
  • 主動找你的leader和組內的其他資深運維同事,讓他們給你一些通道的經驗。
  • 邀請你的leader或者組內的其他運維同事,做一到兩次模擬面試都是需要的。
  • 主動去了解每個通道評委的特點。其實在面試的時候,是有職責劃分的。其實不光你們需要準備,評委也在做大量的功課進行準備。

2、關於面試技巧

A、全面準確的展現。總的來說,既不能低調,也不能浮誇,實事求是的展現自己。

  • 呈現過去的自己,讓大家瞭解更多一些。以timeline的形式來陳述自己過去的經驗,簡明扼要。
  • 在公司的職責經歷。維護了哪些業務,承擔了什麼職責。
  • 自己的價值體現。可以把自己上次通道面試到當前的貢獻呈現到一些具體的運維價值層面,比如說業務優化、專案建設、技術理解、成本優化等等。

B、自信,輕鬆。一個自信的面貌可以讓你的表現會更好,比如說聲音大一些,表達語氣輕鬆,也要清晰條理。

C、 揚長避短。從技術的維度要求的話,大家很難做到全面,並保證每個點深入,特別是團隊的分工越來越精細的情況下,更難達到。但我們可以做到某些方面的專家。 既然網路我不知道,但我是否有自信可以告訴評審,我們在應用相關的一些方面是專家,比如說業務優化、系統優化、應用優化等方面是專家(注:這個地方一定要 和工作相關)。

D、其他的更多都是自己平時的積累。

3、過去的積累沉澱非常重要

參加面試的人千萬不要以為,在面試前通過一些準備就可以應付得了。剛才也說了,其實這個成長是對自己的負責。另外隨著通道能力的要求越來越高,通過準備來應付我相信是不可能的。那麼我們日常的沉澱到底應該包含哪些?

A、知識點

  • 你對你運維的業務架構是否足夠的瞭解,並能夠識別架構中的優缺點
  • 你對你運維的業務指標是否有足夠的瞭解,並瞭解它的效能容量
  • 當你的業務再放量增長的時候,你覺得你的架構是否能夠支撐
  • 你對業務運維是否有足夠的認識。一定要有相應的認識和理解
  • 你對平時日常業務運維過程中,所碰到的故障,是否有充分的總結和深刻的理解
  • 你是否對例行化的工作感到厭倦,並通過自動化的手段來改善它
  • 你是否對日常運維過程中涉及到的linux系統的知識有全面的歸納整理。就拿系統linux命令來說,不要做一個簡單的使用者,要知道背後的原理。從這次面試的情況來看,很多人對top、vmstat等命令輸出的內容都不能夠足夠的瞭解。需要關注背後的原理。
  • 你是否對日常運維涉及的網路知識有持續的學習。這一點要著重提醒的,因為業務運維同學日常運維的過程中,都去關注業務層面的知識了,很少去關注網路的內容。其實對於一些主流的協議,還是需要掌握,否則但一個故障產生的時候,你抓包之後,沒法通過特徵看問題。
  • 你在日常的運維過程中,是否留給自己時間關注新技術的趨勢。個人認為新技術帶來的驅動力非常強,大家都願意嚐鮮。

B、措施和建議

  • 善於利用公司的知識庫。公司的知識庫其實總結很多同學的好的經驗,把這些經驗轉換成自己的,是一個低成本的學習方法。•對技術問題要深入探索,層層分析,儘量不留技術盲點。很多人說,看過了過段時間就忘記了,其實不是忘記了,是因為你只看到了表面,沒看到實質。
  • 挑選一個重複性的工作,然後不限語言來來改進它,從而降低你或者團隊的運維成本,也加深你對自動化運維的認識。
  • 加強對一些協議的學習,比如說http協議、dns協議、TCP/IP、icmp、VRRP、ARP等等。TCP/IP協議這本書一定要仔細的看,RFC公佈的協議也需要深入瞭解。另外必須通過抓包,加強對這些協議的視覺化理解。
  • 養成勤于思考的習慣。對自己、對團隊、對部門的工作,你都可以思考一下,無論深與淺,都是自己的一份認識。我的習慣是把這類思考和優化點都記錄下來,以便放到下一個KPI指定工作中。
  • 多看看一些好的技術網站和牛人部落格,關注一些新技術,並實際的測試它,如果有機會,最好能應用它 。
  • 多交流,多向標杆同事學習。在交流學習的過程中,其實會有很多好的idea碰撞產生,然後再去論證idea的可行性,在允許的情況下,應用它。

4、影響力非常重要

A、涉及面

  • 在【影響力】這本書講到了多種影響力武器:互惠、承諾和一致、社會認同、喜好、權威和稀缺•大部分我們都想到了權威或者互惠,很多時候忽略了其他的因素。
  • 在小組內、部門、跨部門的影響力

B、措施和建議

  • 在支撐業務運維的過程中,是否有提出原生的解決方案去優化業務,可以結合一些運維的成本、效率、使用者體驗優化等維度來度量這個優化效果。如果取得不錯的成效,更好的影響力是讓這個方案具有推廣效應,這是影響力擴充套件的很好形式。
  • 是否有參加部門的TPG專案組或者自己去試驗一些新技術方案,通過自己的技術預研,輸出一些技術分析報告、現網使用的可行性報告,當然最好的效果就是應用到現網。
  • 平時多參加部門的知識分享,多參與部門知識庫的建設。
  • 需要帶領新人幫助新人成長,擴大在新人中的影響力。
  • 在一些專案類的工作上,能夠很好的規劃、推動、管理整個過程,協調相關干係人朝著一個目標前進,這也是影響力的表現。

5、個人能力的全面平衡,不能瘸腿太厲害。

很多時候,需要你有個全面的知識積累。運維技術知識、業務運維相關知識、軟體知識、網路知識、ITIL體系知識等等。

從運維技術知識來說,你需要了解如下維度:

A、硬體知識,比如說CPU的知識、SSD的知識、raid的知識等等。

CPU的知識,可以深入瞭解一下intel系列不同的cpu架構上的差異,納米工藝的差別,頻率的差異,ticktock機制等等。說到SSD涉及的點就非常的多了,SSD的硬體特性、以及它和硬碟特性的差別,SSD的儲存技術瞭解、SSD結合應用如何優化等等。到RAID這塊也是同樣,要了解各種raid卡的特性,以及各種raid下的原理、效能表現等等,甚至一些新技術的使用,比如說防止資料丟失採用ssd做raid卡快取,採用fastpath提高raid卡的效能等等。其實說到硬體還有很多,大家都可以在平時接觸的過程中,多從業務的角度思考一下。最重要的是能夠按照業務的特點,自己做一些硬體選型判斷。

B、業務運維知識

從通道的要求來看,其實能看到不同的層級對運維的要求是什麼樣子的。但我覺得這個地方需要著重強調三點。

第一、你的業務架構是什麼樣子的,你必須要了解,否則很容易被pk。比如說讓你描述現狀,說出優化的方案。最好還能瞭解一下我們核心業務的架構,比如說中介軟體;

第二、你一定要積累你的業務的效能資料,從資料上把握業務的特徵,越詳細越好。從資料上能看到很多規律,比如說業務壓力情況,使用者訪問規律,讀寫情況、cache命中率情況等等。

第三、對業務運維來說,一定要有自己的思考,我的業務運維到底是做成什麼樣子是好,什麼是不好?自己日常要多思考和總結。

C、軟體知識
可以分成兩個方面:

第一、作業系統。首先一定要找一本經典教材看一下,我的推薦是塔嫩鮑姆《作業系統設計與實現》。大家一定都有一個體會,在大學的時候看作業系統感覺不好,但是現在在回過頭去看,會有很多體會;其次在回到作業系統日常使用層面上。那些命令(top、iostat、vmstat)的輸出,要清楚的知道每個命令的輸出含義,要追根溯源。top命令的資訊量非常大,loadaverage是什麼、使用者態、核心態、軟中斷、硬中斷.這個地方可以用到我之前提到的深入探索、層層分析的方法來給自己多提一些問題,比如說中斷/異常/系統呼叫之間的區別;在我們的伺服器環境中,軟中斷/硬中斷與網絡卡的 bottomhalf/tophalf的區別是什麼?有了網絡卡的上下部分,你就會了解網絡卡處理包的處理方式以及如何達到應用協議棧的?……..會有一堆的問題出現,可以通過網上的文章和作業系統的書來對照理解。

第二、元件層面的。這次面試發現一個共性的問題,是大家對資料庫的掌握,都不深,當然一些同學做過系統研發的除外。建議這塊還是要找一些mysql基本的書籍看看。對於初級運維的人來說,看一下mysql的manual手冊或者《SQL必知必會》,基本上在sql層面上去使用都沒有問題。從高階運維的要求來說,《高效能mysql》是必讀的經典書籍,swartz是mysql領域的專家人物,他寫了很多mysql方面的效能優化文章,非常的深入,另外現在網上mysql的分享特別多,都不要有意跳過。

第三、架構層面的。還是要把自己所學的知識和所理解的業務結合起來,去審視業務架構,地方運維的全面性會是一個很大的優勢。另外平時要多看看各個分享大會上的一些架構分享,學習一下別人的經驗,他的業務架構為什麼要這麼設計?解決了什麼問題?但你的業務碰到類似問題的時候,其實解決方案業界已經都有了。

D、網路知識
其實網路也是我的一個軟肋,因為長期從事應用運維,之前在騰訊,網路基礎設施建設離我們非常遙遠,公司也在倡導服務化的理念,所以很多時候也就疏於去理解網路相關的知識,特別是網路規劃方面。不過在UC,網路離我們很近,是一個非常好的近身學習機會。

除了網路底層建設方面的知識之外,建議在此之上,基於《TCP/IP協議詳解》這本書,深入瞭解主流協議,比如三層、四層以及一些主流的應用協議,另外和操 作系統的學習方法類似,也要結合日常的一些使用來看,比如說traceroute的原理、tcpdump的原理、ping等等。平時也可以多用抓包工具 wireshark去看看抓到的資料包。

E、ITIL體系知識
其實在非專業層面上,我看通道體系裡面有時間管理和專案管理方面的能力要求,這方面的能力培養個人覺得更多的只能通過專案來培養,然後強制自己使用一些時間和專案管理的工具,避免專案過程失去控制。

這個地方我也要強調一下大家可以熟悉一下ITIL的體系,這個體系在運維的很多場景下都非常適用。很多人也許會說,這是一個流程性規範,作用不大。但我想 說,從另外一個角度來看,從這些流程出發,我們如何自動化和規範我們的運維過程,還是有些指導意義的。比如說釋出管理、配置管理、事件管理、問題管理等 等。其實給你梳理了一個運維主線出來了,基於這個主線,我們可以結合我們的運維實際進行落地。另外隨著你對運維的加深理解,也會逐漸去拋棄ITIL的一些 流程做法,比如說成本管理、連續性管理等等。那個時候其實更多的思考是技術層面上來如何達到這個目標,比如說通過虛擬化、服務排程來做成本管理。

F、運維研發

每個運維人需要除了shell指令碼能力之外都必須有高階的運維研發能力,語言建議是python。研發能力是運維想象力的翅膀,平時可以多用它來把自己從一些低價值運維事務的釋放出來,比如說做個數據統計、寫個小工具什麼的。如果更高階的要求,就自己寫一個運維管理平臺,比如說LVS、運維釋出平臺、 CMDB什麼的。

G、DevOps

DevOps從09年左右出來之後,一直在發展變化,特別是雲計算髮展之後,其呈現加速度的發展,運維應該多去深入瞭解其理念,甚至是背後的一些技術思路。

補充一句,建議大家的學習狀態“如飢似渴”一些,不要浮於表面,多思考和總結

附錄:

1、騰訊公司最新版的業務運維的能力要求,供大家參考!

2、應用運維高階工程師的能力雷達圖。在騰訊每個能力方向(比如溝通能力)上都分了4個Level,不同的Level有不同的能力要求。