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