互聯網公司需要什麼樣的運維工程師?

需要著重關注什麼技術?建立怎樣的定位?如何規劃以後的發展?與其他類別公司的區別?


講真這個問題不太好答,因為命題太大了,但受美女同事邀,恩,準備認真的裝個逼。。。

這個問題我不想太糾結於技術,運維相關的技術太多了從網路、主機、存儲,再到操作系統、中間件、資料庫、虛擬化,再到自動化運維,雲平台、docker太多太多,我相信沒有一個人能完全精通的,發展到最後無非運維在技術方面無非分兩種,一種是一英寸深一英尺寬,另一種正相反。。。而不同階段、類型、體量的互聯網公司的運維模式是不一樣的,需要的工程師技能也是不一樣的,所以回答這個問題,先要把互聯網公司運維方式,先分分類。

這個時代,大多數公司的運維都是圍繞著雲計算的運維,我認為基本可以分成以下三大類:

1、公有雲運維;

2、私有雲運維;

3、在公有雲上運維。

下面一個一個講講:

1、公有雲運維

運維內容:由於公有雲都是給客戶提供的底層基層架構服務的,所以從運維內容上來說比較偏基礎架構的運維,比如IDC、網路、系統以及一些雲產品等等,不太關註上層的應用,因為上面的應用都是客戶的。。。

運維技能:公有雲由於體量大,架構複雜,因此需要極強的運營規劃能力, 並且由於運維工作量大,複雜,所以分工會比較細,比如IDC運維、網路運維、、系統運維、應用運維(主要是雲產品)以及為運維自動化配備的運維平台開發團隊。而對於以上的各條線的人員要求基本上是一專多能,對於本領域的技術要非常精通,並且也要熟悉/了解其他領域的技術,比如網路運維除了要精通網路技術以外,還要熟悉/了解linux、主機、存儲、SDN等技術,這樣可以減少部門之前的溝通成本。

最後在說一下,我覺得未來對於基礎架構的運維會分向兩極化,就是一般企業不需要太專業的基礎架構運維,而公有雲則需要非常資深的基礎架構的運維,所以想在基礎架構運維方向有所發展的同學可以首選公有雲。

2、私有雲運維

運維內容:私有雲一般都是服務於企業內部的,並且一般都是體量中上等的互聯網公司,擁有自己的機房、自己的基礎設施,並且有實力構建一套私有雲,其相對於公有雲來說體量不會太大,基礎架構不會太複雜,且運維重心會更加以業務/應用為核心,可能會更加關注一些DB、WEB應用、DNS、LB、CDN、劫持等應用層的問題。

運維技能:一般比較大的私有雲,職位分工也是比較細的,分工基本和公有雲差不多,但是由於體量相對小,所有人數也相對少一些,在基礎架構方面的技能要求略遜於公有雲,但是其需要更精通應用運維,比如如何抗住秒殺、搶購,比如如何加速APP的訪問等等。對於比較關注應用運維的同學,這類企業是比較好的選擇。。。

3、在公有雲上運維

運維內容:主要是一些小型的互聯網公司,尚在創業階段,沒有經濟實力構建自己的數據中心,通過購買公有雲服務的方式來構建自己的IT架構。這類公司的運維不必關注基礎架構,只要把精力集中到應用上去就行,這個應該是未來的趨勢,現在除了一些創業公司以外,越來越多的中型甚至大型公司不想投入人力、財力去建設自己的基礎架構,而會去選擇比較優質的公有雲服務。。。

運維技能:這類公司不需要類似於網路、系統工程師的人,更多時候需要的是全能型的應用運維人才,幾乎是各個方面都需要略懂一二。有些創業公司早期階段甚至沒有運維工程師這麼個崗位,而是由開發人員來擔任。

總結以上三種,公有雲和私有雲一般需要一專多能型的運維人員,公有雲更偏重基礎架構,私有雲更偏重應用架構,運維的重要性都比較強,並且公有雲和比較大型公司的私有雲運維都是比較重視流程建設、以及系統化建設的,畢竟海量運維靠人是不行的。而第三種則更加需要全能型的人才,在企業初期可以搞得定各種各樣的問題,但是這個階段產品和應用才是第一要務,運維的重要性相對比較低。

最後說下,個人對運維未來的看法,

運維未來的方向是運營,這個基本也是運維界的共識,空洞點將就是要讓運維直接為業務服務,給業務創造價值。落到實處就是:通過自動化加快運維效率,減少人力成本以及人為失誤;通過系統化,構建一個更加穩定的IT架構,通過數字化,進行質量管理、容量管理、趨勢分析,為應用優化提供數字化支撐。

如果要說個人的發展方向,這個很難說,但是有一點是肯定的,以後不會寫代碼的一線運維應該是混不下了吧。


這個時候王婆賣瓜一下自己的《網站運維技術與實踐》是不是恰到好處……


需要專業而體系化的運維工程師,那就看看我們專業而體系化的學習建議吧!

