任宇陽 楊青林 汪淑平
摘? 要:隨著國內(nèi)核電的高速發(fā)展,傳統(tǒng)的核電信息系統(tǒng)開發(fā)和運行架構(gòu)面臨著開發(fā)效率低、維護成本高、升級困難等問題。為解決這些存在的問題,本文將對核電大型管理系統(tǒng)中應用開發(fā)及運維作為整體的DevOps技術(shù)進行介紹和分析,并對DevOps在當前核電大型管理系統(tǒng)管理過程中的應用進行研究,為核電大型管理系統(tǒng)中的運行架構(gòu)的發(fā)展提供研究基礎,推動核電大型管理系統(tǒng)高效管理要求,滿足核電業(yè)務發(fā)展的需求。
關鍵詞: DevOps? 核電大型管理系統(tǒng)? 開發(fā)運維一體化? 信息化建設
中圖分類號:TP311? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼: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è)的各個環(huán)節(jié),包括核動力機組的運行、維修、設備管理領域等,但目前核電廠存在應用系統(tǒng)多,各系統(tǒng)存在孤島等問題,大型應用系統(tǒng)如EAM、ERP等受到國外技術(shù)限制,并且面臨系統(tǒng)升級需要停機、運行速度慢等問題。隨著核電數(shù)字化、智能化建設不斷深入,傳統(tǒng)的信息系統(tǒng)開發(fā)運行架構(gòu)已經(jīng)無法滿足核電用戶需求,取而代之的將是以快速開發(fā)、快速部署為目標的分布式技術(shù)架構(gòu)。因此,核電信息系統(tǒng),尤其是大型核電管理信息系統(tǒng)的建設,必然要構(gòu)建一個更優(yōu)的開發(fā)運維技術(shù)平臺。
1? 核電大型管理系統(tǒng)建設面臨的問題
核電信息系統(tǒng)在給核電企業(yè)生產(chǎn)運營帶來便利的同時,核電管理信息系統(tǒng)在建設中也和其他行業(yè)傳統(tǒng)信息系統(tǒng)一樣,存在著諸多亟需解決的問題。
1.1 內(nèi)部職責劃分不清
傳統(tǒng)信息系統(tǒng)的全生命周期管理往往被分為3個階段:開發(fā)、測試和運維,而這3個階段也通常會由不同部門進行管理。任何階段或部門出現(xiàn)問題,都可能會對運行環(huán)境中的信息系統(tǒng)造成隱患甚至故障。但是由于這3個階段的環(huán)境、職責等因素不同,往往無法追查到最終的責任環(huán)節(jié)或部門。
1.2 系統(tǒng)建設周期長
傳統(tǒng)信息系統(tǒng)從開發(fā)、測試再到上線,都需要進行反復的驗證,但由于3個階段的環(huán)境會存在不同之處,有可能造成在不同環(huán)境下的信息系統(tǒng)程序存在各種問題,導致最終信息系統(tǒng)交付及上線時間延期。
1.3 系統(tǒng)升級風險大
原來傳統(tǒng)信息系統(tǒng)升級時,因需求增加導致的系統(tǒng)功能調(diào)整,當存在測試不完整的情況時,在生產(chǎn)運行環(huán)境下進行應用程序發(fā)布,可能會對生產(chǎn)環(huán)境造成運行不穩(wěn)定的風險。此外,原有大型管理系統(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)品和服務的需求。于是,IT行業(yè)逐步形成了把開發(fā)和運維作為整體的DevOps工程思想。與此同時,希望通過建設某個平臺或工具以支持開發(fā)和運維的管理工作,形成一系列的持續(xù)集成[1],持續(xù)交付,自動化恢復系統(tǒng),自動化測試監(jiān)控[2],自動化部署,彈性伸縮等功能,以提升開發(fā)測試效率,簡化開發(fā)、測試及運維過程的管理,降低產(chǎn)品交付風險,降低溝通及運營成本。
DevOps 是 Development和Operations的組合,是開發(fā)、運維和質(zhì)量保證(QA)三個部門/主體之間進行溝通、協(xié)作和集成所采用的流程、方法和體系的一個集合,是對信息系統(tǒng)產(chǎn)品或服務,滿足某個業(yè)務目標,對開發(fā)與運維之間相互依存關系的一種新的理解[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),指導這三個階段的相關團隊提升效率,但這其中沒有包含部署環(huán)境,敏捷開發(fā)流程也并沒能解決開發(fā)與運維之間的銜接問題。DevOps就是想把最后部署環(huán)節(jié)也囊括到這個循環(huán)流程中。圖3清晰地說明了軟件開發(fā)模式的演進過程。
3? 核電大型管理系統(tǒng)中DevOps的應用研究
DevOps的技術(shù)發(fā)展及管理模式符合核電大型管理系統(tǒng)中以客戶需求為導向的要求。通過使用DevOps的一系列工具及平臺,能有效實現(xiàn)一系列的持續(xù)集成,持續(xù)交付,自動化恢復系統(tǒng),自動化測試監(jiān)控[2],自動化部署,彈性伸縮等功能。
3.1 DevOps流程
在核電大型管理系統(tǒng)建設過程中,利用完善的DevOps工具鏈,建立起了涵蓋應用全生命周期的DevOps流程。流程的角色一般劃分為功能負責人、開發(fā)人員、測試人員、運維人員、流程負責人。將DevOps流程分為5個階段:
(1)項目規(guī)劃階段:明確項目的工作任務書,對項目的目標、需求、進度、質(zhì)量、潛在的技術(shù)問題和風險、成本及其影響進行評估,組織團隊,并確定基本規(guī)則。
(2)需求和設計階段:將項目的工作任務書擴展成詳細的產(chǎn)品定義,包括完整的產(chǎn)品定義、開發(fā)、測試、運維的方法、項目計劃。
(3)服務開發(fā)和驗證階段:完成服務設計、開發(fā)、集成、驗證、實施、性能測試、可靠性測試、安全測試等各個方面的工作。
(4)服務發(fā)布階段:評估系統(tǒng)是否滿足上線條件,當開發(fā)/測試環(huán)境中的代碼通過自動化測試,流水線會將代碼自動部署到生產(chǎn)環(huán)境中。
(5)服務生命周期階段:包括對服務上線的監(jiān)控、運維、變更管控等活動。上線后,運維人員在自動化監(jiān)控工具的幫助下持續(xù)監(jiān)控功能狀態(tài)。
同時,DevOps對迭代的過程活動進行設計。如圖4所示。
3.2 DevOps工具
在核電大型管理系統(tǒng)建設中,使用的DevOps主要工具如表1所示。
3.3 DevOps應用
DevOps 能夠滿足核電行業(yè)對于 IT 運維管理上的需求,在眾多大中型企業(yè)得到了應用實踐[4]。核電大型管理系統(tǒng)建設從項目管理、需求管理、流水線和門禁配置、個人構(gòu)建、測試驗證、發(fā)布版本、灰度發(fā)布等方面進行了DevOps應用實踐。
3.3.1 項目管理
項目負責人在規(guī)劃和設計階段,需要明確項目的范圍、整體流程、質(zhì)量要求,并將相關信息同步到項目全員。服務項目整體規(guī)劃,包括團隊組建、交付范圍和時間點確定、版本里程碑規(guī)劃等。項目整體流程和規(guī)范制定,包括接口規(guī)范、接口變更管控規(guī)則、需求規(guī)范、編碼規(guī)范、服務上線要求、服務發(fā)布規(guī)范。架構(gòu)工程師進行系統(tǒng)的總體架構(gòu)設計、微服務解耦、協(xié)助制定相關技術(shù)開發(fā)規(guī)范。服務負責人(Service Leader)在規(guī)劃和設計階段時,需要制定服務組組內(nèi)的微服務開發(fā)流程、分支策略。各領域負責人(集成測試/安全/運維/運營)在規(guī)劃和設計階段時,反饋給領域的開發(fā)要求,并制定相關規(guī)范。
3.3.2? 需求管理
所有需求都必須錄入Backlog,做到可視化、可管控、可追溯。需求要有明確的驗收標準。以任務項為粒度進行交付,任務項不跨微服務/組件,滿足INVEST原則,迭代完成的標志是任務上線。需求落地時間原則上不可變更,如需變更迭代,需要需求人確認。需求需要關聯(lián)代碼提交記錄和自動化用例。如果需求沒有實現(xiàn)自動化,原則上所有環(huán)境都需要手工驗證。
3.3.3 流水線和門禁配置
項目規(guī)劃和設計時,設計一條標準流水線和門禁模版,所有微服務使用同一套流水線模版進行配置。一條智能型流水線是實現(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)境運行的任何一個軟件包,都能找到軟件包唯一對應的自研源碼、開源軟件及版本、公共組件。變更/發(fā)布過程可追溯,從生產(chǎn)環(huán)境變更歷史列表中選擇任意一次變更,都能關聯(lián)到本次變更實現(xiàn)的需求/缺陷列表,進而追溯到對應的開發(fā)人員、變更對應的流水線工具記錄(代碼檢查、運行測試、構(gòu)建環(huán)境配置、變更審批記錄)等。
3.3.7 灰度發(fā)布
使用灰度發(fā)布,降低升級的風險?;叶劝l(fā)布流程,如圖6所示。
項目經(jīng)理PM/服務負責人SL基于本周期內(nèi)規(guī)劃需求,組織團隊明確灰度發(fā)布開展節(jié)奏,并確定需要開展用戶灰度的特性清單。開發(fā)人員完成灰度方案開發(fā)后,需要在測試環(huán)境完成對應的功能、非功能驗證,包括升級、回滾等,對驗證結(jié)果進行評估和確認。開發(fā)人員基于環(huán)境灰度發(fā)布策略、特性灰度發(fā)布上線方案,使用工具啟動灰度上線。并遵從灰度發(fā)布上線策略、在線監(jiān)控等活動,在滿足質(zhì)量出口要求后再擴大發(fā)布,直到完成全網(wǎng)上線升級。
4? 結(jié)語
本文對目前IT技術(shù)流行的開發(fā)模式進行簡要分析,認為在核電大型管理系統(tǒng)的建設中采用基于DevOps的開發(fā)架構(gòu),能有效提高核電大型管理系統(tǒng)的交付速度與質(zhì)量,實現(xiàn)高效、高質(zhì)量、自動化地將最新功能交付給客戶,并能有效避免傳統(tǒng)開發(fā)及運維系統(tǒng)中發(fā)現(xiàn)的問題。通過在核電大型管理系統(tǒng)中進行的DevOps應用研究,一方面,為后續(xù)的核電信息化建設工作奠定基礎;另一方面,核電企業(yè)也需要DevOps體系的支持,對傳統(tǒng)信息化系統(tǒng)開發(fā)及運維架構(gòu)進行改造,以適應高并發(fā)量、大數(shù)據(jù)量的快速擴展,才能做到更好地為用戶服務,推進核電智能化發(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].軟件和信息服務,2013(8):38-42.
[5] 鄒筱菁,柯林.基于DevOps的軟件開發(fā)管理模式[J].數(shù)字技術(shù)與應用,2016(11):184-187,217.
[6] 沈欣媛.我國核安全監(jiān)管法律法規(guī)體系對聚變堆適用性研究[D].北京:中國科學技術(shù)大學,2019.
[7] 吳愛民.WANO性能指標在核電廠生產(chǎn)管理信息系統(tǒng)中的應用研究[D].濟南:山東大學,2019.
[8] 李彥青.基于PDA的電力工程施工質(zhì)量信息采集系統(tǒng)構(gòu)建與開發(fā)[D].北京:華北電力大學,2017.
[9] 張曉香.規(guī)?;艚莘椒ㄔ谲浖髽I(yè)的應用研究[D].蘭州:蘭州大學,2018.