■ 方義 方偉 朱燁 /中國(guó)航發(fā)動(dòng)控所
通過(guò)引入以開(kāi)發(fā)和運(yùn)營(yíng)維護(hù)一體化為核心的信息化管理理念——DevOps,建立標(biāo)準(zhǔn)化流程、建設(shè)統(tǒng)一工具鏈以提高自動(dòng)化能力和增強(qiáng)智能反饋機(jī)制,實(shí)現(xiàn)了開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境和生產(chǎn)環(huán)境的高相似度及可編程、自動(dòng)化的全生命周期配置維護(hù)管理,從而適應(yīng)快速變化、高可用性、高可靠性要求,幫助組織更快地獲取價(jià)值與反饋。
在完成原型機(jī)的設(shè)計(jì)后,功能的完善、問(wèn)題的修復(fù)、硬件環(huán)境的變化以及用戶體驗(yàn)等需求,會(huì)導(dǎo)致軟件的頻繁變更,使得軟件維護(hù)的成本遠(yuǎn)超過(guò)軟件原型設(shè)計(jì)階段的成本,在這種交付壓力和人員投入的平衡性被逐漸打破的局面下,提高軟件持續(xù)交付能力成為了人們關(guān)注的焦點(diǎn)。
DevOps是Development和Operations的組合,是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱(chēng),用于促進(jìn)開(kāi)發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門(mén)之間的溝通、協(xié)作與整合。DevOps可以看作開(kāi)發(fā)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障三者的交集。
中國(guó)航發(fā)動(dòng)控所的創(chuàng)新團(tuán)隊(duì)以DevOps作為信息化管理理念,通過(guò)建立標(biāo)準(zhǔn)化流程、統(tǒng)一工具鏈建設(shè)、完善自動(dòng)化能力、提高可視化反饋機(jī)制,來(lái)縮短軟件迭代的循環(huán)周期,完成了持續(xù)集成、持續(xù)部署、狀態(tài)看板和性能監(jiān)測(cè)的功能,從而提高了軟件研發(fā)效率。
圖1 自動(dòng)化工具鏈路集群部署圖
以提高持續(xù)交付質(zhì)量為目標(biāo),建立高度自動(dòng)化的研發(fā)流程,包括自動(dòng)化測(cè)試執(zhí)行、自動(dòng)化測(cè)試回歸、自動(dòng)化發(fā)布和部署等,節(jié)約勞動(dòng)力,提高生產(chǎn)效率。
重新定義項(xiàng)目關(guān)聯(lián)的唯一標(biāo)識(shí),以配置管理作為流程驅(qū)動(dòng)的基礎(chǔ),打通9個(gè)工具間的數(shù)據(jù),以數(shù)據(jù)中心為載體,將軟件研發(fā)過(guò)程的碎片數(shù)據(jù)規(guī)格化和可視化,積累組織資產(chǎn),提供性能監(jiān)測(cè)基礎(chǔ)。
搭建全生命周期的持續(xù)集成平臺(tái),涵蓋編譯構(gòu)建、靜態(tài)分析、單元測(cè)試、數(shù)據(jù)追蹤、數(shù)據(jù)分析等分布式自動(dòng)化節(jié)點(diǎn),實(shí)現(xiàn)軟件研發(fā)過(guò)程的自動(dòng)化執(zhí)行,自動(dòng)化發(fā)布和自動(dòng)化部署。
目前已完成單點(diǎn)環(huán)境的資源部署,并形成與軟件研發(fā)流程相融合的自動(dòng)化鏈路。服務(wù)器集群的部署如圖1所示。
為了在提高軟件交付質(zhì)量的同時(shí)縮短軟件迭代周期,可視化的反饋機(jī)制作為工具鏈的后端顯得尤為重要,結(jié)合工作場(chǎng)景,反饋的形式包括郵箱、即時(shí)通信和監(jiān)控看板,工具間的數(shù)據(jù)打通是實(shí)時(shí)反饋的基礎(chǔ),關(guān)鍵技術(shù)在于突破各通信交互間的接口。
Hubot方案:基于異步處理與TCP通信,采用當(dāng)前最流行的nodejs框架,通過(guò)調(diào)用即時(shí)通信系統(tǒng)的接口單點(diǎn)接入,實(shí)現(xiàn)用戶個(gè)性反饋;通過(guò)單點(diǎn)接入技術(shù)與流程的結(jié)合,向軟件研發(fā)人員定時(shí)(每天、每周)、實(shí)時(shí)推送定制化消息,實(shí)現(xiàn)人機(jī)交互的溝通模式。
TBox方案:借鑒OSGI模塊化設(shè)計(jì)和C/S部署架構(gòu),為所有的自研工具打造一個(gè)下載管理和監(jiān)控的平臺(tái),構(gòu)造線程池管理消息隊(duì)列,采集在線情況并存儲(chǔ)為組織級(jí)的度量數(shù)據(jù),該方案原理如圖2所示。
報(bào)表展示方案:基于數(shù)據(jù)庫(kù)讀取的報(bào)表工具,從海量的數(shù)據(jù)中提取和加工為項(xiàng)目評(píng)估數(shù)據(jù),以實(shí)時(shí)看板提高對(duì)用戶的反饋速度,提高項(xiàng)目運(yùn)行效率,其方案原理如圖3所示。
通過(guò)UI的設(shè)計(jì)后,項(xiàng)目的過(guò)程數(shù)據(jù)和健康狀態(tài)通過(guò)儀表盤(pán)的方式實(shí)時(shí)展示給團(tuán)隊(duì)成員。
圖2 TBox系統(tǒng)架構(gòu)圖
圖3 基于實(shí)時(shí)數(shù)據(jù)庫(kù)的報(bào)表展示系統(tǒng)架構(gòu)圖
圖4 軟件研發(fā)過(guò)程自動(dòng)化狀況
圖5 軟件研發(fā)過(guò)程中優(yōu)化的活動(dòng)分布
基于DevOps的安全關(guān)鍵軟件研發(fā)工具鏈分階段部署上線后,已在100個(gè)項(xiàng)目上投入使用,根據(jù)2017年年底統(tǒng)計(jì)的數(shù)據(jù),按照軟件研發(fā)的5大過(guò)程來(lái)看,自動(dòng)化取得的成效如圖4所示,優(yōu)化了原有25個(gè)活動(dòng)中的16個(gè)活動(dòng),優(yōu)化的活動(dòng)分布如圖5所示。
除此以外,還實(shí)現(xiàn)了54個(gè)自研軟件工具、6個(gè)商用軟件工具和20臺(tái)設(shè)備的管理,為用戶提供了統(tǒng)一的工具/設(shè)備環(huán)境的下載使用和監(jiān)控平臺(tái),為頻繁迭代的自研工具提供了管理手段;同時(shí)工具/設(shè)備的使用情況得到實(shí)時(shí)監(jiān)控,采集周期精確到60s,截至2017年已累積了9個(gè)月的工具使用數(shù)據(jù)。
與此同時(shí),實(shí)現(xiàn)了140個(gè)關(guān)鍵業(yè)績(jī)指標(biāo)(KPI)數(shù)據(jù)中88個(gè)的自動(dòng)采集,52個(gè)KPI數(shù)據(jù)的半自動(dòng)采集,覆蓋4類(lèi)決策場(chǎng)景,并利用B/S架構(gòu)的設(shè)計(jì),方便不同場(chǎng)地的接入查詢,利用即時(shí)通信系統(tǒng)及時(shí)地通知到個(gè)人。截至2017年年底,完成智能推送消息8714條,有效提高了項(xiàng)目和組織管理效率。
基于DevOps的安全關(guān)鍵軟件研發(fā)工具鏈自上線以來(lái),有超過(guò)100個(gè)軟件研發(fā)項(xiàng)目在該平臺(tái)上使用,管理了約150人規(guī)模的科研人員。本項(xiàng)目在方案探索和研制過(guò)程中克服了諸多關(guān)鍵技術(shù)和難點(diǎn),對(duì)項(xiàng)目管理、軟件工程等的經(jīng)典方法論進(jìn)行了有機(jī)整合,技術(shù)創(chuàng)新總結(jié)如下:
● 實(shí)現(xiàn)了基于版本的軟件全生命周期數(shù)據(jù)的管理,打通了9類(lèi)工具間的數(shù)據(jù)互聯(lián),利用項(xiàng)目和軟件版本作為關(guān)鍵索引解決了數(shù)據(jù)孤島問(wèn)題;
● 利用分布式的部署環(huán)境支持多樣性的自動(dòng)化服務(wù),為軟件研發(fā)流程提供了大量的自動(dòng)化工作,解決了流程操作的重復(fù)性工作和人工檢查的重復(fù)性工作;
● 以應(yīng)用商店為平臺(tái),建立了組織內(nèi)部的“云管理商店”,對(duì)生命周期的研制環(huán)境進(jìn)行了有效的監(jiān)控和管理,確??蓪?shí)時(shí)基于歷史項(xiàng)目的過(guò)程數(shù)據(jù)和對(duì)應(yīng)的工作環(huán)境,產(chǎn)出期望的工作產(chǎn)品,以滿足控制軟件30年內(nèi)的數(shù)據(jù)可快速恢復(fù)、檢索的要求;
● 實(shí)現(xiàn)了140個(gè)KPI數(shù)據(jù)中88個(gè)的自動(dòng)采集,52個(gè)的半自動(dòng)采集,覆蓋4類(lèi)決策場(chǎng)景,采集周期精確到60s,B/S架構(gòu)的設(shè)計(jì)能方便不同地點(diǎn)的接入,同時(shí)利用即時(shí)通信系統(tǒng)給個(gè)人推送定制化消息,消息的延時(shí)在120s以內(nèi)。
基于DevOps的安全關(guān)鍵軟件研發(fā)工具鏈集成,一方面繼承了原有的成熟需求管理、配置管理等貨架管理平臺(tái)的優(yōu)勢(shì),利用了原有的技改建設(shè)基礎(chǔ);另一方面依據(jù)自身的研發(fā)組織及技術(shù)特點(diǎn)進(jìn)行了大量的集成、定制及自動(dòng)化開(kāi)發(fā)。通過(guò)對(duì)軟件研發(fā)全生命周期工程數(shù)據(jù)及管理數(shù)據(jù)的分類(lèi)、標(biāo)記和整合,解決了原有系統(tǒng)中的數(shù)據(jù)孤島、數(shù)據(jù)沖突、數(shù)據(jù)檢索困難等問(wèn)題,促進(jìn)了嵌入式控制軟件研發(fā)的效率和質(zhì)量控制能力。
通過(guò)大量管理活動(dòng)的自動(dòng)化集成及文檔的自動(dòng)化生成集成,使得軟件研發(fā)人員可以更關(guān)注于軟件開(kāi)發(fā)測(cè)試技術(shù)本身,節(jié)省不必要的流程簽署及文檔生成工作。
創(chuàng)新項(xiàng)目保留了原有的成熟的貨架軟件研發(fā)管理工具,在繼承了上百個(gè)項(xiàng)目近10年的開(kāi)發(fā)過(guò)程及數(shù)據(jù)的基礎(chǔ)上,對(duì)所有的生命周期數(shù)據(jù)進(jìn)行了標(biāo)記和分類(lèi),開(kāi)發(fā)了數(shù)據(jù)總線及大量自動(dòng)化操作,采用了儀表盤(pán)、語(yǔ)義識(shí)別機(jī)器人等新的信息化技術(shù),為后續(xù)進(jìn)一步提升嵌入式控制軟件研發(fā)提供了保障和技術(shù)基礎(chǔ)。