任 爽,杜 巍,孫 美
(中國鐵路信息科技有限責(zé)任公司,北京 100038)
傳統(tǒng)IT企業(yè)或大中型企業(yè)IT部門的軟件研發(fā)測試架構(gòu)一般采取“一項(xiàng)目一環(huán)境”模式,此模式具有項(xiàng)目針對性強(qiáng)、單項(xiàng)目構(gòu)建成本低的優(yōu)點(diǎn)。但是,隨著企業(yè)的業(yè)務(wù)不斷增長和信息系統(tǒng)項(xiàng)目不斷增多,特別是在項(xiàng)目研發(fā)初期的設(shè)備采購、環(huán)境搭建和項(xiàng)目執(zhí)行過程中的流程控制上,這種模式存在很多缺陷[1]。隨著信息化的迅猛發(fā)展和互聯(lián)網(wǎng)的高速增長,企業(yè)對應(yīng)用軟件研發(fā)測試的速度、效率和質(zhì)量要求越來越高,傳統(tǒng)開發(fā)測試架構(gòu)模式已不適應(yīng)信息化快速發(fā)展的需要[2]。
鐵路總公司發(fā)布的《鐵路信息化總體規(guī)劃》[3]中關(guān)于信息基礎(chǔ)設(shè)施平臺規(guī)劃明確提出“引入云計(jì)算技術(shù),建設(shè)基于云平臺的開發(fā)測試平臺,向全路提供統(tǒng)一的開發(fā)測試云環(huán)境,實(shí)現(xiàn)開發(fā)測試資源共享,提高開發(fā)測試標(biāo)準(zhǔn)化、規(guī)范化水平,提升業(yè)務(wù)應(yīng)用系統(tǒng)開發(fā)測試環(huán)境部署效率”的目標(biāo)。為此,本文提出基于云平臺的鐵路統(tǒng)一開發(fā)測試平臺體系架構(gòu)。利用源代碼開發(fā)、自動化部署等技術(shù),優(yōu)化軟件開發(fā)測試流程,實(shí)現(xiàn)應(yīng)用集中開發(fā)管理、資源自動分配、軟件自動部署、持續(xù)測試、軟件快速發(fā)布等功能[4-6],為鐵路信息系統(tǒng)開發(fā)、測試提供新模式。
為了進(jìn)一步提升鐵路應(yīng)用自動化水平和創(chuàng)新能力,圍繞如何從資源、應(yīng)用、服務(wù)等多個維度支撐開發(fā)測試環(huán)境,對應(yīng)用開發(fā)測試過程中項(xiàng)目管理、彈性供應(yīng)、自動化部署、自動化測試、統(tǒng)一配置展開相關(guān)的研究和設(shè)計(jì),體系架構(gòu)設(shè)計(jì)如圖1所示。
圖1 統(tǒng)一開發(fā)測試平臺體系架構(gòu)
1.1.1 門戶層
統(tǒng)一門戶采用松耦合架構(gòu),為開發(fā)測試平臺提供了統(tǒng)一的訪問入口,提供自服務(wù)門戶和管理門戶;自服務(wù)門戶面向業(yè)務(wù)使用人員提供了服務(wù)的申請、查看、使用等能力,為用戶提供多樣化的開發(fā)測試服務(wù),包含項(xiàng)目管理、開發(fā)工具、測試工具、應(yīng)用部署等服務(wù);管理門戶面向平臺管理人員提供開發(fā)測試服務(wù)的統(tǒng)計(jì)、審批、定制、訂單管理、系統(tǒng)維護(hù)等能力。
1.1.2 平臺支撐層
項(xiàng)目生命周期管理為軟件開發(fā)過程中相關(guān)人員提供統(tǒng)一的工作平臺,包括項(xiàng)目管理、需求管理、任務(wù)管理、開發(fā)測試管理、缺陷問題管理、持續(xù)集成、文檔管理、事務(wù)組織管理、統(tǒng)計(jì)功能、搜索功能等,實(shí)現(xiàn)軟件開發(fā)與項(xiàng)目全過程的管理。具體管理流程如圖2所示。
圖2 項(xiàng)目管理流程
1.1.3 環(huán)境運(yùn)行支撐層
運(yùn)行環(huán)境基于基礎(chǔ)設(shè)施云平臺為開發(fā)測試平臺提供PaaS層服務(wù),包括Web服務(wù)器、應(yīng)用服務(wù)器、消息中間件和數(shù)據(jù)庫服務(wù)器。
基礎(chǔ)設(shè)施云平臺向開發(fā)測試平臺提供對所有基礎(chǔ)設(shè)施的利用,包括CPU、內(nèi)存、存儲、網(wǎng)絡(luò)和其它基本IT資源,用戶可按實(shí)際需要自由部署操作系統(tǒng)或應(yīng)用程序。開發(fā)測試平臺無需管理或控制任何基礎(chǔ)設(shè)施,云平臺可靈活提供、調(diào)整計(jì)算、存儲和網(wǎng)絡(luò)資源,滿足開發(fā)測試平臺需求。
PaaS層通過創(chuàng)建標(biāo)準(zhǔn)模板及接口封裝,提供信息系統(tǒng)開發(fā)、運(yùn)行時平臺環(huán)境,幫助提高開發(fā)、測試、生產(chǎn)環(huán)境的部署效率;開發(fā)測試平臺在PaaS層之上完成應(yīng)用系統(tǒng)開發(fā)、配置和部署。
基于云計(jì)算技術(shù),建設(shè)鐵路統(tǒng)一化、標(biāo)準(zhǔn)化、自動化的開發(fā)測試平臺,實(shí)現(xiàn)開發(fā)測試資源共享,提升應(yīng)用系統(tǒng)開發(fā)測試的環(huán)境部署效率,面向全路提供統(tǒng)一共享的開發(fā)測試云環(huán)境。鐵路開發(fā)測試平臺技術(shù)架構(gòu)設(shè)計(jì)如圖3所示。
1.2.1 門戶管理
(1)自服務(wù)門戶
圖3 統(tǒng)一開發(fā)測試平臺技術(shù)架構(gòu)
自服務(wù)門戶能夠?yàn)樽罱K用戶構(gòu)建一個多樣化的綜合服務(wù)門戶,提供申請資源和審批服務(wù),其中,審批流程可針對不同服務(wù)設(shè)置相應(yīng)流程,包括門戶內(nèi)容管理、服務(wù)目錄、消息通知、服務(wù)搜索和服務(wù)生命周期。
(2)管理門戶
管理門戶以應(yīng)用運(yùn)維為核心,提供應(yīng)用節(jié)點(diǎn)管理、應(yīng)用分區(qū)管理、交付件倉庫管理、存儲管理、后端服務(wù)接入與發(fā)布等,包括服務(wù)注冊、服務(wù)發(fā)布/取消、服務(wù)訪問控制、服務(wù)監(jiān)控統(tǒng)計(jì)和流程審批。
1.2.2 開發(fā)測試平臺云
(1)項(xiàng)目管理
項(xiàng)目管理為項(xiàng)目過程提供專業(yè)的知識庫、技能分工、管理工具,在有限的資源條件下按用戶期望完成項(xiàng)目的最終目標(biāo),包括項(xiàng)目的生命周期管理、風(fēng)險管理、文檔管理、任務(wù)管理、問題管理等功能。
(2)需求和變更管理
需求管理是開發(fā)測試平臺的一個重要組成模塊,應(yīng)能夠快速高效地對需求進(jìn)行全周期管理。主要包括:定義需求屬性、需求內(nèi)容、需求流程、需求報(bào)表、需求跟蹤矩陣、需求生成任務(wù)、需求版本管理。
(3)開發(fā)管理
開發(fā)測試平臺中提供統(tǒng)一的交付模式,存在差異的應(yīng)用環(huán)境應(yīng)根據(jù)業(yè)務(wù)特性提供不同的部署方案,并且針對部署過程依賴的部署包進(jìn)行統(tǒng)一管理。包括開發(fā)框架管理和開發(fā)工具管理,提供支持Java、.NET、Python等各語言環(huán)境,可自動構(gòu)建,內(nèi)置常用開發(fā)工具,覆蓋在開發(fā)過程中涉及的代碼管理、編譯打包、集體開發(fā)環(huán)境(IDE)開發(fā)、部署發(fā)布。
(4)配置管理
配置管理解決開發(fā)測試環(huán)境下配置項(xiàng)統(tǒng)一管理問題,將項(xiàng)目中通用的配置項(xiàng)在配置中心進(jìn)行統(tǒng)一管控,從而實(shí)現(xiàn)多業(yè)務(wù)應(yīng)用的配置統(tǒng)一發(fā)布,配置變更實(shí)時推送。主要包括:運(yùn)行環(huán)境配置、應(yīng)用組件配置、配置倉庫、部署配置和配置審計(jì)。
(5)持續(xù)集成管理
持續(xù)集成管理讓開發(fā)團(tuán)隊(duì)持續(xù)生產(chǎn)可靠軟件,審視軟件質(zhì)量,提升交付速度。提供代碼托管、開發(fā)流水線、設(shè)置構(gòu)建策略、管理構(gòu)建依賴文件、自動化測試、生成交付件策略等功能。
(6)測試管理
根據(jù)鐵路開發(fā)測試平臺的測試管理要求,通過測試模塊可以形成快速交付體系,幫助鐵路用戶進(jìn)行自動化測試,構(gòu)建應(yīng)用全覆蓋的測試體系。測試管理包括單元測試、系統(tǒng)測試、集成測試、功能測試、性能測試、安全測試6個方面。
(7)缺陷管理
缺陷管理是在軟件開發(fā)過程中針對軟件缺陷的識別、溝通、修復(fù)、關(guān)閉的處理過程,開發(fā)測試平臺的缺陷管理包括軟件缺陷申請、缺陷監(jiān)管、缺陷處理、缺陷庫、指派通知等功能,實(shí)現(xiàn)對信息運(yùn)行缺陷的全過程管理。
基于在線IDE的源碼開發(fā)技術(shù)進(jìn)行研究,在線編程技術(shù)涉及Web前端以及后端編譯系統(tǒng)。Web前端需要識別開發(fā)語言類型(如Java、PHP、.net等),提供用戶代碼錄入、行號、高亮語法、自動補(bǔ)全等功能。后端編譯系統(tǒng)接收到用戶的代碼,判斷用戶的代碼運(yùn)行環(huán)境,并調(diào)用正確的編譯器進(jìn)行編譯并將結(jié)果返回前端進(jìn)行顯示。在線IDE工具包括Web入口、編輯器、匯編器 (面向CPU或指令集)、編譯器 (面向不同語言) 同時充當(dāng)預(yù)編器、鏈接器、源碼構(gòu)建工具,其過程如圖4所示。
圖4 在線IDE開發(fā)過程
持續(xù)集成是一種軟件開發(fā)實(shí)踐,它倡導(dǎo)團(tuán)隊(duì)開發(fā)成員經(jīng)常集成開發(fā)測試運(yùn)維的全生命周期,甚至每天都可能發(fā)生多次集成。而每次的集成都是通過自動化的構(gòu)建來驗(yàn)證,包括自動編譯、發(fā)布和測試,從而盡快地發(fā)現(xiàn)集成錯誤,讓團(tuán)隊(duì)能夠更快地開發(fā)內(nèi)聚的軟件。
自動化部署技術(shù)是以用戶自定義的部署要求將應(yīng)用需要的環(huán)境進(jìn)行快速構(gòu)建,部署過程不需要用戶手動干預(yù),并且能夠根據(jù)應(yīng)用的負(fù)載情況,自動選擇部署策略,對部署過程進(jìn)行實(shí)時反饋[7]。其原理如圖5所示。
圖5 自動化部署原理
流程編排技術(shù)使用基于業(yè)務(wù)流程建模符號(BPMN,Business Process Modeling Notation)的自定義流程開發(fā)技術(shù)。BPMN定義了一個可視化的事件流程,該流程可用于創(chuàng)建業(yè)務(wù)流程操作的圖形化模型。業(yè)務(wù)流程圖由一系列的圖形化元素組成。這些元素簡化了模型的開發(fā),且可讓使用者便于理解和操作。
應(yīng)用資源優(yōu)化技術(shù)主要針對應(yīng)用集群的負(fù)載過大。開發(fā)測試平臺能夠動態(tài)擴(kuò)展應(yīng)用的實(shí)例,以支撐應(yīng)用能夠正常承載訪問情況,保障應(yīng)用的持續(xù)、健康運(yùn)行。該技術(shù)主要依靠彈性伸縮和動態(tài)資源管理實(shí)現(xiàn),為應(yīng)用實(shí)現(xiàn)了真正意義上的資源按需分配。資源優(yōu)化技術(shù)涉及到的技術(shù)點(diǎn)包括:彈性伸縮策略條件、策略解析器、彈性伸縮行為、資源動態(tài)調(diào)度等幾個方面,彈性伸縮主要由監(jiān)控技術(shù)來發(fā)現(xiàn)負(fù)載的情況,并根據(jù)負(fù)載對應(yīng)的策略條件來觸發(fā)彈性伸縮行為。
云訪問控制技術(shù),指防止對任何云資源進(jìn)行未授權(quán)的訪問,從而使開發(fā)測試平臺在合法的范圍內(nèi)使用[8]。借助用戶身份及其所歸屬的某項(xiàng)定義組來限制用戶對某些信息項(xiàng)的訪問,或限制對某些控制功能的使用,如基于角色的權(quán)限訪問控制(RBAC)、UniNAC網(wǎng)絡(luò)準(zhǔn)入控制的原理就是基于此技術(shù)之上。
技術(shù)路線分為兩種:(1)商業(yè)軟件平臺+開源軟件+自主研發(fā)路線,商業(yè)軟件平臺采用Atlassian公司開發(fā)的工具集,其工具集能夠完成統(tǒng)一認(rèn)證缺陷跟蹤、需求收集、流程審批、任務(wù)跟蹤、項(xiàng)目跟蹤,知識庫管理,持續(xù)集成,代碼檢測,代碼托管等功能;采用開源Docker&K8S平臺完成開發(fā)管理的功能;自研或使用開源ansible自動化部署工具使Atlassian工具集和K8S平臺進(jìn)行聯(lián)動。(2)開源+自主研發(fā)路線:各個功能模塊均使用目前較為流行的開源軟件,包括TestLink,gitlab,redmine,Docker等,各軟件基本能夠完成開發(fā)測試平臺所涉及到的功能,但是有些軟件之間沒有實(shí)現(xiàn)數(shù)據(jù)流的自動流轉(zhuǎn),需要二次開發(fā)。兩種技術(shù)路線對比如表1所示。
表1 兩種技術(shù)路線對比表
因?yàn)樯逃卯a(chǎn)品采用閉源形式,有些不滿足統(tǒng)一測試平臺的功能不能被修改,不能做到自主可控,且費(fèi)用不菲,開發(fā)測試原型平臺搭建采用開源+自主研發(fā)的技術(shù)路線。
結(jié)合開發(fā)測試平臺體系架構(gòu)設(shè)計(jì)、關(guān)鍵技術(shù)及技術(shù)路線分析,基于“鐵信云”的統(tǒng)一開發(fā)測試平臺原型技術(shù)路線如圖6所示。
圖6 原型平臺技術(shù)路線
(1)原型以Redmine工具與各模塊進(jìn)行對接,對接模塊包括Testlink,Gitlab,jenkins。
(2)Redmine工具完成項(xiàng)目管理域需求管理的功能,TestLink工具完成缺陷管理的功能,Gitlab工具完成代碼管理功能,Jenkins工具完成持續(xù)集成的功能。
(3)sourceTree作為代碼管理客戶端與Gitlab對接,Jenkins與Sonar Qube,Gitlab,Robot Framework集成,完成代碼持續(xù)審查,自動化測試。
(4)通過ansible自動腳本調(diào)用Docker或K8S,完成自動化部署,同時,Docker能夠提供標(biāo)準(zhǔn)化的測試工具。通過輕量目錄訪問協(xié)議(LADP)進(jìn)行用戶認(rèn)證。
本文通過對鐵路系統(tǒng)開發(fā)測試現(xiàn)狀分析,引入云計(jì)算、自動化部署等技術(shù),研究提出的基于云平臺的鐵路統(tǒng)一開發(fā)測試平臺架構(gòu),可以有效解決現(xiàn)有系統(tǒng)開發(fā)、測試過程中,資源分散、獨(dú)享、重復(fù)利用率低以及管理水平低等問題,為鐵路信息系統(tǒng)開發(fā)、測試提供新模式。