- 原文地址:How To Become a DevOps Engineer In Six Months or Less
- 原文做者:Igor Kantor
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:臨書
- 校對者:jianboy
『空曠的高速公路橫穿多彩的沙漠』— 由 Johannes Plenio 發佈在 Unsplash。html
注:這是系列文章的第一部分。前端
第二部分在這裏。linux
你是一名但願將職業生涯轉向更契合 DevOps 模式的開發人員嗎?android
你是一位經驗豐富的運維人員嗎,你想要了解整個 DevOps 生態嗎?ios
或者你都不是,你只是尋求職業生涯的改變殊不知道從哪裏開始?若是是這樣,請往下閱讀!git
最後,若是你已經有了多年的 DevOps 經驗,你也可能從文章中獲取有用的信息,好比驗證本身的位置和發展方向。github
首先,什麼是 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、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。