DevOps工程師 開發(fā)
目標(biāo)讀者
本系列文章適用于想向DevOps模型轉(zhuǎn)型的開發(fā)人員,或者是受過傳統(tǒng)培訓(xùn),想要了解整個關(guān)于DevOps的內(nèi)容的運(yùn)營人員,如果不屬于以上兩者,只是想在職業(yè)上尋找變化卻不知從何開始的話,也請繼續(xù)閱讀。
如果你已從事多年DevOps工作,這篇文章仍可能對你有益,它可以驗證我們當(dāng)前所處位置和發(fā)展方向。
首先,什么是DevOps?
你可以在搜索引擎查找DevOps的定義,大部分都是一些冗長的語句(這里是有點自夸的嫌疑)
那么我這里將為你節(jié)省時間并將其提取下來: DevOps是一種提供共同痛點和責(zé)任的交付軟件的方式 。僅此而已。那么,這到底是什么意思呢?
這意味著在傳統(tǒng)上,創(chuàng)建軟件的人即開發(fā)者的動機(jī)出發(fā)點與運(yùn)行軟件的人大不相同。
舉個例子,作為一名開發(fā)人員,我希望盡可能快地創(chuàng)造出更多的新功能,畢竟這是我的工作,是客戶的需求。但是如果我是一名運(yùn)營人員,那么我希望新功能盡可能少,因為每個新功能都是一次變更,變更即意味著風(fēng)險。
由于這種不同的利益出發(fā)點,DevOps誕生了。
DevOps試圖將開發(fā)與運(yùn)營融合到一個組中。我們的想法是會有一個小組來承擔(dān)從面向客戶的軟件創(chuàng)建,部署和創(chuàng)收的痛點和責(zé)任(也可能是獎勵)。
接下來純粹主義者會告訴你沒有“DevOps工程師”這樣的東西。他們會告訴你,“DevOps是一種文化,而不是一種角色”。
好吧,他們說的這些從技術(shù)上來講沒毛病,但是正如經(jīng)常發(fā)生的那樣,這個術(shù)語已經(jīng)超越了它原有的含義。
現(xiàn)在,成為DevOps工程師就好似成為“系統(tǒng)工程師2.0版本”。
換句話來說,DevOps工程師就是那些了解軟件開發(fā)生命周期并帶來軟件工程工具和流程來解決傳統(tǒng)運(yùn)營挑戰(zhàn)的人。
DevOps最終意味著構(gòu)建數(shù)字(自動)化流程,從代碼的誕生直至產(chǎn)生效益。這就是它的意義所在!
同樣值得注意的是作為職業(yè)選擇,整個DevOps空間得到了高度補(bǔ)充,幾乎每家公司都在或是聲稱在“實施DevOps”。
不管這些公司處在哪里,整個DevOps行業(yè)的工作機(jī)會都很豐富,在未來的幾年內(nèi)將能提供很多有趣的有意義的工作。
額外需要注意雇傭“DevOps團(tuán)隊”或是“DevOps部門”的公司。嚴(yán)格來說,這些事情都不應(yīng)該存在,因為最終DevOps是關(guān)于文化和交付軟件的方式,而不是成立配備一個新的團(tuán)隊或是部門。
現(xiàn)在,我們先考慮以下幾點。
你是否聽說過在Reddit和StackOverflow上一句流行的比喻,“不存在初級DevOps工程師”這話是什么意思?
簡而言之,想要成為DevOps工程師意味著需要多年的經(jīng)驗,結(jié)合對工具的扎實了解,才能最終成為真正有影響力的高級DevOps從業(yè)者。遺憾的是經(jīng)驗這條路是沒有捷徑可尋的。深刻理解快速變化的工具和方法這些技能需要數(shù)年才能掌握。
然而大多數(shù)公司都使用大致商定的工具和概念菜單,這就是本文所講述的。
再次聲明,工具與技能不同,因此當(dāng)你學(xué)習(xí)工具時,請確保不要忽視自己的技能(包括面試,網(wǎng)絡(luò),書面溝通,故障排除等)
最重要的是,不要忘記我們追求的目標(biāo),那就是構(gòu)建一個全自動的數(shù)字化流程,將Ideas轉(zhuǎn)化成能創(chuàng)收的代碼。
這是本篇文章中唯一最重要的內(nèi)容。
光說不練,那么我該從何開始?
你可以參考以下作為路線圖。
掌握以下內(nèi)容,你大可以自稱自己為DevOps工程師,如果你不喜歡“DevOps”稱謂的話也可以稱自己為云工程師。
以下的路線代表我(以及可能是在這個領(lǐng)域工作的大多數(shù)人)的關(guān)于一個有競爭力的DevOps工程師該了解什么的看法。也就是說,這只是一種意見,肯定會有不同的看法。
注意:你應(yīng)該循序漸進(jìn),先從基礎(chǔ)開始。首先開始學(xué)習(xí)藍(lán)色的部分,包括Linux、Python、AWS,如果時間允許或是市場的就業(yè)需求,你應(yīng)該再學(xué)習(xí)下Golang以及Google Cloud。
一旦你掌握了基礎(chǔ)部分,那么我們開始講講現(xiàn)實中所需要的技能:
注意:上圖缺少了測試階段,這是有意為之的,編寫單元測試,集成測試與驗收測試并不容易,傳統(tǒng)上講這些都是落在開發(fā)者的頭上的。我這里故意遺漏了測試階段,因為上面路線圖的目標(biāo)是快速獲取新技能與工具。我認(rèn)為缺少測試專業(yè)知識是從業(yè)DevOps工作上一個微不足道的障礙。
同樣請記住,我們不是在這里學(xué)習(xí)一大堆無關(guān)的技術(shù)。這些工具結(jié)合在一起來組成一個連貫的故事,我們才能對這些工具有更深刻的理解。
上面講的是端到端的流程自動化,一個一環(huán)扣一環(huán)的數(shù)字化管道流程。
而且,你不想學(xué)習(xí)了一大堆工具就停下來。工具的變化很快,概念則是越來少。因此實踐才能出真知。
接下來我們講得深入一些。
基礎(chǔ)知識
在“基礎(chǔ)知識”往下一行就是所有DevOps工程師所必須掌握的技能。
行業(yè)優(yōu)勢的核心有三點,那就是操作系統(tǒng),編程語言以及公共云。這些不是你可以很快能學(xué)習(xí)并掌握的東西。這些技能將是你必須持續(xù)獲取并保持敏銳的技能,請持續(xù)關(guān)注并及時了解相關(guān)最新情況。
我們一個一個來看看吧。
Linux是能運(yùn)行幾乎所有東西的一個平臺。當(dāng)然一名出色的DevOps從業(yè)者也可以完全僅使用微軟的生態(tài)系統(tǒng)。沒有任何法律要求Linux實現(xiàn)一切。
然而請注意,雖然所有DevOps工作可以通過Windows完成,但在Windows上會比較痛苦,且相關(guān)的工作機(jī)會要少得多。所以你可以放心地假設(shè)在不了解Linux的情況下無法成為真正的DevOps專業(yè)人員。因此,Linux是你必須不斷學(xué)習(xí)的技能。
老實說,最好的方法就是盡量多使用Linux,例如在個人電腦上安裝Fedora或Ubuntu。在使用過程中,肯定會有某些東西被破壞,那么你會陷入困境,但你將不得不學(xué)習(xí)解決所有問題。這些都是獲取經(jīng)驗的途徑。
作為參考,紅帽的分支版本在北美更為流行。因此,從Fedora或CentOS開始學(xué)起稍微有意義些。如果你還想知道是要選擇KDE還是Gnome版本,我會告訴你Linus Torvalds也用的KDE。
Python:當(dāng)今占主導(dǎo)地位的后端語言。易于上手,廣泛使用。且Python在AI/機(jī)器學(xué)習(xí)領(lǐng)域非常流行,所以如果你想要轉(zhuǎn)行到另一個熱門領(lǐng)域,那么你將能輕易上手!
AWS:再一次申明,如果沒有充分理解公共云如何工作,就不可能成為一名經(jīng)驗豐富的DevOps專業(yè)人士。如果你有了解過云的知識,那你該知道AWS是這一領(lǐng)域的主導(dǎo)者,它提供了最豐富的工具集。
是否可以從Google Cloud或Azure開始?當(dāng)然可以,但是我們追求最大收獲,至少在2018年,AWS是最穩(wěn)當(dāng)?shù)摹?/p>
當(dāng)你注冊AWS帳戶時,你將獲得免費(fèi)套餐,所以這是一個能讓你上手的好地方。
現(xiàn)在,當(dāng)你登錄到AWS控制臺時,你將看到一個簡單易懂的選項菜單。AWS會有非常多的功能,但值得高興的是你并不需要了解每一個技術(shù)細(xì)節(jié)。
從VPC,EC2,IAM,S3,CloudWatch,ELB(在EC2保護(hù)傘下)和安全組開始,這些東西可以幫助你入門,每個現(xiàn)代化的支持云的企業(yè)都會大量使用這些工具。
AWS自己的培訓(xùn)站點同樣是一個很好的入門平臺。
我建議你每天留出20-30分鐘來練習(xí)Python,Linux和AWS。
注意:這將是你必須學(xué)習(xí)的其他內(nèi)容的補(bǔ)充。總而言之,我估計每天花費(fèi)一個小時,每周五次就足以讓你在6個月或更短的時間內(nèi)充分了解DevOps領(lǐng)域的情況。
以上就是基礎(chǔ)層,在隨后的文章中,我們將探討下一級復(fù)雜性:如何以完全自動化的方式配置,版本,打包,部署,運(yùn)行和監(jiān)控軟件!
評論