運維開發工程師的價值&前景?
有人說運維開發是輔助的輔助(前設條件是他們認為運維是開發的輔助),
也有人覺得運維開發存在的意義就是讓運維人員普遍性,重複性的操作規範化、流程化、自動化起來,最終讓程序來做,讓平台來做運維人員的工作,而最終催生出來的工具大有替代運維人員的勢頭,特別是雲服務時代的到來讓傳統的運維人員危機感更加強烈,當然,不管哪個行業只要了解的全面,了解的透徹,總會有市場的,在大家眼裡運維開發是個什麼樣的存在,未來的前景或者說終極價值是什麼呢?
基本同意 @陳一夢 的見解
我正好最近以產品經理的角色為運維團隊做自動化系統,包括CMDB、持續集成、批量控制等主要功能。
而運維開發團隊中有本來就做運維開發的,也有本來做其他業務(電商後端)的開發轉來協助運維團隊的,和他們協作一段日子後總體感覺如下:
* 運維開發首先是一個程序員,不是運維工程師;
* 一個好的運維開發需要包含 「運維理解」+「開發能力」;* 對「開發能力」的技術要求低於其他業務形態(如遊戲、電商、搜索等);* 對運維業務的理解難度會低於電商、遊戲等業務形態,即對「運維理解」的要求不高;綜上所述,運維開發是一個深度不算太深的職業分支,而現在之所以對運維開發需求量熱起來了,主要由於老一輩的資深運維普遍研發能力有限(比如我 T_T ),當我們有開發自動化系統的需求時候往往需要程序員的協助,但是,程序員做出來的系統對於運維工程師來說不太好使。
這時候有部分運維工程師升級了研發技能,變成了運維開發,把好使的運維繫統做出來了,贏得了運維團隊的好評,大家都為「運維開發」點贊。
所以,大家把 「好使的運維繫統」 和 「運維開發」 等價起來,這是一個很大的誤區。
其實「好使的運維繫統」 也等價於 「運維理解」+「開發能力」,其實這兩種能力是可以分離的,不一定要強加在運維開發工程師一個人的身上。
當資深運維能把運維自動化的需求細緻的文檔化下來,把自動化系統的設計、架構等構思好,這就是最好的「運維理解」,這個時候把這份靠譜、好使、細緻的需求文檔交給具備強「開發能力」的程序員,就可以得到最終「好使的運維繫統」。
類似其他業務形態的開發過程,需要產品經理(策劃)+程序員兩種角色分離,不會說需要會寫代碼、又會出需求的產品經理。
所以說運維開發只是一個過渡產物,當運維需求被理解、分析得足夠透徹,以及資深運維獲得了「產品經理」能力後,運維開發就是一種普通的開發分支,按需求文檔編碼即可,再高級一點的話,可以替代資深運維出需求,變成運維產品經理,這是我心中的終極狀態(還有更高級的總監、CTO等,這就不多扯淡了)。什麼是運維開發:
運維還是那個運維,研發還是那個研發。隨便哪邊跨界了下就叫做了SRE DevOps 或者運維開發,這個和前端容易成為全棧一樣。都是稍微跨界的結果。也就是你比別人多會一些東西,然後變成了另一個工種,嗯,應該就是這樣的。誰往哪邊跨的問題:
運維不會研發,估計離淘汰不遠了。當然你要喜歡臟活累活可能還能挺一段時間。研發不會運維,淘汰倒不至於,但是容易讓運維吊打,所以還是會點的好。至少別給運維大哥添麻煩。運維開發意識流:
當然,運維哥們要是抱著「老闆幫我招了一個運維研發來減輕我們的負擔」這種思想的話,運維開發只不過是高級一點的運維無疑了。這個運維哥們甚至團隊不是被研發吊打就是最後自生自滅(懂業務的除外)運維開發要是抱著「哥是研發,運維on call啥的跟我毛關係沒有,哥不用考慮運維成本和可維護性」這樣的思想的話,到最後做的東西也就是增刪改查的cms系統了。
不以結婚為目的戀愛都是耍流氓,同理:不以運維為目的運維研發同樣也是耍流氓。
總結下:
所謂的「終極」應該是,牛逼的運維會研發,或者研發具有運維意識。那時候運維研發估計也沒有什麼必要存在了,現在都是過渡期間,等某些廠商或者雲或者人員技能提高了之後,這個職位就不存在了。那個時候就會回到第一句話上:運維還是那個運維,研發還是那個研發。運維開發實際上是傳統運維人員的升級版,是為了減輕現有運維人員的日常運維壓力存在的,再搞一搞可能就是架構師了
技術的發展會導致運維這個崗位所需人力數量在不斷下降。建議擴充自己的技能集合,培養其他方面的能力,以防將來……(你懂的)
終極這話誰敢說啊~~
中極的話,離職創業啊~~你看現在雲計算浪潮多少提供運維開發領域的SaaS服務的公司就知道了~當然背上有房貸的運維開發也可以像我這樣,找個運維開發領域的創業公司當PM……即實現讓天下沒有難做的運維的夢想,又不太發愁明天公司掛了房子被收走……(其實就是自己膽小)在雲計算主流廠商做這個,那恭喜你。在小公司做這個...建議要麼熟悉業務,要麼熟悉業界新技術。雲計算跟docker對運維衝擊很大..要提早做好準備
運維工程師的終極目的是讓自己失業,因為全都自動化了
在公司呆了兩年,有一些運維的知識了吧,目前維護著一套金融雲私有雲的自動化系統;自己覺得自己算不上運維開發工程師,因為運維的技能也不強,開發的技能也不強;有點不倫不類的感覺;
但是如果能夠成為一名運維開發,還是非常厲害的;
我理解的運維開發具備的技能:
- 知道怎麼搭建DevOps,知道如何使用git、jenkins/bamboo、rpm等技術和軟體去更高效的解決那些傳統運維的工作;
- 知道常用的運維命令,出錯了,可以快速定位自己的系統到底是哪裡出了問題
- 知道什麼是IAAS,SAAS,PAAS;什麼是CMDB,什麼是部署單元等等,一些關鍵字信息;
- 知道怎麼做自動化功能,開發一些介面去對接自動化的功能;比如說調用puppet自動實施一些腳本,軟體包等,調用openstack,vmware,公有雲平台供給虛擬機,管理虛擬機;網路自動化dns的自動實施,負載均衡的實施等;
- 從機器供給,安裝操作系統,開發,部署發版,上線維護,一條龍的東西都得會;甚至需要做一些運維的需求分析的工作;
所以運維開發的工作比較雜亂,不像簡單的開發系統的去學習開發知識;運維的變化也是非常的快,之前的傳統運維都是靠人堆上去的,在互聯網時代的到來,不可能按照人肉的方式去實現這些,自動化技術越來越快,所以一些運維人員的命運也實在堪憂;
退一步講,運維開發需要你不斷地去學習知識,經常去翻看官方文檔,像資料庫,中間件、包管理、資源管理等很多的東西都需要去學習,去了解;即使你付出了這麼多,你在運維這個行業裡面的競爭力就會提升很多,並且這個行業,至少未來幾年之內是不可能淘汰的;
若有錯誤的地方,請批評指正,謝謝。
做運維如果一點研發不懂確實很被動,但我認為利用成熟的自動化運維工具是大勢所趨,不可逆轉,運維的本質是要服務於業務不能為了運維而運維,運維人員與其在研發上著力倒不如提高業務能力,做個懂業務運維才是王道,才能讓老闆離不開你,才能在職場上立於不敗之地,要努力脫離一些瑣碎的日常工作,把這些活交給自動化工具,也不要什麼工具都想自己開發,這樣效率太低得不償失,有很多成熟的商用或開源的產品可用,比如監控軟體可以用nagios 監控易等,自動化部署工具也有好多,好的商用軟體總體使用成本比開源要低。
運維開發工程師首先他是一個開發工程師,但作品是為運維服務。所以這就要求這個工種要具備很強的開發經驗的同時還要具備很強的運維經驗。所以運維開發具備先天的其他開發或者運維不具備的優勢。沒有運維經驗的人在架構設計和很多方面都會只注重項目不注重長遠,或者說只根據自己的以往項目經驗出發。運維經驗豐富呢考慮會很全面,看事情會考慮的更長遠,會給未來運維的人做出指導,配合和工作交接上會更有優勢。而不會開發的運維雖然運維經驗法豐富,但還是過多時候從事著重複的勞動,沒有把自己的經驗轉化為產品,所以最終會被自動化和後來的年輕人所替代,最終只剩下少部分高級牛逼運維。所以運維開發是個方向,而且是要先熟悉運維後轉向開發的發展方向
運維開發是一個開發分支,但它是建立在運維理念基礎上的工種,個人認為:不去了解公司業務(運維)環境(換種話說,就是不把自己當做運維人)的運維開發,也不是一個合格的運維開發。
至於價值和前景,要看你在什麼平台環境中,你說國家安全局和一個小公司的運維開發的價值和前景一樣嗎;要看你能不能夠做到TOP層,在這個層次的價值和前景能一樣嗎;要看自己的體力、能力和素養,能不能支撐自己的價值發揮和前景實現。最後問問自己的追求和夢想是什麼,因為這是驅動我們堅持和前行的內動力。
運維還是儘快轉行
推薦閱讀:
※想從事運維開發,有什麼好的自學 CentOS 和 Python 學習方案?
※Linux 運維一天的工作時間是如何度過的?
※大型 IT 公司如何防止運維偷窺和篡改資料庫?
※一個網站的用戶資料庫被入侵的方式有哪些?運維和管理人員如何防範?
※互聯網公司需要什麼樣的運維工程師?