- 原文地址:How To Become a DevOps Engineer In Six Months or Less
- 原文作者:Igor Kantor
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
- 譯者:臨書
- 校對者:jianboy
『空曠的高速公路橫穿多彩的沙漠』— 由 Johannes Plenio 釋出在 Unsplash。
注:這是系列文章的第一部分。
第二部分在這裡。
目標受眾
你是一名希望將職業生涯轉向更契合 DevOps 模式的開發人員嗎?
你是一位經驗豐富的運維人員嗎,你想要了解整個 DevOps 生態嗎?
或者你都不是,你只是尋求職業生涯的改變卻不知道從哪裡開始?如果是這樣,請往下閱讀!
最後,如果你已經有了多年的 DevOps 經驗,你也可能從文章中獲取有用的資訊,比如驗證自己的位置和發展方向。
DevOps 是什麼?
首先,什麼是 DevOps?
你可以谷歌一下它的定義,不過大多數都是一些冗長的包含很多空話的連續欄位。(看下面我做了什麼?)
那麼,我幫你搜尋好了並將它的定義摘錄下來:
DevOps 是一種痛苦與職責交織的軟體交付方式。
就這樣。
好吧,所以這到底是什麼意思?
在傳統意義上,開發人員(開發軟體的人)的與運維人員(維護軟體的人)的職責不大相同。
例如,作為一名開發人員,我要儘可能快的開發更多的新功能。畢竟這是我的工作,也是客戶的需求!
然而,如果我是一名運維人員,我可能不希望有太多的新特性,因為每個新特性都意味著一次變更,而每次變更都是有風險的。
由於這種兩種激勵機制的衝突,DevOps 誕生了。
DevOps 試圖將開發人員(Dev)和運維人員(Ops)融合到一個組中。我們的想法是:這樣可以在同組內消化面向使用者軟體的研發、部署和完成績效等所有痛苦和職責(可能還有獎勵)。
此時,純粹主義者會告訴你:『沒有「DevOps 工程師」這個東西,DevOps 是一種文化,而非角色』。
是的,它在理論上是正確的(最糟糕的那種正確!),但是正如經常發生的那樣,這已經超越了它本來的含義。
現在,成為 DevOps 工程師就像成為『系統工程師 2.0』。
換句話來說,DevOps 工程師就是一種既瞭解軟體生命週期,也可以開發出面向開發者的工具,還能推進解決經典運維難題的人。
DevOps 最終意味著構建數字化管道,從開發人員的膝上型電腦上的程式碼,到生產環境部署直至產生收益,這令人敬畏!
這就是它的一切!
另請注意,作為一種職業選擇,整個 DevOps 行業有很高的報酬,幾乎每個公司都會有 DevOps 職位,或者聲稱將會有。
無論哪兒的公司,DevOps 的工作機會都非常多,會在未來幾年內提供有趣、有意義的工作機會。
注意:警惕聘用『DevOps 團隊』或者『DevOps 部門』的公司。嚴格的來說,這種情況是不會發生的,因為 DevOps 最終是關於文化和軟體交付方式的,並不是要配備新的團隊或者部門。
放棄
現在,讓我們把 Kool-Aid 的杯子放到一邊,考慮以下幾點:
你有沒有聽過這句老話,『不存在初級的 DevOps 工程師嗎?』
如果沒有,請知曉它是 Reddit 和 StackOverflow 上的一種流行比喻。但是這是什麼意思呢?
簡而言之,這意味著它需要多年的經驗,並結合對工具的紮實理解,才能最終成為真正的高階 DevOps 從業者。然而遺憾的是,經驗的獲取沒有捷徑。
所以,不要嘗試在這個行業行騙,我認為只有幾個月的經驗是不可能假裝成高階 DevOps 工程師的。對快速迭代的工具和方法,需要數年才能深刻理解,而且沒有捷徑。
然而,大多數公司一般都會使用一些主流的(最新的,如果你願意)工具和概念,這就是本文的全部主題!
同樣,因為工具和技能不同,在學習工具時,請確保不要忽視自己的技能(面試、網路、書面溝通和故障排除等)
最重要的是,不要忘記我們追求的目標 — 構建一個全自動的數字管道,將想法轉化為可以創造收入的程式碼。
這是整篇文章中唯一重要的內容!
說的夠多了,我們應該如何開始做?
以下是你的路線圖。
掌握以下內容,你可以安心的稱自己為 DevOps 工程師!或者雲工程師 — 如果你討厭『DevOps』這個稱呼。
下面的圖代表我(也可能是這個領域工作的大多數人)的想法,是關於一個 DevOps 工程師應該瞭解什麼。也就是說,這只是一種建議,肯定會有不同的聲音,這並沒有什麼問題,我們不追求完美,我們是在建立堅實的基礎。
注意:你應該使用廣度優先的方式瀏覽,先從基礎開始(並堅持下去!)。首先學習藍色標記的技術(Linux | Python | AWS),然後如果時間允許或者就業市場有需求,繼續學習紫色標記的技術(Golang | Google Cloud)。
譯者注:AWS 和 Google Cloud 技能可以理解為國內的騰訊雲、阿里雲。
DevOps 基礎知識
還有,如果時間允許,在掌握第一層基礎之後,請繼續學習它的下一層,以增加你的專業知識深度。
一旦你弄懂了基礎層面的東西,可以開始轉去解決實際問題了:
現實世界的技能
注意:上面的技能管道缺少了測試 — 編寫測試用例,這是故意的 – 編寫整合和驗收測試用例並不容易,這通常是開發人員承擔的工作。故意遺漏『測試』階段是因為該學習路線圖的目標是快速獲取新技能與工具。筆者認為缺乏測試專業知識只是成為 DevOps 的一個微不足道的障礙。
還有,請記住,我們不是在這裡學習一堆無關的技術吐槽。我們需要對完整的工具鏈有深刻的理解,要將這些工具結合在一起,講述一個連貫的故事。
這個故事是端到端的流程自動化 — 一種可以像裝配流水線一樣改動的數字管道。
而且,你一定也不想學一堆工具然後止步不前,工具更新換代很快,概念則不是。因此,你要做的是使用工具作為代表去學習更高階別的概念,而不是學習工具的使用。
好的,讓我們再深挖一點!
基礎知識
在標有『基礎』知識的基線下,你將看到每個 DevOps 工程師必須掌握的技能。
在這裡,你將看到行業中主導的三大支柱:作業系統,程式語言,公有云。這些不是你很快能學會的東西,在列表中檢視,然後繼續前進。為了保持對技能的熟悉和不過時,你必須持續的學習並對其保持敏銳。
讓我們一個接一個看看。
Linux:可以執行一切的系統。現如今,你能成為一名完全生存於 Microsoft 生態中的出色 DevOps 從業者嗎?當然可以!沒有規定要求 Linux 包含所有生態。
然而!請注意,雖然所有的 DevOps-y 事情確實可以用 Windows 來完成,但這個過程更加痛苦,而且工作機會要少的多。現在,你可以放心的認為在不瞭解 Linux 的情況下無法成為真正的 DevOps 專業人員。因此,Linux 是你必須學習和不斷學習的東西。
誠然,最好的方法是在家裡的電腦安裝 Linux(Fedora 或者 Ubuntu)並儘可能多的使用它。你會解決一些問題,或者你會陷入困境,然後你將不得不解決所有問題,在這個過程中,你將學會 Linux!
作為參考,在北美,Red Hat(紅帽)的變種更為普遍,因此,從 Fedora 或 CentOS 開始學習是有道理的。如果你在猶豫使用 KDE 或 Gnome 哪種桌面環境,請使用 KDE。Linux Torvalds(譯者注:linux 之父)在使用。:)
Python:如今最主流的後端語言。易上手,使用廣泛。紅利:Python 在 AI/機器學習領域的使用非常廣泛,所以如果你想要轉戰其它熱門領域,路已經鋪好了。
亞馬遜網路服務:再強調一次,沒有充分了解公有云的運作方式,不可能成為一名經驗豐富的 DevOps 專業人士。如果你想了解雲知識,亞馬遜網路服務是這一領域的主導者,它提供了最豐富的工具集。
是否可以從 Google Cloud 或 Azure 開始?當然可以!但是我們追求的是利益最大化,所以 AWS 是成功概率最大的,至少在 2018 年。
在 AWS 註冊賬戶可以獲得一些免費的套餐優惠,所以這是一個很好的起點。
現在,當你登入 AWS 控制檯時,你會看到一個簡單易懂的選項選單。
『發現另一個我從未知曉的 AWS 功能』,由 Tom Pumford 釋出在 Unsplash。
那是一句諷刺。好訊息是,你不需要了解每一個亞馬遜技術。
從下面幾個開始:VPC,EC2,IAM,S3,CloudWatch,ELB(在 EC2 的保護傘之下)還有安全組。這些東西可以幫助你入門,每個現代的,支援雲的企業都會大量使用這些工具。
AWS 自己的培訓網站是一個很好的起點。
我建議你每天流出 20-30 分鐘來練習 Python,Liunx 還有 AWS。
注意:這將是必須要學習的附加內容。總而言之,我估計每天花費一個小時,每週五次就足以讓你在 6 個月或者更短的時間內充分了解 DevOps 行業的情況。
這就是基礎層!
在隨後的文章中,我們將討論下一級的複雜的東西:如何完全以自動化的方式配置,管理版本、管理包、部署、執行和監控軟體!
如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。