DevOps是敏捷在軟件開發(fā)團(tuán)隊的另一應(yīng)用,它借鑒敏捷開發(fā)方法,并提出了輕量化運維。目前,DevOps處于高速增長的階段,基于DevOps的變革正在如火如荼地展開,尤其是在大企業(yè)中,DevOps受到了廣泛的歡迎。
作為一個熱門的概念,DevOps近年來頻頻出現(xiàn)在各大技術(shù)社區(qū)和媒體的文章中,備受行業(yè)大咖的追捧,吸引了很多吃瓜群眾的圍觀,這也就不可避免的帶來了人們關(guān)于敏捷和DevOps的爭論。很多人認(rèn)為敏捷等于scrum,DevOps等于持續(xù)交付,這種過度簡化的理解讓敏捷和DevOps在眾人口中成為了對立存在。
事實上,在2008敏捷大會Patrick DuBois和Andrew Clay Schafer嘗試建立二者之間的關(guān)系并提出“敏捷架構(gòu)”這一概念時,敏捷與DevOps之間的關(guān)系就已初現(xiàn)端倪。盡管Patrick后來提出了“DevOps”一詞,但敏捷大會依然被追溯為DevOps的起點。
在最早期時,軟件開發(fā)使用的還是瀑布模型。這種模型通過制定計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試、運行維護(hù)等6個流程將整個軟件生命周期銜接起來。這6個流程有著嚴(yán)格的先后次序之分,只有當(dāng)前面的流程結(jié)束之后,下一個流程才能開始運轉(zhuǎn)。
但項目不可能是單向運作的,客戶有需求,產(chǎn)品也可能會有問題需要改進(jìn)。隨著時間推移,用戶對系統(tǒng)的需求不斷增加,與此同時,用戶給的時間周期卻越來越少。在這個情況下,大家發(fā)現(xiàn),笨重遲緩的瀑布式開發(fā)已經(jīng)不合時宜了。于是,軟件開發(fā)團(tuán)隊引入了“敏捷開發(fā)”的概念。
敏捷開發(fā)是一種能應(yīng)對快速變化需求的軟件開發(fā)方式,它采用 “迭代開發(fā)”,將軟件項目需求分成多個迭代,且每個迭代成果在完成開發(fā)、測試、反饋等環(huán)節(jié)后都可以進(jìn)行交付。
在這種模式下,每一個迭代就是一個周期,每個迭代后都能交付可獨立運行的成果。不僅資源得到最大化的利用、反饋更加及時,而且交付成果的效率顯著提高,極大地降低了風(fēng)險。
敏捷開發(fā)極大地提高了軟件開發(fā)的速度,但它注重的是軟件的開發(fā)階段,并未兼顧到運維階段。在開發(fā)人員與運維人員進(jìn)行交接的時候,并沒有體現(xiàn)出敏捷的價值、原則,因此開發(fā)與運維之間仍缺乏一些必要的協(xié)作效率。這時DevOps就應(yīng)運而生,DevOps促進(jìn)開發(fā)、運維、測試之間的高效協(xié)同,集開發(fā)、運維、測試于一體,范圍擴(kuò)大到軟件的完整生命周期,從而做到用持續(xù)軟件交付來修復(fù)并更快地解決問題。
DevOps是基于敏捷開發(fā)而出現(xiàn)的,它通過將運維納入產(chǎn)品開發(fā)過程的思維方式非常好地補充了敏捷開發(fā)。在DevOps框架中所表征的研發(fā)部分主要應(yīng)用敏捷開發(fā)的最佳實踐,比如Scrum方法等。其中敏捷所提倡的時間盒子(Timebox)、限制在制品(WIP)、持續(xù)集成(CI)和定義完成(DoD)等管理思想同樣也適用于DevOps。
在軟件生命周期中,不論是瀑布模型還是現(xiàn)如今各大公司都在積極轉(zhuǎn)型的敏捷開發(fā)和DevOps,都是在軟件行業(yè)不斷發(fā)展中產(chǎn)生的,迎合了行業(yè)發(fā)展的需要。而在這個過程里,敏捷開發(fā)和DevOps相互協(xié)作一致對外,更像是盟友而非對手,經(jīng)歷了敏捷革命的洗禮與催化,它們必將殊途同歸,同屬于一片藍(lán)天之下。
文.keller
聯(lián)系客服