DevOps 工程師成長日記系列一:必備知識與技能組合

CODING發表於2019-06-13
原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737
原文作者:Igor Kantor
翻譯君:CODING 戴維奧普斯

寫在前面

據 StackOverflow 2019 開發者調研結果公佈:DevOps 專家的薪水僅次於研發管理者以及 SRE,位居第三:

圖片
資料來源:https://insights.stackoverflo...

從 DevOps 專家的熱門度來看,越來越多的企業意識到需要將 DevOps 從口頭落地到日常研發流程中,實實在在給企業帶來研發效能上的收益。在這場無聲變革當中,專業的 DevOps 工程師必不可少。CODING 針對想要從事 DevOps 相關崗位的開發者精心策劃了 DevOps 工程師成長日記系列,希望這系列文章能夠給相關同學帶來學習路徑上的啟發。接下來讓我們進入到翻譯內容的正文:

目標讀者

  • 你是否正在尋找一條 DevOps 轉型的快速之道?
  • 你是否是一個受過傳統訓練的運維人員並且想要體驗 DevOps 領域的相關內容?
  • 或者你已經學習了一段時間相關技術,現在只是想要尋找職業上的轉變但不知從何下手。

如果屬於上述情況的話,就繼續往下閱讀吧,接下來讓我們一起看看如何在六個月內成為一名中級 DevOps 工程師。如果你已經從事多年 DevOps 相關工作,也仍然在尋找關於 DevOps 工程師的有效認可方式,那麼你也是該系列文章的目標讀者。

DevOps 工程師新定義

什麼是 DevOps

關於它的定義與由來你可以 Google 到各種前沿理論,但是大部分的解釋都是長篇大論,讓人喘不過氣來。看看我會怎麼做——我會幫你節省滑鼠的點選次數並且把關鍵資訊摘出來:
DevOps 是一種研發團隊同甘共苦、患難與共交付軟體的方式。

定義就是這麼簡單,但它意味著什麼?
這意味著,傳統意義上的開發人員(編寫軟體的人)的目標與運維人員(執行軟體的人)的目標大不相同。例如,作為一名開發人員,我希望儘可能快速地開發更多的新特性。畢竟,這是我的工作並且是客戶需要的。然而,如果我是一名運維人員,我就會希望新特性越少越好。因為每一個新特性都意味著新的變更,而變更就意味著風險。
由於這種目標錯位,DevOps 誕生了。

“系統工程師 2.0”

DevOps 嘗試將開發和運維融進一個研發小團隊裡,由這個小團隊共同承擔開發、部署、努力創造軟體收入的痛苦、責任(相反也可能是獎勵)。
現在,純粹主義者會告訴你沒有 DevOps 工程師這樣的職位,“DevOps 是一種文化,不是一種角色”, 他們會這麼說。好吧,在技術上他們說的是正確的(最糟糕的那種“正確”)。但是正如經常發生的那樣,這個術語已經超越其原始含義。

  • 現在,成為 DevOps 工程師就像“系統工程師 2.0”。
  • 換句話說,DevOps 工程師瞭解軟體開發生命週期,並通過軟體工程工具和流程解決傳統運維挑戰
  • DevOps 最終意味著建立一個數字流水線:從開發者的筆記本中獲取程式碼直至產生收益的全過程。

圖片

作為一個職業選擇,公司給 DevOps 相關崗位的薪資待遇都相當不錯,幾乎每家公司推行 DevOps 時都這樣做或聲稱這樣做。無論哪裡的公司,DevOps 相關的工作機會都很豐富,它依然會是未來幾年內有趣且有意義的工作崗位。
溫馨提示:要警惕那些聲稱招聘DevOps 團隊”或“DevOps 部門”的公司。嚴格來說 DevOps 終究是關於文化和交付軟體的方式,而不是配備新的團隊或部門。

免責宣告

現在,讓我們把肥宅快樂水放在一邊,考慮以下幾點:
你聽過這句古老的格言嗎 ——“世上沒有初級的 DevOps 工程師。” 它其實是 Reddit 和 StackOverflow 上的流行比喻。這意味著需要多年的經驗,結合對工具的紮實理解,才能最終成為真正有效的高階 DevOps 從業者。遺憾的是,沒有捷徑可行。
因此,這篇文章不是 DevOps 偽裝指南。我不認為存在能夠假裝成一位具有幾個月經驗的高階 DevOps 工程師的方法;或者在幾個月中掌握原本需要數年才能精通的快速變化的工具,和對方法的深刻理解,並且這些問題目前還沒有完全解決。然而,大多數公司都使用大同小異的(或者主流的)工具和概念選單,這些就是文章的主要內容。
工具與技能不同,因此在學習工具時,請確保不要忽視自己的技能(面試,網路,書面溝通,故障排除等)。
最重要的是,不要忘記我們追求的目標——建立一個全自動的數字化流水線,將創意轉化為創收。

DevOps 學習路線圖

廣度優先逐層遍歷

