任宇陽 楊青林 汪淑平
摘? 要:隨著國內(nèi)核電的高速發(fā)展,傳統(tǒng)的核電信息系統(tǒng)開發(fā)和運行架構(gòu)面臨著開發(fā)效率低、維護成本高、升級困難等問題。為解決這些存在的問題,本文將對核電大型管理系統(tǒng)中應(yīng)用開發(fā)及運維作為整體的DevOps技術(shù)進行介紹和分析,并對DevOps在當(dāng)前核電大型管理系統(tǒng)管理過程中的應(yīng)用進行研究,為核電大型管理系統(tǒng)中的運行架構(gòu)的發(fā)展提供研究基礎(chǔ),推動核電大型管理系統(tǒng)高效管理要求,滿足核電業(yè)務(wù)發(fā)展的需求。
關(guān)鍵詞: DevOps? 核電大型管理系統(tǒng)? 開發(fā)運維一體化? 信息化建設(shè)
中圖分類號:TP311? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標(biāo)識碼:A? ? ? ? ? ? ? ? ? 文章編號:1674-098X(2020)09(a)-0168-04
Abstract:With the construction and development of nuclear power in China, the development and operation architecture of traditional nuclear power information systems is facing problems such as low development efficiency, high maintenance costs, and difficult upgrades. In order to solve these existing problems, this article will introduce and analyze the DevOps technology of application development and operation and maintenance as a whole in the large-scale nuclear power management system, and study the application of DevOps in the current large-scale nuclear power management system management process. It provides the research foundation for the development of operation architecture in large scale nuclear power management system, promotes the efficient management requirements of large-scale nuclear power management systems, and meets the needs of nuclear power business development.
Key Words: Devops; Large nuclear power management system; Integration of development and maintenance; Information construction
目前,信息系統(tǒng)已經(jīng)應(yīng)用于核電企業(yè)的各個環(huán)節(jié),包括核動力機組的運行、維修、設(shè)備管理領(lǐng)域等,但目前核電廠存在應(yīng)用系統(tǒng)多,各系統(tǒng)存在孤島等問題,大型應(yīng)用系統(tǒng)如EAM、ERP等受到國外技術(shù)限制,并且面臨系統(tǒng)升級需要停機、運行速度慢等問題。隨著核電數(shù)字化、智能化建設(shè)不斷深入,傳統(tǒng)的信息系統(tǒng)開發(fā)運行架構(gòu)已經(jīng)無法滿足核電用戶需求,取而代之的將是以快速開發(fā)、快速部署為目標(biāo)的分布式技術(shù)架構(gòu)。因此,核電信息系統(tǒng),尤其是大型核電管理信息系統(tǒng)的建設(shè),必然要構(gòu)建一個更優(yōu)的開發(fā)運維技術(shù)平臺。
1? 核電大型管理系統(tǒng)建設(shè)面臨的問題
核電信息系統(tǒng)在給核電企業(yè)生產(chǎn)運營帶來便利的同時,核電管理信息系統(tǒng)在建設(shè)中也和其他行業(yè)傳統(tǒng)信息系統(tǒng)一樣,存在著諸多亟需解決的問題。
1.1 內(nèi)部職責(zé)劃分不清
傳統(tǒng)信息系統(tǒng)的全生命周期管理往往被分為3個階段:開發(fā)、測試和運維,而這3個階段也通常會由不同部門進行管理。任何階段或部門出現(xiàn)問題,都可能會對運行環(huán)境中的信息系統(tǒng)造成隱患甚至故障。但是由于這3個階段的環(huán)境、職責(zé)等因素不同,往往無法追查到最終的責(zé)任環(huán)節(jié)或部門。
1.2 系統(tǒng)建設(shè)周期長
傳統(tǒng)信息系統(tǒng)從開發(fā)、測試再到上線,都需要進行反復(fù)的驗證,但由于3個階段的環(huán)境會存在不同之處,有可能造成在不同環(huán)境下的信息系統(tǒng)程序存在各種問題,導(dǎo)致最終信息系統(tǒng)交付及上線時間延期。
1.3 系統(tǒng)升級風(fēng)險大
原來傳統(tǒng)信息系統(tǒng)升級時,因需求增加導(dǎo)致的系統(tǒng)功能調(diào)整,當(dāng)存在測試不完整的情況時,在生產(chǎn)運行環(huán)境下進行應(yīng)用程序發(fā)布,可能會對生產(chǎn)環(huán)境造成運行不穩(wěn)定的風(fēng)險。此外,原有大型管理系統(tǒng)升級必須停機,針對一些核心核電生產(chǎn)管理系統(tǒng),停機可能影響核電廠生產(chǎn)管理工作,需要新技術(shù)改善此問題。
2? DevOps概念及優(yōu)勢
2.1 DevOps概念
以前為了能夠按時保質(zhì)保量交付信息系統(tǒng),傳統(tǒng)軟件開發(fā)中會把開發(fā)和運維分開,但這樣的做法并不適合現(xiàn)代軟件產(chǎn)品和服務(wù)的需求。于是,IT行業(yè)逐步形成了把開發(fā)和運維作為整體的DevOps工程思想。與此同時,希望通過建設(shè)某個平臺或工具以支持開發(fā)和運維的管理工作,形成一系列的持續(xù)集成[1],持續(xù)交付,自動化恢復(fù)系統(tǒng),自動化測試監(jiān)控[2],自動化部署,彈性伸縮等功能,以提升開發(fā)測試效率,簡化開發(fā)、測試及運維過程的管理,降低產(chǎn)品交付風(fēng)險,降低溝通及運營成本。
DevOps 是 Development和Operations的組合,是開發(fā)、運維和質(zhì)量保證(QA)三個部門/主體之間進行溝通、協(xié)作和集成所采用的流程、方法和體系的一個集合,是對信息系統(tǒng)產(chǎn)品或服務(wù),滿足某個業(yè)務(wù)目標(biāo),對開發(fā)與運維之間相互依存關(guān)系的一種新的理解[1]。如圖1所示。
DevOps旨在解決傳統(tǒng)IT運維模式的痛點,填補開發(fā)與運維之間的間隙,將開發(fā)、運維和測試有機融合。用一句話來說,DevOps 就是打通開發(fā)運維的壁壘,實現(xiàn)開發(fā)運維一體化,可以總結(jié)為一個能力環(huán)來解釋DevOps的概念。如圖2所示。
2.2 DevOps優(yōu)勢
在目前流行的敏捷開發(fā)中,已經(jīng)將整個軟件開發(fā)流程中的需求->開發(fā)->測試三個環(huán)節(jié)囊括在內(nèi),指導(dǎo)這三個階段的相關(guān)團隊提升效率,但這其中沒有包含部署環(huán)境,敏捷開發(fā)流程也并沒能解決開發(fā)與運維之間的銜接問題。DevOps就是想把最后部署環(huán)節(jié)也囊括到這個循環(huán)流程中。圖3清晰地說明了軟件開發(fā)模式的演進過程。
3? 核電大型管理系統(tǒng)中DevOps的應(yīng)用研究
DevOps的技術(shù)發(fā)展及管理模式符合核電大型管理系統(tǒng)中以客戶需求為導(dǎo)向的要求。通過使用DevOps的一系列工具及平臺,能有效實現(xiàn)一系列的持續(xù)集成,持續(xù)交付,自動化恢復(fù)系統(tǒng),自動化測試監(jiān)控[2],自動化部署,彈性伸縮等功能。
3.1 DevOps流程
在核電大型管理系統(tǒng)建設(shè)過程中,利用完善的DevOps工具鏈,建立起了涵蓋應(yīng)用全生命周期的DevOps流程。流程的角色一般劃分為功能負責(zé)人、開發(fā)人員、測試人員、運維人員、流程負責(zé)人。將DevOps流程分為5個階段:
(1)項目規(guī)劃階段:明確項目的工作任務(wù)書,對項目的目標(biāo)、需求、進度、質(zhì)量、潛在的技術(shù)問題和風(fēng)險、成本及其影響進行評估,組織團隊,并確定基本規(guī)則。
(2)需求和設(shè)計階段:將項目的工作任務(wù)書擴展成詳細的產(chǎn)品定義,包括完整的產(chǎn)品定義、開發(fā)、測試、運維的方法、項目計劃。
(3)服務(wù)開發(fā)和驗證階段:完成服務(wù)設(shè)計、開發(fā)、集成、驗證、實施、性能測試、可靠性測試、安全測試等各個方面的工作。
(4)服務(wù)發(fā)布階段:評估系統(tǒng)是否滿足上線條件,當(dāng)開發(fā)/測試環(huán)境中的代碼通過自動化測試,流水線會將代碼自動部署到生產(chǎn)環(huán)境中。
(5)服務(wù)生命周期階段:包括對服務(wù)上線的監(jiān)控、運維、變更管控等活動。上線后,運維人員在自動化監(jiān)控工具的幫助下持續(xù)監(jiān)控功能狀態(tài)。
同時,DevOps對迭代的過程活動進行設(shè)計。如圖4所示。
3.2 DevOps工具
在核電大型管理系統(tǒng)建設(shè)中,使用的DevOps主要工具如表1所示。
3.3 DevOps應(yīng)用
DevOps 能夠滿足核電行業(yè)對于 IT 運維管理上的需求,在眾多大中型企業(yè)得到了應(yīng)用實踐[4]。核電大型管理系統(tǒng)建設(shè)從項目管理、需求管理、流水線和門禁配置、個人構(gòu)建、測試驗證、發(fā)布版本、灰度發(fā)布等方面進行了DevOps應(yīng)用實踐。
3.3.1 項目管理
項目負責(zé)人在規(guī)劃和設(shè)計階段,需要明確項目的范圍、整體流程、質(zhì)量要求,并將相關(guān)信息同步到項目全員。服務(wù)項目整體規(guī)劃,包括團隊組建、交付范圍和時間點確定、版本里程碑規(guī)劃等。項目整體流程和規(guī)范制定,包括接口規(guī)范、接口變更管控規(guī)則、需求規(guī)范、編碼規(guī)范、服務(wù)上線要求、服務(wù)發(fā)布規(guī)范。架構(gòu)工程師進行系統(tǒng)的總體架構(gòu)設(shè)計、微服務(wù)解耦、協(xié)助制定相關(guān)技術(shù)開發(fā)規(guī)范。服務(wù)負責(zé)人(Service Leader)在規(guī)劃和設(shè)計階段時,需要制定服務(wù)組組內(nèi)的微服務(wù)開發(fā)流程、分支策略。各領(lǐng)域負責(zé)人(集成測試/安全/運維/運營)在規(guī)劃和設(shè)計階段時,反饋給領(lǐng)域的開發(fā)要求,并制定相關(guān)規(guī)范。
3.3.2? 需求管理
所有需求都必須錄入Backlog,做到可視化、可管控、可追溯。需求要有明確的驗收標(biāo)準(zhǔn)。以任務(wù)項為粒度進行交付,任務(wù)項不跨微服務(wù)/組件,滿足INVEST原則,迭代完成的標(biāo)志是任務(wù)上線。需求落地時間原則上不可變更,如需變更迭代,需要需求人確認。需求需要關(guān)聯(lián)代碼提交記錄和自動化用例。如果需求沒有實現(xiàn)自動化,原則上所有環(huán)境都需要手工驗證。
3.3.3 流水線和門禁配置
項目規(guī)劃和設(shè)計時,設(shè)計一條標(biāo)準(zhǔn)流水線和門禁模版,所有微服務(wù)使用同一套流水線模版進行配置。一條智能型流水線是實現(xiàn)需求快速交付的基石。
3.3.4 個人構(gòu)建
個人構(gòu)建是開發(fā)工程師在代碼入庫前的工程活動,包括本地構(gòu)建、本地靜態(tài)檢查和單元測試以及Alpha環(huán)境部署后的測試,如靜態(tài)掃描、單元測試、API測試、契約測試。
3.3.5 測試驗證
代碼入庫后,流水線自動拉起構(gòu)建、環(huán)境部署和驗證,并配置門禁智能檢驗質(zhì)量。
3.3.6 發(fā)布版本
在生產(chǎn)環(huán)境運行的任何一個軟件包,都能找到軟件包唯一對應(yīng)的自研源碼、開源軟件及版本、公共組件。變更/發(fā)布過程可追溯,從生產(chǎn)環(huán)境變更歷史列表中選擇任意一次變更,都能關(guān)聯(lián)到本次變更實現(xiàn)的需求/缺陷列表,進而追溯到對應(yīng)的開發(fā)人員、變更對應(yīng)的流水線工具記錄(代碼檢查、運行測試、構(gòu)建環(huán)境配置、變更審批記錄)等。
3.3.7 灰度發(fā)布
使用灰度發(fā)布,降低升級的風(fēng)險?;叶劝l(fā)布流程,如圖6所示。
項目經(jīng)理PM/服務(wù)負責(zé)人SL基于本周期內(nèi)規(guī)劃需求,組織團隊明確灰度發(fā)布開展節(jié)奏,并確定需要開展用戶灰度的特性清單。開發(fā)人員完成灰度方案開發(fā)后,需要在測試環(huán)境完成對應(yīng)的功能、非功能驗證,包括升級、回滾等,對驗證結(jié)果進行評估和確認。開發(fā)人員基于環(huán)境灰度發(fā)布策略、特性灰度發(fā)布上線方案,使用工具啟動灰度上線。并遵從灰度發(fā)布上線策略、在線監(jiān)控等活動,在滿足質(zhì)量出口要求后再擴大發(fā)布,直到完成全網(wǎng)上線升級。
4? 結(jié)語
本文對目前IT技術(shù)流行的開發(fā)模式進行簡要分析,認為在核電大型管理系統(tǒng)的建設(shè)中采用基于DevOps的開發(fā)架構(gòu),能有效提高核電大型管理系統(tǒng)的交付速度與質(zhì)量,實現(xiàn)高效、高質(zhì)量、自動化地將最新功能交付給客戶,并能有效避免傳統(tǒng)開發(fā)及運維系統(tǒng)中發(fā)現(xiàn)的問題。通過在核電大型管理系統(tǒng)中進行的DevOps應(yīng)用研究,一方面,為后續(xù)的核電信息化建設(shè)工作奠定基礎(chǔ);另一方面,核電企業(yè)也需要DevOps體系的支持,對傳統(tǒng)信息化系統(tǒng)開發(fā)及運維架構(gòu)進行改造,以適應(yīng)高并發(fā)量、大數(shù)據(jù)量的快速擴展,才能做到更好地為用戶服務(wù),推進核電智能化發(fā)展。
參考文獻
[1] 高翔,朱杰媛.持續(xù)集成在軟件項目管理中的作用[J].機電信息,2019(17):177-178.
[2] 霍娜.DevOps讓快速交付成現(xiàn)實[N].中國計算機報,2014-09-15.
[3] EZHUMBLE,DAVIDFARLEY.持續(xù)交付發(fā)布可靠軟件的系統(tǒng)方法[M].北京:人民郵電出版社,2011.
[4] 張貝貝.DevOps:推到隔閡之墻[J].軟件和信息服務(wù),2013(8):38-42.
[5] 鄒筱菁,柯林.基于DevOps的軟件開發(fā)管理模式[J].數(shù)字技術(shù)與應(yīng)用,2016(11):184-187,217.
[6] 沈欣媛.我國核安全監(jiān)管法律法規(guī)體系對聚變堆適用性研究[D].北京:中國科學(xué)技術(shù)大學(xué),2019.
[7] 吳愛民.WANO性能指標(biāo)在核電廠生產(chǎn)管理信息系統(tǒng)中的應(yīng)用研究[D].濟南:山東大學(xué),2019.
[8] 李彥青.基于PDA的電力工程施工質(zhì)量信息采集系統(tǒng)構(gòu)建與開發(fā)[D].北京:華北電力大學(xué),2017.
[9] 張曉香.規(guī)模化敏捷方法在軟件企業(yè)的應(yīng)用研究[D].蘭州:蘭州大學(xué),2018.