linux運維工程師的前景怎麼樣?
一、我無意在這裡對比其它方向哪個更有前景一點,就說說Linux運維,可以做些什麼,有哪些方向。
1,運維,基本要掌握的有,作業系統,計算機原理,編譯原理,計算機網絡等等等等。
基於理論性的知識,基礎知識,必須紮實,才能靈活應用。現在網際網路變化之快,今天出來一個新技術,你才剛用上手,別人告訴你淘汰了,又有新產品了。
掌握什麼才能應對這種變化的速度呢?萬變不離其宗,基礎掌握得好,理解了原理,都可以解釋得通。掌握了那麼多基礎的知識,還能沒有發展前景嗎?
2,一家公司的所有伺服器,基礎環境,一般由運維去搭建的。
所有程式設計師跑的程序,必須跑在你搭建的環境中。沒了運維可不行哦。伺服器的root權限掌握在運維手裡,一個命令可以毀了一個網站,一個團隊,重要吧?有專業公司恢複數據?那我進入機房,幾個動作把硬碟物理性損壞,沒救了吧?破壞的事情說多了,說點好的。
運維可以根據現在業務的統計數據,去規劃一下網站的未來發展,需要多少資源啊,當前的高可用做得好不好啊,擴展性有保證了沒有啊。
3,運維團隊,有一個方向,是DBA。DBA就是管數據的。
一個簡單的例子吧,現在的網站,瓶頸一般都在DB上,DBA的其中一個職責,就是提升DB的性能,你看,運維團隊解決了網站的瓶頸問題噢。
DBA還有一個職責,就是保證DB的高可用。網站的程序可以重寫,但用戶的數據不能偽造,如果數據永遠地丟了,那這個網站也就完了。
4,運維團隊,還有一個方向,是運維開發。大概就是,他們在寫著一些,與網站業務不相關的程序,來提高開發的工作效率啦,提高伺服器的性能啦。
兩個網站表面看起來都差不多,只是一些UI的不同,真正可以造成不同的,可能是,網站A只是用了一台伺服器就撐起了B要10台伺服器才能做到的訪問量。
網站A做到了快速自動化測試,節省了大量的時間,網站B的工程師還在忙活的時候,A的工程師們都在娛樂了。這才是不同,質的不同。
二、我是做運維的,已經做了 7年了。提問是發展前景如何,儘可能就這方面做出回答。
前景主要有兩方面,職業前景、薪水前景。
薪水前景:
總的來說,運維的薪水普遍比開發人員略低一點。這是因為上手運維工作比開發門檻略低,市場上有很多運維人員處於「會搭建服務」的狀態。
這種門檻確實比會「粘貼復制」代碼,還要低一點。但是隨著你個人能力的提升,金字塔效應一樣會很明顯。各大公司都需要技藝高超的運維人員,開出的價格並不會比你同齡的開發人員明顯低。
我目前在北京遇到薪水最高的運維人員在 40w(已有)到 50w(希望)一年。且這只是我看到的運維工作部分,就發展來說當你技能、視角不斷提升有可能通過運維崗位開始接觸其他工作,有人提到的 DBA是一種。
而當你熟悉多種技能之後開始統一管理多個部門,則有可能變成多個部門的總監。這都是有可能性的「發展」。而到這個層面的待遇,我個人猜測在 50w ~ 100w年。
職業前景:
職業前景主要還是要從技能來說,我很贊同《程式設計師的思維修煉》中針對技術人員等級的劃分,我覺得最根本的劃分應該參考該書。但我在這裡提一點乾貨。儘可能依照難度排序。
0.熟悉常見硬體配置,了解常見硬體體系
1.會搭建常見服務、理解服務工作原理
2.精通系統工作原理(到這一步已經很少有人能做到了,能過濾掉 80%)
3.熟悉多種發行版本,RedHat系(Fedora , CentOS)、Debian系(Ubuntu)、Gentoo系(LFS,Arch)
4.熟練的腳本開發,Perl,Python,Shell(三選二,或者都會)、自動化技術。
----第一梯度結束 ----
5.集群化的管理思維方式,可以通過 Puppet,腳本等等類似工具配合。
6.性能的極端優化,這個工作必須基於 2的基礎,實際上很少有人能夠做到
7.多種資料庫的原理、優化 MySQL,Oracle,MongoDB,Redis,這裡面夠你消耗掉一半的青春8.高可用性以及負載均衡思維方
—第二梯度結束—
9.與開發人員一起,參與架構設計
—第三梯度結束—
實際上第九點是貫穿在以上各點中循序漸進的過程。但是一定要有這個過程。
以上並不代表運維工作中所有的工作內容。
就技能方面還是希望多參考《程式設計師的思維修煉》一書中提到的,那才是最根本的。
添加了一條 0條,我來解釋一下,我覺得運維由於要直接面對大量的計算機設備,以及 Linux發行版本,所以對硬體體系的了解也要比別的崗位更加重要。
我曾經面試過一個自稱熟悉「虛擬化」的應聘者,當我問:「開啟全虛擬化 BIOS需要做什麼設置麼?」對方一臉茫然,於是我又問,你知道 VT-X麼?依舊一臉茫然。最後我問:「你們以前用什麼牌子的CPU?」答,「不知道。」一共就兩個牌子!你忽悠我一下也好啊。
再說發行版本,先扯開一下話題,在這個問題里面伺服器作業系統應該選擇 Debian/Ubuntu還是 CentOS?請不要相信推薦 Ubuntu或者 Debian的答案…………OK,回歸我要說的,曾經有人討論是否要用 Gentoo來做伺服器系統。
我不想在這裡討論運維應不應該用 Gentoo,我只想說,如果你要用,你必須對你的硬體相當相當熟悉!你才有可能獲得那點性能的提升,這種熟悉包括 CPU,SATA SAS總線等等的細節。所以對硬體設備的理解,是將運維工作做到極致的前提。
結語
我不是很喜歡純靠經驗型的運維,不懂得編程的運維,前進的路很有限。可以轉技術管理,帶隊做項目,但就是在技術方面的路很難走下去。是否有發展前景,在於人,而不在於具體的哪個方向。總之,不管做哪行,要想做好,都得扎紮實實的學,每一步靠自己去實踐。希望我的回答能對你有幫助。