掌握以下內容你就可以誠實地稱自己為 DevOps 工程師。如果你對“DevOps”相關的 title 反感的話可以叫自己“雲工程師”。下面的路徑圖代表我(可能是在這個領域工作的大多數人)認為的一個稱職的 DevOps 工程師應該掌握的技能。這只是一種意見,肯定會有不同的看法,沒關係,我們並不追求完美,先把基礎打好。
注意,你的目標是廣度優先、逐層遍歷。先從基礎開始,學習藍色標記的技術(Linux | Python | 騰訊雲/阿里雲),然後如果時間允許或者就業市場有相應需求,追蹤紫色的技術(Golang | AWS/谷歌雲)。
(譯者注:原文的工具介紹是針對國外開發者,此處為了方便國內開發者實踐譯者進行了部分調整)

圖片

老實說,上述的基礎層是你要持續學習的東西。Linux 很複雜,需要數年才能掌握;Python 需要持續練習才能保持最新狀態;公有云發展如此迅速,以至於你今天所知道的事情可能只是它的冰山一角。但是,一旦你有一個合理的知識基礎,就擁有了進入現實世界的技能組合。下面總共有 6 個藍色列,建議每月學習一列。

圖片

為什麼沒有測試

上面的學習路線中明顯缺少 Test,這是有意為之的。編寫單元測試、整合和驗收測試並不是一件簡單的事情,傳統上是開發人員的責任。“測試”階段的遺漏是有意的,因為本路線圖的目標是快速獲取新的技能和工具。筆者認為缺乏測試專業知識是 DevOps 就業一個微不足道的障礙。
另外,請記住,我們不是在這裡學習以及喋喋不休一大堆無關的技術。我們需要對完整的工具有比較充分的理解。將這些工具結合在一起,就可以講述一個連貫的故事 —— 端到端的流程自動化。
你肯定不希望學習一堆工具後就停下來。工具變化很快,概念變化得相對緩慢,因此你要做的是使用工具作為進階概念的學習輔助。接下來,讓我們再深入探討下 DevOps 學習路線圖。

DevOps 必備基礎知識

在圖一的“Foundation”下,你看到的是每個 DevOps 工程師必須掌握的技能。你會看到三個行業主導的支柱:作業系統,程式語言,公有云。這些東西不會是一蹴而就的技能,你必須掌握以及持續學習,以保持相關性並及時瞭解最新情況。接下來我們逐一介紹它們:

  • Linux

它是幾乎所有軟體執行的地方。有人會問:能完全處在微軟生態系統中成為一名出色的 DevOps 從業者嗎?當然可以,沒有任何法律要求用 Linux 來實現一切。
然而請注意,儘管所有 DevOps 相關事情都可以通過 Windows 完成,但這個過程更加痛苦,而且工作機會要少得多。現在,你可以放心地預設在不瞭解 Linux 的情況下無法成為真正的 DevOps 專業人員。因此,Linux 是你必須學習和不斷學習的東西。
最好的方法是在家裡安裝 Linux( Fedora 或 Ubuntu)並儘可能多地使用它。你會破壞作業系統上的東西,會被問題困住,然後你不得不解決所有問題,在這個過程中,你將學習到 Linux 相關的知識與技能。作為參考,在北美紅帽系統更為普遍,因此從 Fedora 或 CentOS 開始也是 OK 的。如果你在猶豫是否該用 KDE 或 Gnome 版本,就用 KDE 吧,Linus Torvalds 用的就是它 : )

圖片
Linux 主流發行版本 Google Trend 對比(近 5 年資料)

  • Python

Python 是如今占主導地位的後端語言,易於上手,被廣泛使用。Python 在 AI 以及機器學習領域使用非常普遍,所以如果你想要轉換到另一個熱門領域,那麼你也會更加得心應手。

  • 公有云

如果沒有充分了解公有云的運作方式,就不可能成為一名經驗豐富的 DevOps 專業人士。國內外雲端計算領域的主導者們提供了非常豐富的工具集。

我建議你每天留出 20-30 分鐘來學習 Python,Linux 和公有云。圖二是你必須學習的補充內容。總的來說,我估計每天要花費一個小時,每週五次就足以讓你在 6 個月或更短的時間內充分了解 DevOps 相關的內容。總共有 6 個主要知識支柱,每個支柱對應一個月的學習時間。
以上就是基礎知識的介紹,在隨後的系列文章中,我們將探討更加複雜的問題:如何以完全自動化的方式配置、釋出、打包、部署、執行和監控軟體。

譯後記

我們相信,在企業數字化轉型落地過程中 ,DevOps 是企業軟體開發模式革新的重要支柱。
CODING 作為國內領先的 DevOps 解決方案提供商,支援從需求到部署的研發全流程管理,涵蓋了專案管理、程式碼管理、持續整合、製品庫管理、測試管理、部署管理、缺陷管理、知識管理,幫助企業輕鬆將創意轉化為創收。CODING 也會持續關注並分享軟體研發領域最新理念與技術,與 DevOps 工程師一起成長。

相關文章