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