作為實施的第一步,顯然,消除大量的手工操作,構(gòu)建一個持續(xù)交付的流水線平臺是最基礎(chǔ)也是最迫切的,只有通過流水線平臺的自動化和持續(xù)流動,才能保證在不同階段、不同節(jié)點(diǎn)上產(chǎn)品發(fā)布的一致性和穩(wěn)定性,同時,也才能消除由于人工操作所引入的人為風(fēng)險,同時提高效率。
圖 3. 推進(jìn) DevOps 實施的三個主要階段

作為實施的第二步,則需要對現(xiàn)有的開發(fā)模式及產(chǎn)品架構(gòu)做進(jìn)一步的優(yōu)化,否則,整個流水線是很難順暢地流動起來的。例如,如果不調(diào)整固定版本排期的開發(fā)模式,則即使自動化程度再高,緊急需求的上線仍然需要等待整個版本的上線;而對于項目排期的開發(fā)模式,在上線前,多個項目代碼或者構(gòu)建包的手工合并也是必不可少的;在傳統(tǒng)緊耦合的產(chǎn)品架構(gòu)下,想要做到自動化的增量迭代發(fā)布,也是非常困難的,而每次都將整個產(chǎn)品的所有代碼進(jìn)行發(fā)布也是極不現(xiàn)實的,這些其實都是實現(xiàn)整個 DevOps 持續(xù)交付過程全自動化的障礙。因此,在構(gòu)建好持續(xù)交付的流水線平臺后,其第二步就是開發(fā)模式及產(chǎn)品架構(gòu)的優(yōu)化。當(dāng)然,如果沒有第一步的自動化的持續(xù)交付平臺作為基礎(chǔ),則由開發(fā)模式調(diào)整所帶來的發(fā)布次數(shù)增多也是無法完全用手工完成的。
在通過工具自動化的方式實現(xiàn)產(chǎn)品的持續(xù)交付后,由于人工操作的減少,自動化及流水線操作的提高,包括操作過程可追蹤性的實現(xiàn),快速自動回滾操作的實施等,這個時候,在完整的開發(fā)測試交付流程中,有些管控步驟可能就是多余的,是可以優(yōu)化的。因此,實施的第三步就是對整體開發(fā)測試發(fā)布流程進(jìn)行優(yōu)化,去掉冗余的人工評審步驟,從而實現(xiàn)企業(yè)級的 DevOps 持續(xù)交付流水線。
工具平臺建設(shè)整體方案
在 DevOps 實施的三個階段中,第一個階段,DevOps 交付流水線平臺的搭建是最基礎(chǔ)也是非常關(guān)鍵的步驟,對于金融企業(yè)來說 ,由于其對產(chǎn)品質(zhì)量、運(yùn)營風(fēng)險的嚴(yán)格要求,以及自身產(chǎn)品的復(fù)雜性、特殊性,該平臺的構(gòu)建需要考慮如下問題:
該平臺一定要與企業(yè)目前所具備的基礎(chǔ)設(shè)施相結(jié)合,而不能像一些初創(chuàng)企業(yè),馬上就對整個基礎(chǔ)環(huán)境及設(shè)施進(jìn)行更新。例如,目前大家都已經(jīng)非常清楚云平臺的優(yōu)勢以及對于 DevOps 推進(jìn)的重要性,但是,對于一個大型金融企業(yè)來說,并不是說馬上就可以將所有的應(yīng)用都移到云平臺上的。
該平臺一定要考慮到企業(yè) IT 組織目前的組織結(jié)構(gòu)現(xiàn)狀、人才技能現(xiàn)狀以及存量產(chǎn)品特點(diǎn)。風(fēng)險控制和穩(wěn)定是金融企業(yè) IT 系統(tǒng)需要考慮的首要問題,這些限制導(dǎo)致了他們無法像一些小型的初創(chuàng)企業(yè)一樣,一夜之間即進(jìn)行重大的 IT 組織調(diào)整,甚至產(chǎn)品更換。他們只能是逐步的穩(wěn)健的創(chuàng)新,在創(chuàng)新的同時,還需要保持已有組織、人才以及產(chǎn)品的相對穩(wěn)定。
該平臺一定要與企業(yè)目前已有的流程控制系統(tǒng)相結(jié)合,而不能獨(dú)立于現(xiàn)有的流程控制系統(tǒng)?,F(xiàn)有的開發(fā)測試發(fā)布流程,是協(xié)調(diào)整個組織行為的重要工具,也是控制產(chǎn)品發(fā)布風(fēng)險的有力工具,如果自動化交付平臺脫離了這些流程的監(jiān)管,就有可能變成規(guī)避現(xiàn)有流程監(jiān)控的新工具,從而帶來更大的風(fēng)險。
基于以上考慮,本文設(shè)計了如圖 4 所示的 DevOps 流水線交付平臺架構(gòu)。在該架構(gòu)中,我們將整體的流水線交付平臺分成了四層:基礎(chǔ)架構(gòu)層、流水線工具平臺層、流水線引擎層以及流程管控層。
基礎(chǔ)架構(gòu)層是一個企業(yè)最基本的基礎(chǔ)設(shè)施,既包含了存量的硬件平臺,也包含了云計算平臺,首先,只有在基礎(chǔ)實施上實現(xiàn)彈性可伸縮、消除開發(fā)測試環(huán)境的差異,才能實現(xiàn)真正的 DevOps。而流水線工具平臺則是為企業(yè)的代碼開發(fā)、測試及發(fā)布提供了一個端到端的工具平臺,通過該工具平臺的自動化和相互間的無縫對接,實現(xiàn)了從軟件代碼配置管理、自動化構(gòu)建、測試到快速的自動化發(fā)布。流水線工具分布在整個開發(fā)測試發(fā)布過程的各個階段,需要不同的角色在不同的階段進(jìn)行配合操作,而且這個操作過程需要置于企業(yè)現(xiàn)有流程管控系統(tǒng)的管控之下,因此,我們還需要流水線引擎層,用于根據(jù)整體開發(fā)測試發(fā)布不同階段的需要,驅(qū)動底層的工具平臺進(jìn)行產(chǎn)品的代碼管理、構(gòu)建及部署,同時對上又與企業(yè)的流程管控系統(tǒng)對接,使得整個操作過程置于流程監(jiān)控之下。