周司徒 陳桂峰 杜文輝
(江蘇電力信息技術有限公司 江蘇省南京市 210000)
DevOps 源于“Development(開發(fā))”和“Operation(運維)”兩個詞的縮寫,軟件開發(fā)和IT 運維的結合被稱為DevOps。DevOps是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協(xié)作與整合。[1]
早在十年前,就有人提出了DevOps 的思想,但由于技術工具的缺失,這一思想在當時未能實現(xiàn)。隨著技術的不斷發(fā)展,特別是近幾年來微服務和容器技術的興起,為DevOps 的實施提供了必要的技術條件,使得通過自動化流程完成軟件構建、測試、發(fā)布成為可能。目前,DevOps 已經(jīng)成為了軟件技術領域研究熱點,其主要功能是穩(wěn)定電網(wǎng)運行基礎上,構建更加快捷服務模式,進而減少開發(fā)成本。[2]
當前,電力內(nèi)部各個信息系統(tǒng)分派給不同廠商進行獨立開發(fā)和管理,缺乏統(tǒng)一的服務管理與項目協(xié)同平臺。在國網(wǎng)公司全面推進中臺建設的背景下,這種管理方式很難響應中臺建設過程的快速迭代、共享服務、快速靈活的要求。DevOps 是電網(wǎng)企業(yè)開發(fā)、運營和質量保障的結合體,能夠打通軟件開發(fā)與技術運營之間的屏障,使其能夠相互協(xié)作。[2]因而,迫切需要基于DevOps 理念建設的建運協(xié)同工具,來支撐所有廠商的開發(fā)流程與協(xié)同管理,推動“三型兩網(wǎng)、世界一流”戰(zhàn)略目標的落地。
圖1:總體業(yè)務流程
圖2:關鍵技術選型
圖3:邊界設計
圖4:與CMDB 的交互
遵從國家電網(wǎng)信息化架構的設計理念,根據(jù)平臺的實際需求,在保障電力內(nèi)網(wǎng)環(huán)境暢通的前提下,確定建設建運協(xié)同工具所需要的基礎業(yè)務架構有:
(1)應用服務器一臺;
(2)數(shù)據(jù)庫服務器一臺;
(3)軟件:操作系統(tǒng)、數(shù)據(jù)庫、JDK、中間件(Tomcat、Nginx)、Jenkins、Git、打包工具(Ant、Gradle、Maven)、白盒掃描工具(Fortify)等;
(4)安裝環(huán)境兼顧前端、后端、數(shù)據(jù)庫。
如圖1所示,建運協(xié)同工具的業(yè)務流程主要包括以下三大部分:
(1)項目管理:提供廠商的資料和人員管理;提供項目和應用的管理;作為流程的入口和關聯(lián)信息;提供模板簡化通用化的操作;
(2)持續(xù)集成:支持代碼從編寫到構建、打包、發(fā)布使用的功能模塊,包括代碼倉庫管理、代碼制品管理、代碼檢查、代碼構建打包、模板管理、自動化部署等等;基于jenkins 提供流水線和各個模塊的組合;系統(tǒng)默認根據(jù)場景設定基本流程編排,支持自定義組合編排。
(3)持續(xù)部署與發(fā)布:支持不同環(huán)境下的持續(xù)部署和測試;提供檢修單管理、安全測試和監(jiān)理測試任務管理。
如圖2所示,建運協(xié)同工具使用的關鍵技術包括:
(1)代碼管理工具:使用GitLab 等版本管控工具對源碼進行管理;
(2)構建工具:使用maven、gradle 等構建工具對代碼進行編譯、構建、打包等;
(3)持續(xù)集成(CI):采用jenkins 等流水線工具,對項目的整個流程進行調(diào)度管理;提供流程配置等功能;
(4)配置工具:采用Shell 等腳本技術對配置信息和配置文件進行管理;
(5)容器:采用Docker 技術將應用部署至云端虛擬機;
(6)編排工具:使用Kubernetes 進行系統(tǒng)部署的編排操作;
(7)測試工具:使用fortify 等對代碼進行靜態(tài)掃描;使用Appscan 黑盒工具對系統(tǒng)進行安全測試;
(8)應用服務器:使用tomcat/weblogic等應用服務器部署應用;
(9)性能測試:采用jemeter 集成進行性能測試;
(10)黑盒測試:采用appscan 掃描工具;
(11)軟件自動化:使用rpa機器人,操作appscan自動錄制腳本,進行自動點擊測試;
(12)API 測試:采用Jemeter 進行API 測試,測試完畢后將API 腳本進行性能測試。
如圖3、圖4所示,建運協(xié)同工具與其他服務或接口的交互關系是:
(1)通過統(tǒng)一認證獲取登陸用戶,統(tǒng)一權限獲取用戶角色,來控制用戶的登陸和權限;
(2)登陸成功后,向統(tǒng)一工作流發(fā)送代辦密鑰申請,并獲得密鑰;
(3)系統(tǒng)構建成功后,通過統(tǒng)一工作流發(fā)起檢修和測試任務,檢修完成后,發(fā)送代辦發(fā)布系統(tǒng);
(4)通過非結構化進行制品的管理,通過CMDB 與應用商店來部署打包后的產(chǎn)品。
綜上所述,基于DevOps理念的建運協(xié)同工具,貫穿項目從開發(fā)、測試到發(fā)布、運維的全生命周期,打通了電力軟件開發(fā)的各個環(huán)節(jié)。它通過流水線的形式實現(xiàn)了過程管理的自動化,把人為參與的打包、部署、發(fā)布等過程轉為自動運行,從而簡化了溝通過程,促進協(xié)同開發(fā)一體化,極大地提高了工作效率。