張冬松,胡秀云,鄔長安,毛鳳翔
(1.國防科技大學 計算機學院,湖南 長沙 410073;2.信陽學院 大數(shù)據(jù)與人工智能學院,河南 信陽 464000)
大數(shù)據(jù)分析及可視化是近年來重新興起的一門多領(lǐng)域交叉學科,是一類從海量數(shù)據(jù)中自動分析獲得規(guī)律,并利用規(guī)律對未知數(shù)據(jù)進行預測,同時提供可視化交互方式和展示界面,在數(shù)據(jù)挖掘、電子商務(wù)、金融分析、政務(wù)管理等領(lǐng)域有著十分廣泛的應(yīng)用,是當前各行各業(yè)的一個熱點[1]。
從大數(shù)據(jù)行業(yè)應(yīng)用角度來看,當前大數(shù)據(jù)應(yīng)用發(fā)展趨勢正向著行業(yè)縱深層次穩(wěn)步前行。以政務(wù)大數(shù)據(jù)為例,用數(shù)據(jù)治理、用數(shù)據(jù)說話、用數(shù)據(jù)發(fā)展、用數(shù)據(jù)改進和用數(shù)據(jù)創(chuàng)新,已成為政務(wù)大數(shù)據(jù)公認的價值體系所在。通過大數(shù)據(jù)分析及可視化技術(shù),將政務(wù)相關(guān)的數(shù)據(jù)整合起來進行有效分析,提供立體可視化展示能力,應(yīng)用到政府業(yè)務(wù)領(lǐng)域,賦能政府機構(gòu),提升政務(wù)實施效能。
當前,大數(shù)據(jù)分析及可視化可以提供強大的數(shù)據(jù)讀取功能、高效的數(shù)據(jù)處理方法、可視化的數(shù)據(jù)探索方式、豐富的數(shù)據(jù)挖掘算法、簡易模型訓練等功能,從易用性、功能范圍、數(shù)據(jù)挖掘效果等方面全面超越了傳統(tǒng)的數(shù)據(jù)分析方法。利用這一先進的大數(shù)據(jù)分析及可視化技術(shù)有助于幫助客戶實現(xiàn)海量數(shù)據(jù)挖掘,利用一系列機器學習算法組合得到模型結(jié)果,經(jīng)過可視化方式展示,以便更直觀地從圖表中發(fā)現(xiàn)數(shù)據(jù)背后的潛在價值。
政務(wù)大數(shù)據(jù)分析及可視化系統(tǒng)是一項系統(tǒng)工程,涉及到數(shù)據(jù)存儲、數(shù)據(jù)處理、模型建立、模型訓練、分析應(yīng)用、可視化展示等一系列功能模塊。這些系統(tǒng)功能模塊數(shù)量多、交互復雜。開發(fā)和運維這樣的系統(tǒng),出現(xiàn)問題是不可避免的。但是,如何快速發(fā)現(xiàn)并解決問題是關(guān)鍵。如果采取傳統(tǒng)的軟件開發(fā)模式,開發(fā)人員將軟件產(chǎn)品開發(fā)完成后,交由測試人員進行測試,再由運維人員進行部署。通常只有在最后部署階段才能發(fā)現(xiàn)問題,顯然這種反饋的難度和時間成本都很大。
當前政務(wù)大數(shù)據(jù)行業(yè)應(yīng)用的用戶需求快速變化,高效自動部署技術(shù)是縮短大數(shù)據(jù)軟件產(chǎn)品交付時間的關(guān)鍵。DevOps技術(shù)[2]有助于實現(xiàn)快速自動化部署過程,通過不斷迭代交付來縮短發(fā)布周期。它使用持續(xù)集成和持續(xù)交付的方式,一旦代碼更新提交,就立刻得到反饋;如果發(fā)現(xiàn)問題,可以快速發(fā)現(xiàn)、定位并解決。這就極大降低了復雜軟件快速頻繁的更新與部署過程中產(chǎn)生問題的可能性,提升軟件的質(zhì)量與穩(wěn)定性。
近年來,由于DevOps的構(gòu)建、部署、運維等各階段都有眾多配套工具提供支持,它已經(jīng)得到非常廣泛的應(yīng)用[3]。通常,軟件開發(fā)工作會根據(jù)各自不同的實際情況,按需搭建適合自身的DevOps工具鏈。文獻[4]提出了一種高效動態(tài)的應(yīng)用部署引擎OpsFlow,其目標在于組合多種自動化部署技術(shù)以應(yīng)對異構(gòu)應(yīng)用與部署環(huán)境,從而實現(xiàn)高效自動化的微服務(wù)應(yīng)用部署。但是,該DevOps解決方案仍是一種虛擬機部署方式,并不適合在不同云、不同版本操作系統(tǒng)間進行快速遷移。
當前,一種新的開發(fā)部署方式是采用Docker容器和鏡像共享方式實現(xiàn)的[5],每個容器有自己的運行環(huán)境和文件系統(tǒng),容器之間不會相互影響。相比虛擬機部署方式,這種基于Docker容器技術(shù)的開發(fā)、測試和運維一站式DevOps解決方案,更適合云計算環(huán)境下跨平臺、跨系統(tǒng)快速部署,已經(jīng)得到廣泛應(yīng)用[6]。
因此,面對政務(wù)行業(yè)領(lǐng)域中的海量數(shù)據(jù),文中提出了面向DevOps的政務(wù)大數(shù)據(jù)分析可視化系統(tǒng),以事件為中心,綜合各模態(tài)數(shù)據(jù)信息聚合和語義協(xié)同的結(jié)果,挖掘跨平臺、跨模態(tài)信息的內(nèi)部語義展示方式,研究基于可視化工具的全方位展示技術(shù),搭建統(tǒng)一DevOps平臺實現(xiàn)自動化開發(fā)、測試和運維,以更好地滿足政務(wù)行業(yè)應(yīng)用對大數(shù)據(jù)產(chǎn)品快速、高效、多樣化的信息可視化需求。
主要貢獻如下:
(1)從政務(wù)大數(shù)據(jù)業(yè)務(wù)落地出發(fā),提出了一種面向DevOps的政務(wù)大數(shù)據(jù)分析可視化系統(tǒng),主要依托于機器學習算法設(shè)計大數(shù)據(jù)分析方法,利用交互式和大屏可視化技術(shù)提出大數(shù)據(jù)可視化方法;
(2)動態(tài)打通了機器學習分析工具、自動運維工具與數(shù)據(jù)分析可視化,相關(guān)技術(shù)的集成具有很強的系統(tǒng)指導和應(yīng)用價值。
本節(jié)主要介紹政務(wù)領(lǐng)域大數(shù)據(jù)分析可視化系統(tǒng)的基本結(jié)構(gòu)與主要功能,并且將DevOps的方法引入系統(tǒng)的開發(fā)運維全生命周期中。
本系統(tǒng)由云基礎(chǔ)設(shè)施、DevOps平臺和政務(wù)大數(shù)據(jù)分析可視化系統(tǒng)構(gòu)成,如圖1所示。
圖1 整體功能架構(gòu)
其中,底層是云基礎(chǔ)設(shè)施層,它表示整個系統(tǒng)的硬件資源環(huán)境。理想情況下它要么是公有云環(huán)境,要么是私有云環(huán)境,但在實際行業(yè)場景中,云基礎(chǔ)環(huán)境大多是異構(gòu)環(huán)境,比如是由前兩者構(gòu)成的混合云。
為了解決底層基礎(chǔ)環(huán)境的異構(gòu)問題,中間層設(shè)計了一個DevOps平臺。它利用Docker容器引擎工具,提供一系列如創(chuàng)建容器鏡像和運行容器等核心方法,可無視基礎(chǔ)環(huán)境的多元性,實現(xiàn)統(tǒng)一源代碼管理、資源配置管理、監(jiān)控、運維管理等基本功能;同時,它通過統(tǒng)一的持續(xù)集成和持續(xù)交付管理門戶,完成自動構(gòu)建、單元測試、自動部署、集成測試、發(fā)布策略和驗收測試等關(guān)鍵功能。
頂層是應(yīng)用層,即政務(wù)大數(shù)據(jù)分析可視化系統(tǒng)。它主要由6個模塊組成,其中:數(shù)據(jù)存儲與管理子系統(tǒng)的主要功能是存儲、管理系統(tǒng)中的所有數(shù)據(jù);數(shù)據(jù)分析工具子系統(tǒng)則包含若干傳統(tǒng)統(tǒng)計分析工具和機器學習算法工具,針對輸入數(shù)據(jù)可產(chǎn)生分析結(jié)果;數(shù)據(jù)可視化工具子系統(tǒng)包含若干形狀的圖表繪制工具,針對輸入數(shù)據(jù)可進行圖形或表格可視化展示;數(shù)據(jù)分析應(yīng)用子系統(tǒng)包含面向政務(wù)行業(yè)應(yīng)用的數(shù)據(jù)分析軟件,針對與政務(wù)行業(yè)應(yīng)用相關(guān)的輸入數(shù)據(jù)生成相應(yīng)的分析結(jié)果;分析結(jié)果可視化子系統(tǒng)既包含面向政務(wù)行業(yè)應(yīng)用的交互式可視化軟件,用圖表方式將分析結(jié)果展現(xiàn)出來,又包含面向電視終端的大屏可視化軟件,用大屏投放方式將分析結(jié)果展現(xiàn)到大型電視屏幕中。一個統(tǒng)一的訪問門戶模塊,不僅可以方便終端用戶訪問和控制上述5個子系統(tǒng),還可以實現(xiàn)身份認證、權(quán)限管理、交互式分析、可視化控制等基本功能。
上述政務(wù)大數(shù)據(jù)分析可視化系統(tǒng)中各個子系統(tǒng)的工作流程如圖2所示。
圖2 系統(tǒng)工作流程
(1)數(shù)據(jù)存儲與管理子系統(tǒng)將從系統(tǒng)外部獲取的數(shù)據(jù)存儲在原始數(shù)據(jù)庫中;
(2)數(shù)據(jù)分析應(yīng)用子系統(tǒng)調(diào)用相關(guān)的數(shù)據(jù)分析工具,通過數(shù)據(jù)存儲與管理子系統(tǒng),從原始數(shù)據(jù)庫獲取對應(yīng)數(shù)據(jù),進行分析,并將分析結(jié)果存入結(jié)果數(shù)據(jù)庫中;
(3)分析結(jié)果可視化子系統(tǒng)調(diào)用相關(guān)的數(shù)據(jù)可視化工具,并通過數(shù)據(jù)存儲與管理子系統(tǒng)從結(jié)果數(shù)據(jù)庫中獲取數(shù)據(jù),進行可視化圖表展示。
上述DevOps平臺中各個模塊之間的交互流程如圖3所示。
圖3 DevOps交互流程
(1)提交:DevOps開發(fā)者將政務(wù)大數(shù)據(jù)分析可視化系統(tǒng)中源代碼在本地測試通過后,提交到統(tǒng)一源代碼管理系統(tǒng),如Gitlab[7]代碼倉庫;
(2)自動構(gòu)建:利用現(xiàn)有的持續(xù)集成工具如Jenkins[8]等軟件,在檢測到有新版本的源代碼提交后,便自動從統(tǒng)一源代碼倉庫中拉取對應(yīng)的源代碼,自動編譯、構(gòu)建;
(3)單元測試:持續(xù)集成工具完成自動構(gòu)建后,可以自動執(zhí)行DevOps開發(fā)者指定的單元測試代碼;
(4)自動部署到測試環(huán)境:在完成單元測試后,DevOps運維者利用現(xiàn)有的資源配置管理系統(tǒng)如Ansible[9]軟件,根據(jù)實際需求,設(shè)置云基礎(chǔ)設(shè)施中各種資源,再通過現(xiàn)有的持續(xù)交付工具如Jenkins、Docker Hub[10]等軟件,將上一步得到的應(yīng)用程序自動部署到與生產(chǎn)環(huán)境相近的測試環(huán)境中;
(5)集成測試:DevOps測試者在單元測試的基礎(chǔ)上,將所有應(yīng)用程序按照設(shè)計要求,組裝成一個子系統(tǒng)或系統(tǒng),進行集成測試,目標在于測試多種應(yīng)用程序的組合能否正常工作;軟件單元只有經(jīng)過集成才能形成一個有機的整體;
(6)自動部署到預發(fā)布環(huán)境:當開發(fā)的政務(wù)大數(shù)據(jù)分析可視化軟件系統(tǒng)通過測試環(huán)境中集成測試后,DevOps運維者可以利用現(xiàn)有持續(xù)交付系統(tǒng)中發(fā)布策略管理功能,把軟件系統(tǒng)自動部署到相當于生產(chǎn)環(huán)境的預發(fā)布環(huán)境中,做好客戶驗收測試的準備工作;
(7)驗收測試[11]:在預發(fā)布環(huán)境中,DevOps客戶或獨立測試人員可以根據(jù)測試計劃對大數(shù)據(jù)分析可視化系統(tǒng)進行功能測試和破壞性測試,目的在于充分暴露系統(tǒng)的設(shè)計和功能問題,以便得到客戶對政務(wù)大數(shù)據(jù)分析可視化系統(tǒng)的認可;
(8)部署到生產(chǎn)環(huán)境:通過所有測試后,DevOps運維者便可以利用現(xiàn)有持續(xù)交付系統(tǒng)中發(fā)布策略管理功能,使用灰度發(fā)布方法將預發(fā)布環(huán)境中最新的大數(shù)據(jù)分析可視化系統(tǒng)軟件版本自動部署到真實生產(chǎn)環(huán)境中;這里,灰度發(fā)布又稱金絲雀發(fā)布(Canary release)[12],是在原有版本可用的情況下,同時部署一個新版本系統(tǒng)作為“金絲雀”,驗證新版本的性能和表現(xiàn),以保障整體系統(tǒng)穩(wěn)定的情況下,盡早發(fā)現(xiàn)、調(diào)整問題;一旦新版本驗證通過,逐步替換所有系統(tǒng)為新版本;
(9)監(jiān)控運維:DevOps運維者還可以通過監(jiān)控運維管理系統(tǒng),對云基礎(chǔ)設(shè)施中各種資源,進行實時監(jiān)控、運維管理、日志分析等操作。
在本節(jié)中,詳細介紹大數(shù)據(jù)分析工具子系統(tǒng)中所用到的常用分析工具類型,以及如何根據(jù)給定的數(shù)據(jù)和分析工具,先訓練后分析,最后實現(xiàn)大數(shù)據(jù)分析應(yīng)用子系統(tǒng)的方法。
數(shù)據(jù)分析工具子系統(tǒng)通常由分類、聚類、回歸、特征提取、時間序列分析、推薦、關(guān)聯(lián)等分析模塊構(gòu)成,每個模塊包含若干分析算法[13]。分類模塊包含邏輯回歸、支持向量機、樸素貝葉斯、神經(jīng)網(wǎng)絡(luò)、隨機森林等算法;聚類模塊包括K均值、離群點檢測等算法;回歸模塊包括線性回歸、K近鄰、決策樹、神經(jīng)網(wǎng)絡(luò)等算法;特征提取包括循環(huán)特征消減選擇(RFE)等算法[14];時間序列分析包括趨勢分析、自回歸滑動平均模型(ARMA)等算法[15];推薦模塊包括基于用戶和基于物品的協(xié)同過濾算法;關(guān)聯(lián)模塊包含先驗知識(Apriori)關(guān)聯(lián)分析算法。
需說明,上述所有算法分析工具均與真實政務(wù)行業(yè)應(yīng)用無關(guān)。算法分析工具接收來自原始數(shù)據(jù)庫中數(shù)據(jù)作為輸入后,會輸出分析結(jié)果,供數(shù)據(jù)分析應(yīng)用子系統(tǒng)中的分析應(yīng)用軟件調(diào)用。
為取得更好的分析效果,大數(shù)據(jù)分析過程通常需要先訓練后分析。其中,訓練階段主要是:從原始數(shù)據(jù)庫中讀取一系列樣本數(shù)據(jù),經(jīng)由數(shù)據(jù)分析工具中的訓練模塊,生成相應(yīng)的分析模型文件,將模型文件存儲到指定文件夾。分析階段主要是:從指定文件夾中獲取分析工具模型文件,讀取待分析的數(shù)據(jù)文件,再經(jīng)由數(shù)據(jù)分析工具中的分析模塊,生成相應(yīng)的分析結(jié)果,將結(jié)果數(shù)據(jù)存儲到結(jié)果數(shù)據(jù)庫中。
真實政務(wù)大數(shù)據(jù)行業(yè)應(yīng)用類型繁多,為此提出的數(shù)據(jù)分析應(yīng)用子系統(tǒng)是由多個應(yīng)用類型模塊構(gòu)成,每類應(yīng)用模塊又包含多項分析內(nèi)容,如圖4所示。
這里,每項分析內(nèi)容可以看作一個應(yīng)用分析軟件,它也分為訓練和分析兩部分。訓練部分的主體是調(diào)用數(shù)據(jù)分析工具子系統(tǒng)中相應(yīng)算法工具的訓練模塊,并讀入與此相匹配的樣本數(shù)據(jù);此外,何時進行訓練,則由訓練策略決定,即可以人工實時啟動,也可以自動定時啟動。分析部分的主體是調(diào)用數(shù)據(jù)分析工具子系統(tǒng)中相應(yīng)算法工具的分析模塊,并讀入與此相匹配的分析數(shù)據(jù);同樣,何時進行分析,由分析策略決定,可以人工實時啟動,也可以自動定時啟動。
圖4 數(shù)據(jù)分析應(yīng)用子系統(tǒng)的組成
根據(jù)實際政務(wù)大數(shù)據(jù)行業(yè)應(yīng)用的需求,分析結(jié)果可視化子系統(tǒng)又可細分為兩種子系統(tǒng):交互式可視化和大屏可視化。
數(shù)據(jù)可視化工具子系統(tǒng)是由柱狀圖、散點圖、折線圖、餅圖、二維矩陣圖、分布直方圖、分類圖、時間序列圖、雷達圖、詞云圖等圖表工具模塊構(gòu)成。所有圖表工具模塊可以與真實政務(wù)行業(yè)應(yīng)用無關(guān)。圖表工具模塊接收模型文件作為數(shù)據(jù)輸入后,會輸出指定類型的圖表結(jié)果,再提供給分析結(jié)果可視化子系統(tǒng)。
交互式可視化需求主要是針對政務(wù)大數(shù)據(jù)行業(yè)內(nèi)部復雜、海量的業(yè)務(wù)數(shù)據(jù)和外部數(shù)據(jù),基于大數(shù)據(jù)云平臺,如何通過良好的人機交互操作進行數(shù)據(jù)可視化分析,實現(xiàn)探索式分析、全維度數(shù)據(jù)鉆取等功能。因此,支持分析結(jié)果的終端交互式可視化展示功能,很可能是交互式可視化設(shè)計中需要關(guān)注的關(guān)鍵點。
交互式可視化子系統(tǒng)是由Web頁面、Server服務(wù)器、Scheduler調(diào)度器和Visual Engine可視化引擎四部分組成。該子系統(tǒng)采用W-S-S-VE循環(huán)流程實現(xiàn)人機交互式展示分析結(jié)果,具體內(nèi)容如下:
(1)Web頁面負責接收客戶操作,向Server服務(wù)器發(fā)送可視化操作請求;這里的Web頁面其實可以作為統(tǒng)一訪問門戶的一部分;
(2)當Server服務(wù)器接收到可視化操作請求后會創(chuàng)建可視化任務(wù),然后把該任務(wù)傳送給Scheduler調(diào)度器;
(3)Scheduler調(diào)度器接收到傳遞的可視化任務(wù)后,先調(diào)度這些任務(wù)并為其分配資源,再向Visual Engine可視化引擎發(fā)送可視化數(shù)據(jù)處理的請求;
(4)Visual Engine可視化引擎接收到可視化數(shù)據(jù)請求后,會調(diào)用數(shù)據(jù)可視化工具子系統(tǒng)中相關(guān)圖表工具,然后加載從結(jié)果數(shù)據(jù)庫中獲取的模型數(shù)據(jù)文件,繪制圖表,最后把處理后的圖表傳回Web頁面,由Web頁面向客戶展示處理繪制數(shù)據(jù)的可視化結(jié)果。
大屏可視化需求主要是指在電視大屏上對大數(shù)據(jù)分析結(jié)果進行可視化展現(xiàn)。在大數(shù)據(jù)背景下,大屏可視化需求背后存在著復雜的數(shù)據(jù)來源問題,如何保證復雜數(shù)據(jù)處理性能與多屏頁面美工效果之間的合理平衡,很可能是大屏可視化設(shè)計中應(yīng)該關(guān)注的重要指標。
大屏可視化子系統(tǒng)是由多個不同布局形式的顯示屏構(gòu)成,每個展示屏又由若干顯示塊構(gòu)成,每個顯示塊是最小顯示單元,它可以展示某個圖表工具繪制出來的圖形或表格。顯示塊的主體是調(diào)用數(shù)據(jù)可視化工具子系統(tǒng)中相應(yīng)的圖表工具模塊,加載需要大屏可視化展示的分析結(jié)果數(shù)據(jù);這些分析結(jié)果數(shù)據(jù)在顯示前會保存在模型文件中;還需要顯示控制策略來控制該顯示塊中圖表的顯示時機、顯示位置、尺寸、顏色等外部形態(tài)。
實現(xiàn)大屏可視化子系統(tǒng)的基本流程包括:
(1)業(yè)務(wù)專家確定大屏內(nèi)容顯示方案。
根據(jù)業(yè)務(wù)場景抽取關(guān)鍵指標,然后定義分析指標的維度,最后定義不同指標的圖表類型和頁面劃分。
(2)美工人員設(shè)計整體布局和風格。
根據(jù)業(yè)務(wù)專家劃分的頁面進行指標布局設(shè)計,再根據(jù)用戶要求的色系進行樣圖設(shè)計,最后根據(jù)用戶定稿的樣圖實施切圖。
(3)開發(fā)人員研發(fā)前端頁面及優(yōu)化。
根據(jù)切好的圖,結(jié)合樣式需求制作靜態(tài)網(wǎng)頁模板,然后調(diào)用后端數(shù)據(jù)接口獲取數(shù)據(jù),開發(fā)前端頁面,最后整體大屏顯示細節(jié)調(diào)整與優(yōu)化。
不論交互式可視化方法,還是大屏可視化需求,分析結(jié)果可視化子系統(tǒng)的工作流程如圖5所示。
(1)可以采取周期性定時方法或者按需實時方法,從結(jié)果數(shù)據(jù)庫中獲取指定的數(shù)據(jù),傳送給數(shù)據(jù)存儲與管理子系統(tǒng)中;
(2)數(shù)據(jù)存儲與管理子系統(tǒng)將收到的來自結(jié)果數(shù)據(jù)庫中數(shù)據(jù)生成模型文件,傳送到顯示文件夾中保存起來;
(3)系統(tǒng)客戶可以通過統(tǒng)一訪問門戶,在網(wǎng)頁上采取人工輸入自動化腳本或直接操作等方式,實現(xiàn)對分析結(jié)果可視化展示的數(shù)據(jù)內(nèi)容、展示效果等的有效控制;
(4)分析結(jié)果可視化子系統(tǒng)響應(yīng)人工輸入的自動化腳本或?qū)崟r操作,從數(shù)據(jù)可視化工具子系統(tǒng)中調(diào)用相關(guān)的圖表工具,為該圖表工具設(shè)置模型文件所在的顯示文件夾路徑;
(5)分析結(jié)果可視化子系統(tǒng)從顯示文件夾中獲取指定的分析結(jié)果模型文件;
(6)根據(jù)人工輸入所提供的顯示控制方式,分析結(jié)果可視化子系統(tǒng)把指定的分析結(jié)果模型文件加載到對應(yīng)的圖表工具中,然后將圖表工具繪制出來的圖形或表格,傳送給交互式可視化子系統(tǒng)或大屏可視化子系統(tǒng),實現(xiàn)最終的可視化展示效果;
(7)如果上一步是完成交互式可視化展示,那么交互式可視化子系統(tǒng)還會將得到的圖表返回給統(tǒng)一訪問門戶中的Web頁面,以便將可視化效果展示給客戶,實現(xiàn)與客戶之間的循環(huán)交互。
隨著容器技術(shù)的發(fā)展,Docker容器已經(jīng)成為使用量增長最快的工具[16]。通過Docker提供的DevOps系統(tǒng),可以將軟件系統(tǒng)的運行環(huán)境標準化、統(tǒng)一化,以鏡像和在鏡像基礎(chǔ)上構(gòu)建的容器為基礎(chǔ),同一個鏡像可以部署到開發(fā)、測試、預發(fā)、生產(chǎn)等環(huán)境的容器中。這一過程都可自動完成,不需要重復的安裝部署,提高了開發(fā)和運維效率。
與此同時,與Docker容器相關(guān)的DevOps工具種類繁多、用法各異、適用場景也不同[17]。因此,在本節(jié)中詳細介紹一種基于Docker容器技術(shù)的DevOps平臺,以持續(xù)集成、持續(xù)交付和容器云為核心,允許DevOps開發(fā)者、測試者和運維者通過一個統(tǒng)一的管理門戶來使用該平臺,從而打通開發(fā)、測試、運維全過程,如圖6所示。
圖6 基于Docker容器的持續(xù)集成和持續(xù)交付
圖6中,持續(xù)集成以源代碼版本管理軟件Gitlab和開源持續(xù)集成軟件Jenkins為核心;持續(xù)交付是以Jenkins和容器部署配置軟件Docker Hub為核心;容器云是以測試環(huán)境、預發(fā)環(huán)境和生產(chǎn)環(huán)境等三種Docker容器部署方式為核心。
當DevOps開發(fā)者通過統(tǒng)一管理門戶將源代碼提交給Gitlab進行版本管理和項目文檔的配置管理后,Jenkins和相關(guān)工具插件會持續(xù)對源代碼進行檢查、編譯和測試,這便是持續(xù)集成過程,具體內(nèi)容如下:
(1)Jenkins可以在Repository URL中配置好Gitlab代碼倉庫地址,使在Gitlab中每次提交后觸發(fā)拉起最新版本的源代碼;
(2)Jenkins可以通過配置Maven工具插件地址,利用Maven等插件對源代碼進行編譯,實現(xiàn)自動構(gòu)建;
(3)Jenkins在對源代碼構(gòu)建完畢后,還可以調(diào)用SonarQube[18]、TestNG[19]等工具插件,進行各項自動化檢查。其中,SonarQube用于代碼質(zhì)量管理檢查,TestNG用于代碼自動化測試,包括功能測試、性能測試、安全測試等。利用工具實現(xiàn)自動化檢查,可以有效提高源代碼的規(guī)范性,發(fā)現(xiàn)潛在的代碼缺陷,提高代碼質(zhì)量。
當DevOps運維者通過統(tǒng)一管理門戶對應(yīng)用鏡像進行Docker容器云資源的配置管理和鏡像部署管理后,Jenkins和Docker Hub會持續(xù)將構(gòu)建好的Docker應(yīng)用鏡像,自動部署到Docker容器云中相應(yīng)的測試環(huán)境、預發(fā)環(huán)境和生產(chǎn)環(huán)境,這便是基于Docker容器云的持續(xù)交付過程。同時,DevOps測試者會通過統(tǒng)一管理門戶,指定相關(guān)的測試方式,實現(xiàn)自動測試或人工測試。具體內(nèi)容如下:
(1)Jenkins還可以通過配置Docker容器服務(wù)器(Docker Hub)地址,根據(jù)源代碼應(yīng)用中編寫好的Dockerfile文件[16],自動構(gòu)建應(yīng)用鏡像;這里,通過執(zhí)行Dockerfile文件中基礎(chǔ)鏡像信息、維護者信息、鏡像操作和容器啟動等4種類型指令,構(gòu)建一個虛擬容器,實現(xiàn)快速構(gòu)建;
(2)Docker Hub服務(wù)器軟件可以利用Terraform開源工具插件[20],根據(jù)應(yīng)用系統(tǒng)的拓撲、依賴關(guān)系等對容器云資源進行配置管理;還可以利用Ansible開源工具插件,根據(jù)不同的部署方式,將應(yīng)用鏡像自動部署到不同的Docker容器云環(huán)境中;
(3)當應(yīng)用鏡像通過預發(fā)環(huán)境中DevOps測試者對其的A/B測試[21]后,DevOps運維者可以指定金絲雀發(fā)布策略[12],實現(xiàn)預發(fā)環(huán)境中最新版本的應(yīng)用鏡像自動部署到生產(chǎn)環(huán)境中;
(4)為實現(xiàn)持續(xù)交付過程,Docker Hub會與三種類型容器云環(huán)境中應(yīng)用鏡像進行多次拉鏡像和推鏡像操作,可在任意環(huán)境實現(xiàn)多個應(yīng)用系統(tǒng)的快速部署。
限于政務(wù)數(shù)據(jù)安全要求,在本節(jié)構(gòu)建了大數(shù)據(jù)分析可視化應(yīng)用的演示示例,用于預先驗證提出的方法。
基于Python編程語言的數(shù)據(jù)分析可視化系統(tǒng)的交互演示界面如圖7(a)所示。該交互演示界面是以圖形插件的形式在Python3環(huán)境下運行,集成了4種數(shù)據(jù)預處理方法、12種數(shù)據(jù)分析工具和12種數(shù)據(jù)可視化工具。圖7(b)為當選中三維點圖后,該交互界面根據(jù)相關(guān)數(shù)據(jù),實時繪制出來的三維點圖。三維點圖所展示的內(nèi)容都是持續(xù)動態(tài)變化,這是通過可以與后端的分析結(jié)果數(shù)據(jù)服務(wù)進行數(shù)據(jù)實時交互而得到的。經(jīng)驗證分析,該交互演示界面能夠較好地反映出真實場景中數(shù)據(jù)分析工具子系統(tǒng)和數(shù)據(jù)可視化工具子系統(tǒng)的應(yīng)用。
圖7 數(shù)據(jù)分析可視化系統(tǒng)的交互演示界面和三維點圖示例
提出了一種面向DevOps自動開發(fā)部署平臺的政務(wù)大數(shù)據(jù)分析可視化系統(tǒng),依托于機器學習算法設(shè)計大數(shù)據(jù)分析方法,利用交互式和大屏可視化技術(shù)提出大數(shù)據(jù)可視化方法。該系統(tǒng)已部署在某政府部門,根據(jù)真實場景下系統(tǒng)運行情況及應(yīng)用結(jié)果表明,提出的大數(shù)據(jù)分析及可視化系統(tǒng),可以通過數(shù)學模型和機器學習幫助客戶挖掘大數(shù)據(jù)更深層次的價值和內(nèi)涵,滿足了前期的政務(wù)大數(shù)據(jù)分析與可視化需求。該系統(tǒng)后續(xù)會持續(xù)迭代、開發(fā)、部署,以期更好地服務(wù)于客戶的業(yè)務(wù)體系。