Linux運維學習階段,需要分為四個階段,linux初級入門-linux中級進階-linux高級提升,和資深方向細化。

第一階段:初級入門

初級階段需要把linux學習路線搞清楚,任何學習都是循序漸進的,所以學linux也是需要有一定的路線。

個人建議學習的路線如下:

初級入門:

1、Linux基礎知識、基本命令(起源、組成、常用命令如cp、ls、file、mkdir等常見操作命令)

2、Linux用戶及許可權基礎

3、Linux系統進程管理進階

4、linux高效文本、文件處理命令(vim、grep、sed、awk、find等命令)

5、shell腳本入門(可邊練習邊學習)

第二階段:中級進階

中級進階需要在充分了解linux原理和基礎知識之後,對上層的應用和服務進行深入學習,其中說到服務肯定涉及到網路的相關知識,是需要花時間學習的。

1、TCP/IP網路基礎(差不多CCNA、NP的知識就夠用)

2、Linux企業常用服務(如dns、http、ftp、mail、nfs等)

3、Linux企業級安全原理和防範技巧(系統性能/安全、安全威脅模型和保護方法

4、 加密/解密原理及數據安全、系統服務訪問控制及服務安全基礎

5、iptables安全策略構建

6、shell腳本進階(主要是結合一些應用,寫一些案例)

7、MySQL應用原理及管理入門(能管理和搭建一個個人博客站點)

學到這裡,掌握的基本技能,已經夠用了,已經能做一些基礎的運維工作和簡單維護了。

第三階段:高級提升

1、http服務代理緩存加速(其中主要學習varnish、nginx緩存系統,要對CDN的知識有所了解。)

2、企業級負載集群(其中主要學習nginx、haproxy、lvs要對主要知識熟練掌握,對負載均衡演算法有清晰認識,)

3、企業級高可用集群 (其中需要對keepalived,heartbeat等進行深入講解)

4、運維監控zabbix詳解(主要是zabbix、cacti、nagios等監控系統,現在用的比較多的是zabbix)

5、運維自動化學習(需要學一些開源運維自動化工具的使用如ansible、puppet、cobbler等運維自動化工具)

能掌握到這裡,基本能處理搞定很多工作了,可以去面試高級運維工程師,差不多薪資能達到12-18K左右

第四階段:資深方向進階

1、 大數據方向(需要對hadoop、storm等常見開源大數據系統需要深入了解)

2、 雲計算方向(主要是openstack這套東西,當然像一些kvm等虛擬化技術,也是需要掌握的,現在docker也比較流行)

3、 運維開發(主要是python運維開發)

4、 自動化運維(在之前自動化基礎上做深入)

5、 運維架構師(主要需要廣度,差不多5年左右以上經驗,可以擔當此職位)

另外我們整理了一個學習知識庫,你可以看一下:

【超全整理】《Linux雲計算從入門到精通》系列實戰筆記全放送 | Linux運維部落


做項目就是上架 做運維就是下架。


小弟,入行沒多久也談談自己的看法,運維需要很多方面的知識,比如系統、網路、資料庫、存儲、腳本等方面的知識,關注的技術點是根據自己負責的業務決定的,根據負責的業務可分為:系統運維、網路運維、應用運維等等,系統運維關注的是機器有沒有宕機,最怕的就是拔光錢,網路運維關注的是網路通不通,有沒有做好冗餘,最怕的就是線路的切割,應用運維主要維護線上業務的穩定,及時響應處理現網case,並總結問題形成解決流程,最怕的就是新特性的發布,希望永遠不動配置。有句笑話就是藍翔的鏟子,電信的剪子。

定位:我的建議就是先進入這個行業,根據自己的興趣和能力再決定選擇哪個方向。

運維以後的發展我覺得分為三個方面;先保證業務的穩定,出現問題快速定位並解決、之後是運營之道通過自己的經驗規避掉一些問題的發生、針對業務的個性化開發能力,解決一些痛點問題。

互聯網公司跟其他公司的區別,我的感受是互聯網公司,偏年輕化更活躍彼此之間的相處很愉快,因為業務的發展迅速,技術上的提升得到的更高。


隨便說兩句,其實我是軟體開發部門的,2010年碰巧在某個互聯網巨頭做過1年的運維,我只有ITIL v3認證,比較老舊了,但也算知道一點點吧,呵呵樓下輕拍

我覺得運維工程師的作用主要有以下幾種

1 管理伺服器,硬體和軟體環境(運維里最最底端的工作,好處是各行業無縫銜接,你在谷歌做過,轉手跳槽賓士一點問題都沒有,缺點么,工資低,還有在大型外企這個職位往往都被三哥壟斷著)(我沒做過這方面,和我對接的vendor倒是做這個的,如果說錯請大家指正)(多說一句,在我以前的公司,call center是歸到客服而不是運維的)

2 部署和升級,打patch,這裡指的是你的互聯網產品的部署升級,什麼操作系統啊,資料庫的升級和部署請參見第一條

3 分析運行過程中的數據模型,錯誤日誌,防患於未然,還包括了處理call center解決不了的問題,(通常,比如你使用某互聯網產品出了問題,你會第一時間聯繫客服,有一些比如卡死啊,激活啊,客服可以直接解決,其實客服只是使用一個開發好的後台軟體實現比較容易的操作,許可權也非常低,客服解決不了的,就會用各種方式傳遞到下一級,就是我們說的level2,這當然是運維需要關心的)

4 把3里發現的一些相對好解決的問題通過一些腳本語言解決,包括但不限於資料庫直接修改,其實這裡有太多工作,不細說了,而3里發現的不好解決的或者雖然短時間解決了但是程序中依然存在的bug和開發部門溝通,讓他們在下一版本中修復

5 災備,提高你的產品的安全指數,應用更先進的災備技術,資料庫鏡像啊,集群啊,loadbalance啊,冗餘伺服器啊,這也是個大課題

6 出現突發情況的時候啟動應急預案,24小時oncall,很多人以為運維就是干這個的,其實,我們更希望這事永遠別發生

繼續說人員分配,我覺得這裡西方的思想永遠比中式思想成熟,那就是,任何錯誤和災難的發生,都不是人的問題,而是制度的問題。制度和流程強烈推薦學習一下ITIL

說幾個其他的,根據你的測試範圍和測試類型分配你的環境,我過去的公司推薦3層環境

A. product環境,就是真正的生產環境,你所有的用戶數據都在這上面,操作起來也最複雜,請嚴格把運維工程師分類,不要讓有操作許可權的人(operation)介入任何的數據/邏輯的修復和解決,而是讓經驗豐富但是沒有操作許可權的人(level2)下達派工單給(operation)team來完成上面的第3,4,5,6項目,(operation)team只負責獨立完成1和2,注意,A環境最重要的就是數據,所以任何調試/分析,請不要在A環境上做,可以考慮遷入B環境。再次注意,所謂的BETA(不刪檔)也是在A環境的

B. 第一層模擬環境,注意,這裡需要完全模擬生產環境的情況,包括網路情況(一摸一樣的網路環境,除了URL),SSL,存儲災備,模擬用戶數據,它的作用就是你所有要在A環境上進行的操作,比如在你新補丁或者新版本上線前,所有的部署/安裝,都要在B環境上模擬(n)次,以保證整個部署沒有任何問題,另外這裡也承擔了一些調試A環境錯誤的責任(切忌不要太多),許可權問題請吧這個環境更多的交給(level2),但是operation team始終要負責職責1和2

C. 第二層模擬環境,推薦用虛擬機搭建,所有的硬體都可以模擬,這個環境的用途才是用來做整體 integration測試的(注意各個模塊的單元/feature測試不要再這裡完成,否則team一大你會發現你陷入了一個焦油坑),由於這個環境不鏈接外網,所以你不用擔心新版本會泄露,由於虛擬機有snapshot,你可以放心大膽的做各種測試

運維工程師的定位:

你要考慮自己到底是要做operation呢,還是偏重level2,level2需要的軟體工程師的所有技能,注意是所有,code,資料庫編程和分析,資料庫管理,網路開發,網路維護

operation則是完全另一個方向,操作系統,資料庫管理,網路安全,WIFI,各種認證


互聯網的運維現在分類趨向多樣化,我原來是做系統運維的,隨著業務需求網路運維也要跟著做,後來隨著對公司業務的慢慢熟悉應用層面的運維也要有一定的應用維護能力,網路基礎運維和系統基礎運維應該是一個互聯網運維者的基本要素。要求出現問題需要明確快速的對問題進行初步的測試和判斷,同時能快速提供有限的解決方案,當然,積累到一定經驗就可以提前部署預防一部分常見問題,所以,運維經驗也是很重要的。總結一句話:能把一個問題帶來的的損失降到最小就是互聯網需要的運維!


負責維護並確保整個服務的高可用性,同時不斷優化系統架構、提升部署效率、優化資源利用率。


1、開發能力,這個很重要,因為運維工具都需要自已開發,開發語言:c/c++(必備其中之一)、perl、python、php等、shell(awk,sed,expect….等),需要有過實際開發經驗,否則工作會非常痛苦。

  2、應用方面需要了解:操作系統(主要是linux、bsd)、webserver相關 (nginx,apahe,php,lighttpd)、資料庫(mysql,oralce),還有類似系統優化,集群方面的東西。

  3、網路、安全,存儲等需要相當了解。


。。。


良好的職業道德和素養,紮實的基本功,自學能力,對技術的熱愛,


推薦閱讀:

互聯網運維工作有趣嗎?
系統工程師和系統運維是兩個不同的職位嗎?
都說docker是運維大神,想了解一下docker在web server運營上都有哪些用武之地?
2015 年 5 月 28 日攜程無法訪問的具體原因是什麼?

TAG:互聯網 | 運維 | 運維工程師 | 工程師 |