DevOps是當前IT領域最熱門的話題之一,了解、掌握、應用DevOps對于提升軟件交付與管控具有重要的意義。然而時至今日DevOps尚無統(tǒng)一的定義。
創(chuàng)新互聯(lián)公司自2013年起,先為裕華等服務建站,裕華等地企業(yè),進行企業(yè)商務咨詢服務。為裕華企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
本文主要從業(yè)務及IT的發(fā)展對DevOps的誕生背景、定義演進以及落地價值等方面進行了分析和闡述,以期對DevOps的內涵進行探討。
DevOps在2009年提出以來,已經走過了十個年頭。近幾年來,DevOps的熱度呈快速上漲趨勢,從DORA的年度報告也可以看出來,到2018年末全球主要行業(yè)的DevOps的應用程度已達到30%,上升勢頭迅猛。
然而,時至今日,對于DevOps仍沒有一個準確的定義,這對于我們理解DevOps,或者說在落地DevOps的過程中會帶來不小的困擾,各方都有自己的理解。那么,DevOps的內涵究竟是什么呢?我們期望從DevOps的發(fā)展背景、定義演進以及落地價值等方面進行一次探討。
民用軟件系統(tǒng)的應用崛起于上個世紀八十年代, 2000年后蓬勃發(fā)展,其中,作為重要組成部分的軟件系統(tǒng),逐漸深入到社會的每一個角落,從整體的發(fā)展過來來看,業(yè)務與軟件系統(tǒng)的關系可分為三個階段。
輕度依賴
在這個階段主要出現(xiàn)在早期,軟件系統(tǒng)主要解決業(yè)務中重復多或計算量大的問題,支撐范圍主要局限在業(yè)務中的某一過程或環(huán)節(jié)?;蛘哒f,在這個階段,業(yè)務離開了軟件系統(tǒng)也能開展,軟件對業(yè)務來說不是必選項,軟件功能的更新頻率可以是數天乃至數月、年。
重度依賴
隨著業(yè)務的發(fā)展,業(yè)務的關聯(lián)性與復雜度提高后,業(yè)務完全依賴人工完成已經成為不可能。到這個時期,軟件系統(tǒng)成為業(yè)務的核心支撐,業(yè)務的開展已經離不開軟件系統(tǒng),但尚可接受短暫的非服務期存在,軟件功能的更新頻率被要求在數天、月。
完全依賴
隨著軟件服務深入社會各個角落,社會生活的衣、食、住、行、用都依賴于軟件系統(tǒng),從某一領域或應用來說,軟件系統(tǒng)相對于業(yè)務已經進入了主導階段,軟件系統(tǒng)必須提供365*7*24的服務,任何中斷服務可能都會帶來極大的經濟或社會損失,軟件功能的更新頻率必須控制在數天、小時、分鐘。
IT管理與研發(fā)模式的演進,與IT對業(yè)務的響應效率密不可分,大致可分為三個階段;
“穩(wěn)態(tài)”模式
傳統(tǒng)穩(wěn)態(tài)模式的管理上,業(yè)務、研發(fā)、測試、運維依次分階段管理,各階段的人員只需關注本階段內部的相關內容即可,研發(fā)以系統(tǒng)軟件包交付為目標;整體結構如下圖所示:
在研發(fā)模式上,以瀑布模型為主要特點,其優(yōu)勢是各階段劃分比較清晰、整體成本較低,但迭代速度較慢,其在業(yè)務對軟件輕度依賴階段適用性較好。
“穩(wěn)態(tài)+敏捷”模式
隨著業(yè)務對軟件依賴程度的提高,傳統(tǒng)模式下軟件的迭代效率成為了一個阻礙業(yè)務發(fā)展的主要問題點,于是針對軟件研發(fā)過程最耗時的開發(fā)過程出現(xiàn)了一系列的優(yōu)化措施,敏捷研發(fā)是其代表。這個時期的IT管理模式變成了“穩(wěn)態(tài)+敏捷”的模式,研發(fā)仍舊以系統(tǒng)軟件包交付為目標,如下圖所示:
當然,在這個時期,針對各階段的效率提升也進行得如火如荼,出現(xiàn)了了一大批針對不同階段提速的工具軟件,如下圖所示:
“敏態(tài)”模式
當業(yè)務對軟件系統(tǒng)完全依賴時,IT管理與研發(fā)模式就需要進入“敏態(tài)”模式了。而這個模式也就是我們今天時常提起的DevOps。在這個模式下,研發(fā)交付目標不再是系統(tǒng)軟件包,而是面向業(yè)務的服務能力,如下圖所示:
由于業(yè)務與軟件的關系越來越緊密,研發(fā)的交付已經由原來的面向軟件包產品,而轉向面向業(yè)務需要的服務能力,然而,這種服務能力也是涉及多個方面,下面我們從DevOps的定義發(fā)展,來看看DevOps的內容豐富過程。
“穩(wěn)態(tài)+敏捷”模型只能實現(xiàn)局部效率提升,而DevOps那么唯一的途徑就是從整體上進行優(yōu)化和提升,使整個研運過程形成一個有機的整體。從2009年提出依賴,DevOps的內涵也在進行著不斷的發(fā)展與豐富,我們先看一下不同時期的定義。
2009年10月,【Patrick Debois】DevOps(英文Development和Operations的組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協(xié)作與整合。
2010年5月,DevOps是一個重要的理論,它通過敏捷、精益等在方法、在一個傳統(tǒng)的組織中,把獨立的部門協(xié)同在一起實現(xiàn)跨部門集成,建立更加緊密的多部門協(xié)作。DevOps不僅僅關注軟件部署這一技術問題,它是考慮部門與部門之間溝通和協(xié)作的管理方法。
2014年12月 DevOps是一種軟件開發(fā)方法,它強調軟件開發(fā)人員和信息技術人員之間的溝通、協(xié)作和集成。
2015年11月 DevOps是一種文化、運動或實踐,它強調軟件開發(fā)人員和其他信息技術人員的協(xié)作和溝通,同時強調自動化軟件交付和基礎設施變更的過程。
2018年AWS DevOps定義:DevOps是一組實踐,目的是在確保高質量的情況下,快速地把變更導入到生產環(huán)境。
我們把不同時期的定義整理為一個時間軸,并做一些關鍵字抽?。?/p>
可以看出針對DevOps的定義,隨著時間的推移,DevOps的內涵在不斷豐富,已經從最初一組過程、方法與系統(tǒng)的組合簡的單定義,發(fā)展為一套有理論、有方法、有文化、有實踐的體系。
DevOps體系與傳統(tǒng)模式是有著本質的不同的,主要體現(xiàn)在以下幾個方面:
組織方式不同
DevOps中強調以項目或產品的一體化管理為基本管理模式,從而消除傳統(tǒng)模式下分階段任務管理與執(zhí)行,通過管理模式的調整,消除傳統(tǒng)模式下不同階段的銜接問題。
關注重點不同
DevOps是以最終向業(yè)務的服務能力交付為目標,而不是傳統(tǒng)模式下分階段任務交付為目標。
提升維度不同
DevOps關注軟件系統(tǒng)的整個生命周期,是從整體上提升軟件交付的質量與效率,而不單只關注某一個階段的提升,各階段的提升可以更加的有機協(xié)同。
管控深度不同
DevOps強調全程監(jiān)控,全程度量,通過技術手段透明化軟件交付的全程,包括過程與結果,而傳統(tǒng)模式下過程數據缺乏,難以進行有效的過程度量與分析。
效益效果不同
DevOps支持針對交付過程的持續(xù)優(yōu)化,通過度量數據分析可以快速定位交付過程的問題與努力方向,支持持續(xù)科學的優(yōu)化提升,傳統(tǒng)模式難以做到。
DevOps的定義演進以及與傳統(tǒng)模式的對比,可以看出DevOps體系本身系統(tǒng)化、整體性的設計思想,其既包括了軟件全生命周期的系統(tǒng)化考慮,也包括了了IT管理的多方訴求,DevOps的落地涉及DevOps平臺的建設、流程體系建設、人員賦能、標準規(guī)范等多個方面,其可以為帶來如下方面的提升。
業(yè)務響應能力提升
DevOps的落地,在提升效率的同時可以提升交付的質量,自動化程度的提升可以提升對業(yè)務需求迭代的響應能力,研運吞吐量可以得到幾何級的提升。
研發(fā)交付規(guī)范提升
不同項目或產品的研發(fā)團隊,在同一套平臺上開展研發(fā)交付活動,通過平臺預先制定的流程、規(guī)則等約束不同研發(fā)團隊的交付活動,從而實現(xiàn)研發(fā)交付規(guī)范與標準的統(tǒng)一,實現(xiàn)企業(yè)級的優(yōu)化提升與改進。
研發(fā)交付效率提升
通過針對研發(fā)交付過程中的環(huán)境準備、編譯構建、代碼質量檢查、系統(tǒng)測試、軟件部署等過程的自動化實現(xiàn),降低人工操作或等待人工操作時間,全面提升研發(fā)交付過程的自動化水平,提升研發(fā)交付效率。
研發(fā)交付質量提升
研發(fā)交付質量的從現(xiàn)有的部署結果質量保障,延伸到源代碼質量保障、測試覆蓋度保障等過程,從而實現(xiàn)從源代碼到部署全過程的質量檢查與提升,全鏈路提升研發(fā)交付質量
研發(fā)交付管控提升
針對研發(fā)交付的需求、開發(fā)、測試、發(fā)布和部署等過程,進行全面的數據化和度量,針對重點關注指標建立質量門禁,從而實現(xiàn)自動化的技術管控,結合已有的行政管控,由單一的結果管控,實現(xiàn)研發(fā)交付“過程+結果”管控,提升管控力度。
研發(fā)交付持續(xù)優(yōu)化
基于DevOps平臺,通過流水線過程數據收集,以及進一步的度量分析,實現(xiàn)研發(fā)交付過程的持續(xù)優(yōu)化,既包括DevOps平臺的優(yōu)化,也包括研發(fā)交付流程、標準規(guī)范等方面的優(yōu)化。
DevOps的演進簡單來說就是從一項技術到文化的構建與實踐;從無關緊要到依賴;從業(yè)務的局部到全部。而DevOps的落地價值實現(xiàn)于研、運的整合并且提升對業(yè)務需求的響應。趨勢已成,只愿大家都能共襄盛舉。