DevOps工程師 開發
目標讀者
本系列文章適用于想向DevOps模型轉型的開發人員,或者是受過傳統培訓,想要了解整個關于DevOps的內容的運營人員,如果不屬于以上兩者,只是想在職業上尋找變化卻不知從何開始的話,也請繼續閱讀。
如果你已從事多年DevOps工作,這篇文章仍可能對你有益,它可以驗證我們當前所處位置和發展方向。
首先,什么是DevOps?
你可以在搜索引擎查找DevOps的定義,大部分都是一些冗長的語句(這里是有點自夸的嫌疑)
那么我這里將為你節省時間并將其提取下來: DevOps是一種提供共同痛點和責任的交付軟件的方式 。僅此而已。那么,這到底是什么意思呢?
這意味著在傳統上,創建軟件的人即開發者的動機出發點與運行軟件的人大不相同。
舉個例子,作為一名開發人員,我希望盡可能快地創造出更多的新功能,畢竟這是我的工作,是客戶的需求。但是如果我是一名運營人員,那么我希望新功能盡可能少,因為每個新功能都是一次變更,變更即意味著風險。
由于這種不同的利益出發點,DevOps誕生了。
DevOps試圖將開發與運營融合到一個組中。我們的想法是會有一個小組來承擔從面向客戶的軟件創建,部署和創收的痛點和責任(也可能是獎勵)。
接下來純粹主義者會告訴你沒有“DevOps工程師”這樣的東西。他們會告訴你,“DevOps是一種文化,而不是一種角色”。
好吧,他們說的這些從技術上來講沒毛病,但是正如經常發生的那樣,這個術語已經超越了它原有的含義。
現在,成為DevOps工程師就好似成為“系統工程師2.0版本”。
換句話來說,DevOps工程師就是那些了解軟件開發生命周期并帶來軟件工程工具和流程來解決傳統運營挑戰的人。
DevOps最終意味著構建數字(自動)化流程,從代碼的誕生直至產生效益。這就是它的意義所在!
同樣值得注意的是作為職業選擇,整個DevOps空間得到了高度補充,幾乎每家公司都在或是聲稱在“實施DevOps”。
不管這些公司處在哪里,整個DevOps行業的工作機會都很豐富,在未來的幾年內將能提供很多有趣的有意義的工作。
額外需要注意雇傭“DevOps團隊”或是“DevOps部門”的公司。嚴格來說,這些事情都不應該存在,因為最終DevOps是關于文化和交付軟件的方式,而不是成立配備一個新的團隊或是部門。
現在,我們先考慮以下幾點。
你是否聽說過在Reddit和StackOverflow上一句流行的比喻,“不存在初級DevOps工程師”這話是什么意思?
簡而言之,想要成為DevOps工程師意味著需要多年的經驗,結合對工具的扎實了解,才能最終成為真正有影響力的高級DevOps從業者。遺憾的是經驗這條路是沒有捷徑可尋的。深刻理解快速變化的工具和方法這些技能需要數年才能掌握。
然而大多數公司都使用大致商定的工具和概念菜單,這就是本文所講述的。
再次聲明,工具與技能不同,因此當你學習工具時,請確保不要忽視自己的技能(包括面試,網絡,書面溝通,故障排除等)
最重要的是,不要忘記我們追求的目標,那就是構建一個全自動的數字化流程,將Ideas轉化成能創收的代碼。
這是本篇文章中唯一最重要的內容。
光說不練,那么我該從何開始?
你可以參考以下作為路線圖。
掌握以下內容,你大可以自稱自己為DevOps工程師,如果你不喜歡“DevOps”稱謂的話也可以稱自己為云工程師。
以下的路線代表我(以及可能是在這個領域工作的大多數人)的關于一個有競爭力的DevOps工程師該了解什么的看法。也就是說,這只是一種意見,肯定會有不同的看法。
注意:你應該循序漸進,先從基礎開始。首先開始學習藍色的部分,包括Linux、Python、AWS,如果時間允許或是市場的就業需求,你應該再學習下Golang以及Google Cloud。
一旦你掌握了基礎部分,那么我們開始講講現實中所需要的技能:
注意:上圖缺少了測試階段,這是有意為之的,編寫單元測試,集成測試與驗收測試并不容易,傳統上講這些都是落在開發者的頭上的。我這里故意遺漏了測試階段,因為上面路線圖的目標是快速獲取新技能與工具。我認為缺少測試專業知識是從業DevOps工作上一個微不足道的障礙。
同樣請記住,我們不是在這里學習一大堆無關的技術。這些工具結合在一起來組成一個連貫的故事,我們才能對這些工具有更深刻的理解。
上面講的是端到端的流程自動化,一個一環扣一環的數字化管道流程。
而且,你不想學習了一大堆工具就停下來。工具的變化很快,概念則是越來少。因此實踐才能出真知。
接下來我們講得深入一些。
基礎知識
在“基礎知識”往下一行就是所有DevOps工程師所必須掌握的技能。
評論