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











評論