隨著DevOps的普及,越來越多的人開始想要了解DEVOPS。DevOps是敏捷軟件開發(fā)為了跟上軟件開發(fā)速度和實(shí)現(xiàn)吞吐量而產(chǎn)生的,因此說DevOps敏捷開發(fā)的產(chǎn)物一點(diǎn)都不為過。那么到底什么是DEVOPS?DevOps工程師帶來了什么?本文將從DevOps的定義,以及DevOps工程師可以帶來什么,希望可以幫助你對DevOps有更深刻的理解。
什么是DEVOPS?
DevOps(英文Development和Operations的組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。它的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識到:為了按時交付軟件產(chǎn)品和服務(wù),開發(fā)和運(yùn)營工作必須緊密合作。
對于DevOps的提出已經(jīng)很多年,其主要的推動仍來自兩個方面:
1. 業(yè)務(wù)和需求驅(qū)動下,推動敏捷方法論,敏捷下需要更加短周期,更快的發(fā)布和交付。
2. 技術(shù)和運(yùn)維部門需要銜接,在PaaS和容器技術(shù)發(fā)展下,進(jìn)一步推動這部分陷阱的自動化。
雖然是三方交融地方為DevOps的內(nèi)容,但是可以看到DevOps本身更多的是要解決兩大類協(xié)同和自動化的問題,其一是開發(fā)部門和QA協(xié)同,其二是開發(fā)部門和運(yùn)維的協(xié)同。
1. 第一個問題的解決:已有的持續(xù)集成方法論;
2. 第二個問題的解決:當(dāng)前由云平臺,微服務(wù)架構(gòu),容器技術(shù)發(fā)展推動的自動化發(fā)布和監(jiān)控運(yùn)維;
把上面思路理清楚后,對于DevOps要做或需要解決的事情也就更加明確的。
1. 實(shí)現(xiàn)軟件和硬件基礎(chǔ)設(shè)施(云平臺資源)的對接(自動部署,動態(tài)擴(kuò)展)-PaaS,Docker;
2. 實(shí)現(xiàn)不同環(huán)境間的自動遷移 - 持續(xù)集成+自動化遷移;
3. 能夠滿足更加高頻率的發(fā)布節(jié)奏,單次發(fā)布更加快速 - 持續(xù)集成;
4. 能將QA和QC部分檢驗(yàn)和審查工作自動銜接到發(fā)布和交付過程 - 自動化測試,自動化監(jiān)控;
要做好DevOps基于上面的分析就可以從持續(xù)集成和PaaS平臺融合兩方面來談。
DevOps和持續(xù)集成
對于持續(xù)集成我前面已經(jīng)專門有文章談到過,這個沒有提DevOps概念的時候也在做持續(xù)集成,通過持續(xù)集成真正實(shí)現(xiàn)了版本和配置管理,單元測試,自動構(gòu)建,環(huán)境遷移和配置修改,集成順序規(guī)劃這些關(guān)鍵內(nèi)容。
比如我們常說的一個工具組合:Jenkins,Maven,Ant , Junit,SubVersion 。 為了更好持續(xù)異地協(xié)同開發(fā),以及后續(xù)和公有云PaaS融合,版本庫可以轉(zhuǎn)到GitLab或GitHub上面。
在持續(xù)集成里面我們經(jīng)常會談一個重點(diǎn),即業(yè)務(wù)系統(tǒng)是基于組件化架構(gòu)的,即各個組件可以獨(dú)立管理和部署,組件之間通過服務(wù)接口松耦合。只有這樣才能將后續(xù)增量發(fā)布影響降低到最小。這個概念現(xiàn)在轉(zhuǎn)到微服務(wù)架構(gòu)里面來進(jìn)一步實(shí)現(xiàn)。
DevOps和PaaS平臺融合
對于和PaaS平臺融合是DevOps的第二個內(nèi)容,我們希望的就是我們在測試態(tài)測試和驗(yàn)證完成的部署包能夠自動的交付和遷移到生產(chǎn)環(huán)境的托管資源中。在這里就涉及到PaaS平臺提供的自動部署和托管,資源動態(tài)管理等方面的能力。
比較重的:Cloudfoundry或Cloudify能提供完整的解決方案。
比較輕的:我們可以基于Docker容器技術(shù)+Kubernetes+Puppets來實(shí)現(xiàn)自動化和動態(tài)資源管理。
在PaaS平臺下,由于部署和資源的動態(tài)管理都被PaaS平臺完全接管,因此更加需要整個平臺必須提供完整的日志管理,傳統(tǒng)IT網(wǎng)管,中間件資源池監(jiān)控,包括到APM層性能分析的完整解決方案和工具集。要實(shí)現(xiàn)這些你可以在監(jiān)控方面用Nagios或zabbix解決方案。日志管理和分析可以用ELK方案,整個過程中的自動化腳本用Puppet等。
一個DevOps是否執(zhí)行的好基礎(chǔ)指導(dǎo)是敏捷和持續(xù)集成的方法論,難點(diǎn)在多版本管理和微服務(wù)架構(gòu)設(shè)計(jì)(組件劃分是否合理)和后期的監(jiān)控運(yùn)維。
DevOps工程師帶來了什么?
傳統(tǒng)的軟件開發(fā)流程是軟件開發(fā)人員花費(fèi)數(shù)周和數(shù)月編寫代碼,然后將代碼交給QA團(tuán)隊(duì)進(jìn)行測試,然后將最終的發(fā)布版交給運(yùn)維團(tuán)隊(duì)去布署。所有的這三個階段,即開發(fā),測試,布署,之間缺乏協(xié)作。
開發(fā)者編寫代碼然后交給布署團(tuán)隊(duì)。現(xiàn)在由布署團(tuán)隊(duì)來解決代碼布署過程中出現(xiàn)的問題,或?qū)⒋a交給開發(fā)團(tuán)隊(duì)以修復(fù)bug。所有這些都導(dǎo)致軟件開發(fā)過程變慢。
但是在DevOps模式下,這三個團(tuán)隊(duì)將不再相互隔離。大多數(shù)時候,這三個團(tuán)隊(duì)將合并成一個團(tuán)隊(duì),工程師會在整個應(yīng)用程序生命周期中工作,從開發(fā)和測試到布署到操作,并開發(fā)出一系列不限于單一功能的技能。安全團(tuán)隊(duì)也可以在整個應(yīng)用程序生成周期中和開發(fā)和運(yùn)維更緊密的合作。
以上就是關(guān)于什么是DEVOPS,以及DevOps工程師帶來了什么的全部內(nèi)容,想了解更多關(guān)于DEVOPS的信息,請繼續(xù)關(guān)注中培偉業(yè)。