云原生時代的DevOps平臺設計之道

開發人員與運維人員是 IT 領域很重要的兩大人群,他們都會參與到各種業務系統的建設過程中去 。DevOps 是近年間火爆起來的一種新理念,這種理念被很多人錯誤的解讀為“由開發人員(Dev)學習一大堆新的技能 , 從而掌握運維人員(Ops)該處理的事情” 。然而能力越大 , 責任越大 , 當維持生產環境穩定為要位的運維責任落到開發人員的肩頭時,多數程序員發出了 扯淡的DevOps , 我們開發者根本不想做運維! 的呼喊 。那么在云原生時代,到底應該怎樣達成 DevOps 的體驗呢?我的觀點是由平臺工程來銜接這兩大人群,各自做好各自領域的事情 。
令人“厭惡”的DevOps首先,我非常希望你能先看一看引言中提到的 扯淡的DevOps,我們開發者根本不想做運維!這篇文章 。這篇文章從亞馬遜云科技社區參與負責人 Emily Freeman 的一條推特入手,觀察了很多留言后,得出了文章標題這種類似咆哮一般的結論 。從絕大多數回復這條推特的IT 從業者的口中,我聽到了對于將運維職責強加給開發人員這種 DevOps 體驗深惡痛絕 。
開發人員對于 “誰構建,誰運行” 這種大義凜然的話表示無感 , 對于學習運維領域的新技能,亦或是將自己加入輪班支持人員的行列都感覺力不從心;運維人員的本職工作被剝離之后,則對本專業的前景惶惶不安 , 會害怕運維團隊的重新洗牌 。
開發與運維,的的確確是兩個不同的工種,有著類似“車床工與管道工”的區別 。
開發人員運維人員專業技能開發語言、開發框架、中間件、數據庫硬件、操作系統、網絡、存儲、虛擬化日常工作理解需求、開發文檔寫作、開發代碼安裝部署、監控、日志、問題排查、變更文化標簽自由、創造保守、責任一些公司認為從表格中把大量的運維人員管轄的工作 , 一股腦的“左移”給開發人員就是 DevOps 。在專業技能和日常工作領域帶來的缺口,可以通過開發人員的勤勞學習加以補足,然而在文化標簽領域的沖突,將會是導致開發人員厭惡這種 DevOps 體驗的根本原因 。
DevOps 的真意與平臺工程在我看來 , DevOps 的真意是利用軟件工程思維,解決復雜且繁重的運維問題 。真正適合做 DevOps 工作的人,是具備一定軟件工程能力的運維專家,在這里 , 對運維能力的要求更重要 。
DevOps 工程師,可以通過設計或選擇一款平臺產品,來將復雜的運維工作抽象為產品化的運維特征 。從這個角度上講,開發人員將會是這個平臺產品的用戶,他們能夠在不了解復雜基礎設施的情況下,操作并維護應用程序 。DevOps 工程師,應該是更懂開發人員需求的運維工程師 。
在追根溯源,找到了這條推特之后,我了解到了更多 IT 業內人士對 DevOps 的看法,從中找到了很多和我有共鳴的聲音 。
To me that's a sign we haven't made ops intuitive/easy enough for most devs to be able to handle it.
對我來說,這表明我們還沒有讓運維變得足夠直觀/簡單,以至于大多數開發人員都無法處理它 。
?—— @Liz Fong-Jones (方禮真)
The "platform" should do the heavy lifting ops, lacking a real platform the ops team (DevOps/are/platform team) is the platform.Devs can then focus on the application level operations of their apps using the knobs and levers provided by the platform.
“平臺”應該做繁重的運維,缺乏真正的平臺時運維團隊就是平臺(DevOps/are/platform team) 。然后,開發人員可以使用平臺提供的旋鈕和杠桿專注于其應用程序的應用程序級操作 。
?—— @pczarkowski
IT 行業近年來的發展趨勢,一直是不斷以平臺能力的提升,來解決復雜基礎設施的使用問題的 。最開始,程序開發人員需要面對的是一臺物理服務器,在缺乏運維能力的情況下,會由運維人員處理有關服務器的一切 , 包括操作系統、網絡配置等等 。而到現在,程序開發人員已經很少需要跟服務器打交道,甚至我見過的很多程序員并不掌握任何有關命令行的知識,就可以面向服務器開發應用系統 。這種轉變讓程序開發人員更加專注于業務代碼本身,不必分神去做一些繁重且瑣碎的運維事務 。帶來這種轉變的,是處于發展過程中的平臺工程,在讓基礎設施不斷變得簡單易用 。
云原生時代的DevOps平臺設計之道

文章插圖
最原始的裸機時代,并沒有開發運維之分 。從底層基礎設施,一直到最頂層的業務系統都是同一批人在處理 , 這一批老程序員可以被稱為真正的全棧工程師 。但毫無疑問,每一個開發人員,都希望能夠拋卻運維工作,更專注于自己開發的代碼 。

推薦閱讀