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