對(duì)于部分比較獨(dú)立的產(chǎn)品開(kāi)發(fā),由于不存在與其他產(chǎn)品之間的強(qiáng)關(guān)聯(lián),可以獨(dú)立開(kāi)發(fā)、測(cè)試、發(fā)布,因此對(duì)于這些產(chǎn)品,就可以采用敏捷的方式進(jìn)行開(kāi)發(fā),即對(duì)單個(gè)產(chǎn)品按照一定的節(jié)奏進(jìn)行開(kāi)發(fā)、測(cè)試、發(fā)布等。這是最為理想的開(kāi)發(fā)模式,但是對(duì)于金融企業(yè)來(lái)說(shuō),能夠滿足這種特征的產(chǎn)品只是微乎其微,大量的產(chǎn)品相互之間都還是存在非常緊密的關(guān)聯(lián)的。
當(dāng)然,現(xiàn)在也有部分大型金融企業(yè)在積極探索整個(gè)組織都采用敏捷的方式進(jìn)行開(kāi)發(fā),并取得了積極的成果,但是畢竟還沒(méi)有成熟到足以供其他企業(yè)模仿照搬的程度。
面臨的主要挑戰(zhàn)
長(zhǎng)期以來(lái),固定版本排期及項(xiàng)目排期的開(kāi)發(fā)模式,為大型金融企業(yè)業(yè)務(wù)的快速發(fā)展提供了強(qiáng)有力的 IT 保障,同時(shí)也確保了產(chǎn)品的質(zhì)量和運(yùn)行風(fēng)險(xiǎn)。但是,近年來(lái),隨著大量互聯(lián)網(wǎng)企業(yè),特別是移動(dòng)互聯(lián)網(wǎng)企業(yè)的沖擊,大型金融企業(yè)也不得不面臨在業(yè)務(wù)模式加快創(chuàng)新的同時(shí),需要 IT 團(tuán)隊(duì)加快開(kāi)發(fā)節(jié)奏,快速推出滿足業(yè)務(wù)發(fā)展需求的產(chǎn)品。而這種需求正對(duì)金融企業(yè)現(xiàn)有的 IT 開(kāi)發(fā)模式提出緊迫的挑戰(zhàn),根據(jù)我們的研究,這些挑戰(zhàn)主要體現(xiàn)在如下的三個(gè)矛盾中(圖 2)。
圖 2. 主要的開(kāi)發(fā)發(fā)布模式及面臨的主要挑戰(zhàn)

