自從DevOps在十多年前推出以來,DevOps對(duì)IT生態(tài)系統(tǒng)產(chǎn)生了巨大的積極影響。盡管DevOps有著出色表現(xiàn),但仍然面臨各種問題,這里所說的并不是DevOps工具或技術(shù)方面的問題,而是人們需要考慮在定義上困擾DevOps的問題,這些問題削弱了DevOps的目的或使其復(fù)雜化,因此難以將DevOps的理念轉(zhuǎn)化為實(shí)踐。
以下是當(dāng)今大多數(shù)組織在使用DevOps時(shí)面臨的五個(gè)主要問題。
1. DevOps缺乏明確的定義
DevOps的主要問題之一是其定義仍然有些模棱兩可。不同的公司和分析師對(duì)DevOps的定義不同。
大多數(shù)DevOps定義的中心思想是,開發(fā)工作和IT運(yùn)營工作應(yīng)相互緊密協(xié)調(diào)。但是也有一些重要的例外,例如亞馬遜公司對(duì)DevOps的定義沒有提及開發(fā)人員和IT工程師之間的協(xié)作。相反,該公司將DevOps定義為“文化理念、實(shí)踐和工具的組合,可以提高組織快速交付應(yīng)用程序和服務(wù)的能力”。
此外在DevOps的定義中,并沒有確切說明開發(fā)人員和IT運(yùn)營團(tuán)隊(duì)之間應(yīng)該如何進(jìn)行協(xié)作。
“Doing DevOps”是否意味著組織需要構(gòu)建一支獨(dú)特的“DevOps工程師”團(tuán)隊(duì),他們需要將開發(fā)和運(yùn)營技能結(jié)合在一起?還是要教授開發(fā)人員如何進(jìn)行IT工作或者教授IT工程師如何進(jìn)行編程?或者,也許組織應(yīng)該設(shè)立“DevOps聯(lián)絡(luò)員”這一職位,盡管他們的主要職責(zé)是編程或IT運(yùn)營,但他們會(huì)主動(dòng)與對(duì)方的團(tuán)隊(duì)聯(lián)系,以培養(yǎng)開發(fā)人員和IT工程師之間的協(xié)作精神。
有人可能會(huì)爭(zhēng)辯說,DevOps最終只是一種理念,而不是固定的實(shí)踐,因此,組織應(yīng)以對(duì)他們最有意義的方式實(shí)施DevOps。但這仍然使DevOps的含義和目的有些模棱兩可。
2. DevOps創(chuàng)建了錯(cuò)誤的二分法
DevOps的另一個(gè)問題是——在某種程度上,DevOps可以被定義為一種鼓勵(lì)開發(fā)人員和IT團(tuán)隊(duì)之間協(xié)作的理念,它建立了一種錯(cuò)誤的二分法。這個(gè)概念的前提是,開發(fā)人員對(duì)IT工程師的工作知之甚少或一無所知,反之亦然,除非DevOps介入并節(jié)省工作時(shí)間。
這是對(duì)開發(fā)與IT運(yùn)營工作之間關(guān)系簡化的觀點(diǎn),其實(shí)IT工程師并非對(duì)編程一無所知。實(shí)際上,許多部署和維護(hù)應(yīng)用程序的IT專業(yè)人員都非常擅長使用開發(fā)軟件,這不僅是因?yàn)樗麄兙幊?、管理和更新了許多自定義腳本為他們的工作流程提供幫助。
同樣可以肯定的是,如果說大多數(shù)開發(fā)人員完全不了解IT工作,那么他們一定不會(huì)認(rèn)同。他們知道應(yīng)用程序部署的含義,以及IT工程師在部署應(yīng)用程序時(shí)通常面臨的痛點(diǎn)。他們還了解日志記錄和監(jiān)視,這不僅是管理應(yīng)用程序的重要過程,而且對(duì)于解決應(yīng)用程序內(nèi)部出現(xiàn)的問題也很重要。
開發(fā)人員與IT工程師進(jìn)行更有效的溝通時(shí),軟件交付會(huì)更好嗎?反之亦然?當(dāng)然是。但這并不意味著在實(shí)施DevOps之前,這些小組之間不存在任何溝通或相互了解。
3. DevOps缺乏明確的指導(dǎo)方針
DevOps還面臨著缺乏清晰明確的準(zhǔn)則來確定工作狀況的問題。它提出了高層次的概念,但沒有具體說明它們的含義。
以持續(xù)交付為例。“持續(xù)”是一個(gè)模棱兩可和有問題的術(shù)語。如果組織每周部署一個(gè)新的應(yīng)用程序版本,是否算作持續(xù)交付?還是必須像Netflix或Google公司那樣每天部署數(shù)千次?顯然,很多組織并沒有通過一個(gè)持續(xù)集成(CI)/ 持續(xù)交付(CD)管道實(shí)現(xiàn)這么多次,他們有很多渠道。但這不是重點(diǎn)。
人們也可以對(duì)其他與DevOps相關(guān)的過程提出類似的觀點(diǎn)。在聲稱可以執(zhí)行QAOps之前,需要運(yùn)行多少次自動(dòng)化測(cè)試?與單一的集成相比,有多少代碼交付累計(jì)起來構(gòu)成了持續(xù)集成?
同樣,人們可能會(huì)認(rèn)為DevOps沒有定義特定的準(zhǔn)則或指標(biāo),因?yàn)檫@是一種哲學(xué),而不是嚴(yán)格的實(shí)踐。這是一個(gè)很合理的論點(diǎn),但這也是DevOps的問題之一,因?yàn)樗赡鼙徽J(rèn)為有些過分。人們需要在DevOps和Not-DevOps之間劃清界線,而大多數(shù)DevOps的支持者在這方面做得并不好。
4. 聲稱DevOps對(duì)未發(fā)明的技術(shù)負(fù)責(zé)
盡管DevOps并沒有規(guī)定特定的方法,但DevOps社區(qū)作為一個(gè)整體仍與某些技術(shù)緊密相關(guān)。微服務(wù)(其中有人認(rèn)為是DevOps的自然發(fā)展)就是一個(gè)例子。另一個(gè)是容器和無服務(wù)器功能,它們是“基于DevOps原理構(gòu)建的”。
這樣的爭(zhēng)論的問題在于,容器在人們談?wù)揇evOps之前就已經(jīng)存在了很長時(shí)間。如果將類似Zimki的平臺(tái)放在這一類別中,則無服務(wù)器功能也會(huì)如此。對(duì)于微服務(wù),可以將它們視為與面向服務(wù)的體系結(jié)構(gòu)(即SOA)(而不是DevOps的技術(shù)后代)密切相關(guān)并且更古老的概念的下一步發(fā)展。
從這個(gè)角度來看這是一個(gè)問題??梢院芎玫刂赋鑫⒎?wù)和容器等技術(shù)如何加強(qiáng)DevOps目標(biāo)(無論選擇定義哪些目標(biāo)),但是可以說DevOps實(shí)際上促成這些技術(shù)有更大的延伸。
5. DevOps的采用率很低
當(dāng)今,DevOps面臨的最大問題之一是,盡管圍繞DevOps進(jìn)行了更多的宣傳,但組織實(shí)際采用的比率很低。不同的研究發(fā)現(xiàn),盡管大多數(shù)組織表示他們希望利用DevOps作為加快軟件交付的方式,但通常只有一半或更少的受訪者表示成功實(shí)施了DevOps。在規(guī)模較小的組織中,DevOps的采用率似乎較高,但大型組織的采用率卻相對(duì)較低。
也許有一天,DevOps最終會(huì)獲得真正廣泛的采用。但DevOps已經(jīng)推出了10多年的時(shí)間,其采用率并不高。這個(gè)問題很少在DevOps社區(qū)內(nèi)討論,可能是因?yàn)椴捎肈evOps的組織通常給出高度評(píng)價(jià),而沒有采用DevOps的組織卻對(duì)此很少關(guān)注。
結(jié)論
DevOps是一個(gè)強(qiáng)大的概念,它確實(shí)改善了某些組織交付軟件的方式。但是作為一個(gè)概念,DevOps也面臨一些實(shí)際挑戰(zhàn)。它沒有一個(gè)很好的定義,并聲稱對(duì)未發(fā)明的技術(shù)負(fù)責(zé),而且其采用率并沒有像人們認(rèn)為的那樣廣泛。
這并不是說DevOps是失敗的或者將會(huì)消亡。與其相反,DevOps的支持者應(yīng)該就上述DevOps的問題進(jìn)行更進(jìn)一步的討論。這些問題是可以解決的,DevOps社區(qū)不應(yīng)該對(duì)它們視而不見。
版權(quán)聲明:本文為企業(yè)網(wǎng)D1Net編譯,轉(zhuǎn)載需注明出處為:企業(yè)網(wǎng)D1Net,如果不注明出處,企業(yè)網(wǎng)D1Net將保留追究其法律責(zé)任的權(quán)利。