圖 4. DevOps 流水線交付平臺(tái)整體架構(gòu)圖

顯然,在 DevOps 流水線工具平臺(tái)實(shí)施的四層架構(gòu)中,其核心是流水線工具平臺(tái)層的搭建,對(duì)上,該工具平臺(tái)需要通過(guò)流水線引擎與現(xiàn)有的流程管理系統(tǒng)對(duì)接,對(duì)下,則需要兼容現(xiàn)有的各種程序語(yǔ)言、開(kāi)發(fā)發(fā)布模式、構(gòu)建方式,以及存量硬件和云平臺(tái)的基礎(chǔ)設(shè)施。在本系列文章的后續(xù)各篇中,我們將重點(diǎn)圍繞流水線工具平臺(tái)的搭建進(jìn)行闡述。
實(shí)施思路討論
流水線交付平臺(tái)各層實(shí)施順序
對(duì)于第四節(jié)所述工具平臺(tái)的實(shí)施,不同的企業(yè)具體的實(shí)際情況可能會(huì)略有差別,因此,不可能對(duì)所有的企業(yè)都采用同樣的思路進(jìn)行實(shí)施;同時(shí),對(duì)于大型企業(yè)來(lái)說(shuō),由于產(chǎn)品形態(tài)的多樣化,開(kāi)發(fā)語(yǔ)言的廣泛性,各開(kāi)發(fā)團(tuán)隊(duì)情況的差異性,該工具平臺(tái)的完整實(shí)施也是不可能一蹴而就的。在具體實(shí)施時(shí),需要根據(jù)具體情況選擇制定相應(yīng)的策略進(jìn)行實(shí)施??偨Y(jié)而言,有兩個(gè)維度的問(wèn)題需要考慮,一個(gè)是這四層的實(shí)施順序,另一個(gè)則是對(duì)于流水線工具平臺(tái)層中,各個(gè)具體工具的實(shí)施思路。
從上到下的四層中,根據(jù)邏輯上的耦合性,我們將其分成了三組,流程管控層自成一組,稱為第一組,流水線執(zhí)行引擎及流水線工具平臺(tái)層作為一組,稱為第二組,基礎(chǔ)架構(gòu)自成一組,稱為第三組。
對(duì)于目前大多數(shù)的金融企業(yè)來(lái)說(shuō),現(xiàn)在基本都已經(jīng)存在相應(yīng)的開(kāi)發(fā)測(cè)試發(fā)布管控流程,不同的只是成熟度不同而已。因此,流水線管控這一層更多的應(yīng)該是考慮如何對(duì)已有流程進(jìn)行優(yōu)化。開(kāi)發(fā)測(cè)試發(fā)布流程中各個(gè)階段的劃分和銜接肯定會(huì)影響到流水線執(zhí)行引擎的實(shí)施,因此,這一層的實(shí)施可與第二組同時(shí)進(jìn)行,或者在第二組實(shí)施之前,但不能在第二組之后。
基礎(chǔ)架構(gòu)層中如果存在云平臺(tái),則對(duì)流水線工具平臺(tái)層的影響是流水線工具平臺(tái)需要擴(kuò)展到對(duì)云平臺(tái)的兼容,因此,第三組與第二組之間既可同時(shí)實(shí)施,也可先后實(shí)施,只不過(guò),如果是第二組先實(shí)施之后再實(shí)施第三組的云平臺(tái),則第三組實(shí)施后,需要對(duì)第二組進(jìn)行擴(kuò)展。
第二組的兩層中,流水線引擎是基于流水線工具平臺(tái)進(jìn)行的,因此,流水線執(zhí)行引擎一定得在流水線工具平臺(tái)之后實(shí)施。因此,完整的實(shí)施順序如圖 5 所示。
圖 5. DevOps 流水線各層實(shí)施順序

流水線工具平臺(tái)層實(shí)施思路
在流水線工具平臺(tái)層中,對(duì)于開(kāi)發(fā)測(cè)試發(fā)布過(guò)程的不同階段,相應(yīng)的存在配置管理、代碼構(gòu)建、靜態(tài)分析、自動(dòng)化測(cè)試、構(gòu)建包管理、自動(dòng)化部署、監(jiān)控等眾多工具,其實(shí)施過(guò)程相對(duì)較長(zhǎng),也比較復(fù)雜。在具體實(shí)施時(shí),存在兩種可能的思路,一種為逐點(diǎn)突破,然后再全部連接成一個(gè)完整的工具平臺(tái)。這種思路下,會(huì)對(duì)企業(yè)整體的交付流水線進(jìn)行分析,找出其中最大的痛點(diǎn)(如配置管理、構(gòu)建管理或者自動(dòng)化部署等),然后重點(diǎn)實(shí)施,并推廣至全公司,接著再繼續(xù)實(shí)施下一個(gè)痛點(diǎn),通過(guò)一個(gè)一個(gè)痛點(diǎn)的實(shí)施,最后再連接成一個(gè)完整的 DevOps 交付流水線工具平臺(tái)。
第二種則是從項(xiàng)目突破,先找一個(gè)比較典型的項(xiàng)目或者產(chǎn)品作為試點(diǎn),在該項(xiàng)目或者產(chǎn)品上構(gòu)建完整的工具平臺(tái),并進(jìn)行深入實(shí)施,在實(shí)施成功后,再推廣至其他的項(xiàng)目或者產(chǎn)品。這種方法的特點(diǎn)是,先考慮比較小的范圍和需求,在獲取到好的收益后,再考慮更廣的范圍和需求,對(duì)原有工具平臺(tái)做優(yōu)化。
當(dāng)然,具體企業(yè)有具體企業(yè)的固有特點(diǎn),包括文化、組織結(jié)構(gòu)、現(xiàn)有技術(shù)水平等等,真正的實(shí)施思路還需要具體根據(jù)具體的情況進(jìn)行更具個(gè)性化的制定。
實(shí)施難點(diǎn)及經(jīng)驗(yàn)總結(jié)
過(guò)去的幾年中,本文作者所在團(tuán)隊(duì)一直在某些金融企業(yè)實(shí)施本文所述的 DevOps 流水線工具平臺(tái),根據(jù)實(shí)施過(guò)程的經(jīng)驗(yàn),我們認(rèn)為,在實(shí)施過(guò)程中,主要存在如下幾大難點(diǎn):
短期收益與長(zhǎng)期收益的平衡
對(duì)于開(kāi)發(fā)人員和運(yùn)維人員來(lái)說(shuō),每天的工作任務(wù)都非常重,其最關(guān)心的是眼前的問(wèn)題能不能解決,當(dāng)前的效率能不能馬上提高。而任何一個(gè)新工具,新方法的實(shí)施都不可避免地需要投入一定的時(shí)間進(jìn)行學(xué)習(xí)、適應(yīng),會(huì)對(duì)當(dāng)前的工作造成影響,甚至短期內(nèi)反而會(huì)降低效率。故而在實(shí)施初期會(huì)引起部分團(tuán)隊(duì)成員的抵觸和反對(duì),這個(gè)時(shí)候,如何將開(kāi)發(fā)人員及發(fā)布人員當(dāng)前迫切關(guān)心的短期收益與整個(gè)平臺(tái)實(shí)施后的長(zhǎng)期收益結(jié)合起來(lái)就成為實(shí)施推進(jìn)的難點(diǎn)之一。