為保證產(chǎn)品質(zhì)量而設(shè)定的過(guò)長(zhǎng)的開(kāi)發(fā)測(cè)試流程與快速迭代交付的迫切業(yè)務(wù)需求之間的矛盾
在傳統(tǒng)的產(chǎn)品開(kāi)發(fā)過(guò)程中,哪怕一個(gè)再小的需求的開(kāi)發(fā)上線都必須經(jīng)過(guò)立項(xiàng)、測(cè)試以及生產(chǎn)發(fā)布幾個(gè)階段(如圖 2 所示),特別是測(cè)試階段,更是需要至少一個(gè)測(cè)試輪次的時(shí)間。在固定版本排期的開(kāi)發(fā)模式中,則再急迫的需求也必須等待大版本的集中上線才能夠發(fā)布到生產(chǎn)環(huán)境中。而從業(yè)務(wù)的角度,為了適應(yīng)快速的市場(chǎng)變化,對(duì)于部分與用戶交互比較頻繁的需求,特別是生產(chǎn)環(huán)境中發(fā)現(xiàn)的亟待修復(fù)的缺陷,則需要其能夠快速發(fā)布,而不是等待冗長(zhǎng)的開(kāi)發(fā)測(cè)試流程。所以,這種一般化的冗長(zhǎng)的開(kāi)發(fā)測(cè)試發(fā)布流程已經(jīng)無(wú)法適應(yīng)互聯(lián)網(wǎng)時(shí)代產(chǎn)品快速迭代交付的現(xiàn)實(shí)需求。
大量手工操作與金融企業(yè)對(duì)于產(chǎn)品質(zhì)量一致性、穩(wěn)定性嚴(yán)苛要求之間的矛盾
隨著業(yè)務(wù)的發(fā)展,目前對(duì)大型的金融企業(yè)來(lái)說(shuō),對(duì)于與用戶交互頻繁的產(chǎn)品,單個(gè)產(chǎn)品只部署在一個(gè)或者少量幾個(gè)服務(wù)器節(jié)點(diǎn)上是遠(yuǎn)遠(yuǎn)無(wú)法滿足大量的并發(fā)訪問(wèn)需求的,因此,一個(gè)產(chǎn)品往往都會(huì)部署在多個(gè)服務(wù)器節(jié)點(diǎn),甚至是幾十個(gè)服務(wù)器節(jié)點(diǎn)上。盡管部署節(jié)點(diǎn)多,對(duì)于企業(yè)本身來(lái)說(shuō),最基本的要求就是不同節(jié)點(diǎn)在所部署產(chǎn)品的版本、配置等等上必須是保持一致的。 而由于 IT 發(fā)展時(shí)間的限制,目前整個(gè)開(kāi)發(fā)發(fā)布過(guò)程中,還存在大量的手工操作環(huán)節(jié),特別是產(chǎn)品的構(gòu)建以及到生產(chǎn)環(huán)境的部署,對(duì)于手工操作來(lái)說(shuō),每次發(fā)布包的構(gòu)建以及每個(gè)節(jié)點(diǎn)的發(fā)布都是一次全新的操作,很容易出現(xiàn)失誤或者不一致的地方。故而,大量的手工操作已經(jīng)無(wú)法適應(yīng)面對(duì)大量節(jié)點(diǎn)部署時(shí)的一致性以及穩(wěn)定性要求。
開(kāi)發(fā)團(tuán)隊(duì)對(duì)于流程簡(jiǎn)單性、快速性的現(xiàn)實(shí)要求與風(fēng)險(xiǎn)管控之間的矛盾。
從開(kāi)發(fā)團(tuán)隊(duì)的角度,其根本目的就是滿足業(yè)務(wù)方的需求,能夠快速的將開(kāi)發(fā)完成的功能發(fā)布到生產(chǎn)環(huán)境中,特別是在業(yè)務(wù)部門(mén)對(duì)發(fā)布頻率加快的需求與日俱增的壓力下,他們對(duì)于開(kāi)發(fā)測(cè)試發(fā)布流程中所存在的各個(gè)管控點(diǎn)就往往頗具怨言,認(rèn)為有些把控環(huán)節(jié)不僅延緩了發(fā)布時(shí)間,而且還浪費(fèi)了他們的時(shí)間,他們希望流程越簡(jiǎn)單越好。而從項(xiàng)目管理及運(yùn)維的角度,在每年發(fā)布的幾千甚至上萬(wàn)個(gè)版本中,只要其中有一個(gè)版本存在問(wèn)題或者發(fā)布失誤,就是難以容忍的,因此,為了防止可能存在的風(fēng)險(xiǎn),在現(xiàn)有大量依靠手工操作的現(xiàn)實(shí)下,他們必須千方百計(jì)挖掘可能存在的風(fēng)險(xiǎn)點(diǎn),并設(shè)置各種嚴(yán)格的評(píng)審點(diǎn)進(jìn)行把關(guān),以防止可能的風(fēng)險(xiǎn)流入到生產(chǎn)環(huán)境中。因此,現(xiàn)有由于風(fēng)險(xiǎn)管控所疊加上來(lái)的流程管控已經(jīng)無(wú)法滿足開(kāi)發(fā)團(tuán)隊(duì)對(duì)于流程簡(jiǎn)單性及快速性的需求。
應(yīng)對(duì)挑戰(zhàn),推進(jìn) DevOps 實(shí)施
顯然,目前大型金融企業(yè)所面臨的挑戰(zhàn)既有技術(shù)層面上的,也有開(kāi)發(fā)模式以及流程管理上的,試圖采用單一的方法進(jìn)行應(yīng)對(duì)是不可能的,當(dāng)然也無(wú)法一蹴而就進(jìn)行解決。本文認(rèn)為,為應(yīng)對(duì)這些挑戰(zhàn),從整個(gè) DevOps 實(shí)施的角度,需要通過(guò)圖 3 所示的三個(gè)階段逐步進(jìn)行實(shí)施。