DevOps(英文Development和Operations的組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進軟件開發(fā)、技術運營部門之間的溝通、協(xié)作與整合。它的出現(xiàn)是由于軟件行業(yè)日益清晰地認識到:為了按時交付軟件產(chǎn)品和服務,開發(fā)和運營工作必須緊密合作。DevOps的方法提倡開發(fā)與IT運維部門之間高度協(xié)同,從而在提高生產(chǎn)環(huán)境的可靠性、穩(wěn)定性與彈性的同時,又能完成高頻率軟件升級部署。
相對于瀑布式開發(fā),敏捷開發(fā)過程的一個基本原則就是以更快的頻率交付最小化可用的軟件。但是高頻率的版本發(fā)布對IT運維來講卻是一場災難。對于BOSS開發(fā)的每個需求提出者來講,都希望自己提出的功能開發(fā)馬上實現(xiàn),然而軟件開發(fā)卻有自己的流程,例如需求了解、實施步驟分解、代碼開發(fā)、功能測試等等一系列必不可少的工作。最后由于BOSS升級工作又包括了是否需要調整前臺業(yè)務;是否需要調整生產(chǎn)數(shù)據(jù)庫;是否需要前臺應用程序升級,每次升級都需要版本的重新部署,前臺的版本升級部署一次需要大約2個小時的時間,數(shù)據(jù)庫的調整也需要時間,當數(shù)據(jù)庫表結構改變和大批量的數(shù)據(jù)增刪改時還會影響數(shù)據(jù)同步,影響報表的統(tǒng)計查詢,因此IT運維的困難制約了敏捷開發(fā)的實施。如何解決兩者之間的矛盾呢?DevOps是目前普遍認為的一種行之有效的方法。DevOps要求開發(fā)與IT運維高度協(xié)同,IT運維部門應充分的參與到需求的開發(fā)中來,及時調整IT支撐系統(tǒng)的架構,來適應軟件開發(fā)的不斷發(fā)展。這里面需要注意的問題有幾個。第一點要求需求開發(fā)對于需要的IT支撐能力與IT部門要在全局部署上達成一致。例如BOSS系統(tǒng)中每個月的權責出賬、銷賬,需要計算全省2000萬客戶每個產(chǎn)品產(chǎn)生的賬單,需求開發(fā)按照系統(tǒng)目前的計算能力無法在12個小時之內(nèi)計算完畢,研發(fā)就會采用分批計算的方式來實現(xiàn),但是分批計算方式會導致出賬后業(yè)務操作重新計算權責的問題,并且更改了權責實現(xiàn)的方式。如果采用新的內(nèi)存數(shù)據(jù)庫技術或者找出導致計算IO的瓶頸,在硬件或系統(tǒng)軟件方面做一下優(yōu)化和替代,則不需要更改原業(yè)務設計達到系統(tǒng)要求。這是一個很好的需要DevOps的例子。當研發(fā)部門缺乏與IT部門的溝通會導致類似很多復雜的開發(fā)。另外還有一個很重要的問題是需要打造一種文化來促進DevOps:持續(xù)不斷的探索精神,勇于承擔風險的精神以及從成功和失敗中學習的能力。探索精神與勇?lián)L險精神可以確保項目的持續(xù)改進,但也意味著項目到達了之前未曾到過的危險區(qū)域,因此這也迫使我們?nèi)W習,去掌握那些新技術,從而使我們離開危險區(qū)域。
如果可以按照DevOps的方式來開發(fā)項目,可以達到縮短開發(fā)周期和更高的部署頻率;提高軟件開發(fā)的質量并提高組織的有效性。下一步在BOSS系統(tǒng)的軟件開發(fā)中我們要積極探討這種模式在系統(tǒng)內(nèi)的應用。