導(dǎo)讀 | 敏捷軟件開發(fā)已經(jīng)打破了需求分析、測(cè)試、開發(fā)之間的壁壘。在軟件開發(fā)流程中,開發(fā)與運(yùn)維之間面臨著相同的隔離問題。DevOps運(yùn)動(dòng)的目標(biāo)就是打破開發(fā)與運(yùn)維之間的壁壘,鼓勵(lì)開發(fā)與運(yùn)維之間的協(xié)作。 |
敏捷軟件開發(fā)已經(jīng)打破了需求分析、測(cè)試、開發(fā)之間的壁壘。在軟件開發(fā)流程中,開發(fā)與運(yùn)維之間面臨著相同的隔離問題。DevOps運(yùn)動(dòng)的目標(biāo)就是打破開發(fā)與運(yùn)維之間的壁壘,鼓勵(lì)開發(fā)與運(yùn)維之間的協(xié)作。
新運(yùn)維工具的出現(xiàn)以及敏捷工程實(shí)踐的建立使得DevOps變成了可能[1],但對(duì)于DevOps好處的認(rèn)識(shí)還遠(yuǎn)遠(yuǎn)不夠,即便擁有最好的工具,如果我們沒有正確的文化,DevOps僅僅是一個(gè)時(shí)髦的詞匯而已。
DevOps文化的基本特征是開發(fā)和運(yùn)維角色 之間的不斷增強(qiáng)的協(xié)作。在團(tuán)隊(duì)級(jí)和組織級(jí)都需要文化的轉(zhuǎn)變一支持這種協(xié)作。
責(zé)任共擔(dān)是DevOps的團(tuán)隊(duì)文化之一,責(zé)任共擔(dān)鼓勵(lì)團(tuán)隊(duì)進(jìn)一步的協(xié)作。如果系統(tǒng)運(yùn)行與維護(hù)的工作交給了其他團(tuán)隊(duì)負(fù)責(zé),開發(fā)團(tuán)隊(duì)一般都不會(huì)關(guān)心具體的運(yùn)維工作。
當(dāng)開發(fā)團(tuán)隊(duì)共同分擔(dān)系統(tǒng)生命周期中的運(yùn)維工作與責(zé)任時(shí),開發(fā)團(tuán)隊(duì)就能理解運(yùn)維團(tuán)隊(duì)的痛苦,就能主動(dòng)簡(jiǎn)化開發(fā)和運(yùn)維中繁瑣的工作(例如:自動(dòng)化部署和完善日志)。
他們也可以通過生產(chǎn)環(huán)境系統(tǒng)監(jiān)控獲取額外的需求。當(dāng)運(yùn)維團(tuán)隊(duì)主動(dòng)承擔(dān)系統(tǒng)的業(yè)務(wù)目標(biāo)時(shí),運(yùn)維團(tuán)隊(duì)可以和開發(fā)團(tuán)隊(duì)更緊密的合作,以理解運(yùn)維需求并提供支持。
在實(shí)踐中,協(xié)作往往開始于開發(fā)團(tuán)隊(duì)意識(shí)到需要了解更多的運(yùn)維工作(如部署和監(jiān)控)或者是運(yùn)維團(tuán)隊(duì)采用了新的自動(dòng)化工具與實(shí)踐。
將開發(fā)與運(yùn)維團(tuán)隊(duì)放在一起責(zé)任共擔(dān)文化也需要組織上的一些變化。開發(fā)團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì)之間不應(yīng)該有壁壘。在一開始,就不能依靠移交文檔來代替一起工作。應(yīng)該在組織資源結(jié)構(gòu)上支持運(yùn)維團(tuán)隊(duì)盡早地介入到產(chǎn)品交付過程中與其他團(tuán)隊(duì)一起工作。
將開發(fā)與運(yùn)維團(tuán)隊(duì)放在一起,可以有效地促進(jìn)他們一起工作。“移交和簽收”無益于團(tuán)隊(duì)共同承擔(dān)責(zé)任,并且會(huì)導(dǎo)致形成責(zé)備的文化。反之,開發(fā)和運(yùn)維團(tuán)隊(duì)?wèi)?yīng)該共同對(duì)產(chǎn)品的成功與失敗負(fù)責(zé)。
DevOps文化模糊了開發(fā)與運(yùn)維之間的界限,最終也將消除這種界限。在向組織中引入DevOps時(shí),一種常見的反模式就是制作出一個(gè)DevOps角色或者DevOps團(tuán)隊(duì)。這樣做只會(huì)造成更多的壁壘,并且阻礙DevOps文化和實(shí)踐在更廣泛的團(tuán)隊(duì)中傳播和使用。
支持自組織團(tuán)隊(duì)另一個(gè)有價(jià)值的組織變化是支持自組織團(tuán)隊(duì),為了更高效的協(xié)作,開發(fā)與運(yùn)維團(tuán)隊(duì)?wèi)?yīng)該自主決策,在采納變更時(shí)也不需要冗長(zhǎng)的變更管理流程。這涉及到對(duì)團(tuán)隊(duì)的信任、對(duì)風(fēng)險(xiǎn)管理方式的變化,也需要?jiǎng)?chuàng)建不怕失敗的環(huán)境氛圍。
例如,一個(gè)團(tuán)隊(duì)需要列出變更清單并且獲得一堆簽字批準(zhǔn)才能發(fā)布到測(cè)試環(huán)境,這些變更經(jīng)常被推遲。我們應(yīng)該依靠可審計(jì)的版本控制來替代大量的人工檢查。在版本控制中的變更可以鏈接到團(tuán)隊(duì)的任務(wù)管理工具中,無需人工的簽字批準(zhǔn),團(tuán)隊(duì)可以自動(dòng)化部署變更,并縮短測(cè)試周期。
向DevOps文化改變的一個(gè)影響就是將代碼部署到生產(chǎn)環(huán)境將變得很容易。這需要更進(jìn)一步的文化改變。為了保證生產(chǎn)環(huán)境變更是可靠的,團(tuán)隊(duì)需要重視在開發(fā)過程中內(nèi)建質(zhì)量。這包括跨職能關(guān)注點(diǎn),如性能和安全。持續(xù)交付技術(shù)(包括代碼自測(cè)試)形成一個(gè)允許日常的、低風(fēng)險(xiǎn)的部署。
對(duì)團(tuán)隊(duì)而言,重視反饋也很重要,為了持續(xù)的推進(jìn)開發(fā)與運(yùn)維像一個(gè)團(tuán)隊(duì)一樣工作,生產(chǎn)環(huán)境監(jiān)控是一個(gè)很有用的反饋循環(huán),它可以幫助診斷問題和發(fā)現(xiàn)潛在改進(jìn)點(diǎn)。
自動(dòng)化是DevOps運(yùn)維的基石,它可以加快協(xié)作。自動(dòng)化測(cè)試、配置、部署使得團(tuán)隊(duì)有更多的時(shí)間專注在其他有價(jià)值的活動(dòng)中,并減少因?yàn)槿藶樵斐傻腻e(cuò)誤。自動(dòng)化 和測(cè)試的另一個(gè)好處是總是保證系統(tǒng)的文檔是最新的。比如,自動(dòng)化服務(wù)器配置意味著開發(fā)和運(yùn)維團(tuán)隊(duì)都能了解并修改服務(wù)器的配置。
注:
[1]:運(yùn)維工具包括虛擬化、云計(jì)算和自動(dòng)化配置管理,在持續(xù)集成、增量設(shè)計(jì)、代碼凈化等工程實(shí)踐中都支持這些工具。
原文來自: http://www.zmynmublwnt.cn/uploads/allimg/