王鵬飛,唐灝
(國網江蘇省電力有限公司信息通信分公司,南京 210024)
隨著能源互聯網建設戰略目標的提出,電網公司開展數字新基建工作,著力打造以云平臺為基礎的電網數字化平臺,以數字化、智能化推動電網向智慧化方向發展,推動企業數字化轉型、智能升級、融合創新,實現效率效益提升,支撐“具有中國特色國際領先的能源互聯網企業”戰略目標落地實施[1-2]。
當前電網企業技術架構逐步從傳統架構轉變為互聯網新架構與傳統架構并存,主要表現為:①信息基礎資源由傳統的物理資源向全面云化、全局調度方式轉變[3];②業務系統由傳統單體架構逐步向輕量化、容器化、微服務化的模式轉變[4];③分層IT 架構運維模式逐步向一體化、自動化、智能化轉變[5]。傳統研發模式已經無法滿足當前業務發展需求,亟需加強敏態下的研發管理能力,電網企業基于新的形勢與變化開展研發仿真環境建設工作,提升一站式項目交付管理能力,有效屏蔽差異化基礎設施帶來的各類研發、協作、運維效能挑戰,實現對用戶可見的持續、順暢、高質量、有效價值的交付[6-7]。
電網企業擁抱未來新的研發模式,統籌規劃,開展仿真網絡建設,按照共享云底座方式做好驗證培訓環境、公共服務環境建設,除此之外,根據需要部署個性化公共服務系統,供本單位驗證培訓環境使用。做好本單位代碼庫、依賴庫、鏡像庫、仿真鏡像庫、生產鏡像庫、編譯機等部署實施工作[8]。
Devops 分為規劃設計、持續集成、持續交付、持續部署和運維監控五個環節,五個環節相互銜接、持續反饋,安全點控制集成進各環節[9-10]。根據電網企業研發、運維單位分離的情況,傳統Devops 測試拆分至持續集成和交付環節分別開展,持續集成測試在研發單位研發測試環境中開展,持續交付的測試則在運維單位的準生產環境中開展,三方測試和安全測試按照穩態和敏態區分的策略開展:穩態維持現狀,敏態情況下在技術督查抽檢、項目總體上線等業務中開展,如圖1所示。

圖1 Devops流程
規劃設計環節包含了從需求發起、審核、到形成設計的過程。通過采用統一的應用構建平臺、基礎平臺標準化工藝、平臺組件及中臺集成標準,將安全控制和合規要求、建轉運紅藍線要求納入每個需求設計,提升基礎平臺、業務應用的標準化程度,降低研發測試環境、準生產環境和生產環境的差異度,提高研發質量。
持續集成環節包含了編譯構建、代碼檢查、單元測試、集成測試等過程,安全貫穿整個持續集成環節。通過統一的持續集成平臺,利用自動化的流水線支持研發過程中的不同階段的任務,從而盡快地發現集成過程中的錯誤和安全問題,提高研發管控質量,縮短研發周期,降低研發成本,提高交付頻率。
持續交付在持續集成的基礎上,持續將集成后的最新版本部署準生產環境中,通過不斷的自動化測試,確保業務應用和服務符合功能、性能、安全要求,具備快速、安全部署到生產環境中的條件。包含了配置管理、測試管理、發布與部署管理幾個方面內容。
持續部署將持續交付階段通過后的最新版本部署至生產環境中,并開展測試驗證,確保生產業務安全穩定,并具備回退能力。與持續交付階段相似,包含了配置管理、自動化部署、自動化驗證幾個方面內容。
運營監控環節包含Devops 全鏈路業務、安全、質量運行情況監控和信息系統運行維護,實現整個Devops 過程運轉質量的監控優化以及信息系統運行維護工作。
為支撐研發仿真環境中六大環境建設,規劃出三庫,即代碼庫、依賴庫、鏡像庫。通過三庫建設解決研發與三方測試系統版本不一致、三方測試與生產系統版本不一致的問題。總體上,三庫采用兩級部署模式。研發仿真環境部署架構如圖2所示。

圖2 研發仿真環境部署架構
代碼庫是存放系統研發代碼的倉庫,一級代碼庫集中存放統推項目的研發代碼,二級代碼庫存放的是本單位自建項目的研發代碼,研發單位二級代碼庫存放項目開發過程的代碼。其中,一級代碼庫的代碼是研發單位從二級代碼庫在線提交上來的,研發單位項目研發完成后,在線提交代碼至一級代碼庫,在此基礎上開展編譯打包以及后續三方測試。二級單位建立一個云上VPC 使用ECS 構建二級環境。技術路線選用“Gitlib”依賴庫主要存放系統開發和編譯過程中依賴的組件包,一級單位對這個依賴庫進行統一運營管理,在一級依賴庫中及時新增組件包、更新有缺陷隱患的的組件包,并及時發布至二級依賴庫,確保全網依賴組件包版本一致。二級單位建立一個云上VPC 使用ECS 構建二級環境,技術路線選用開源Nexus。
鏡像庫主要存放編譯后的研發系統的程序包或鏡像包,這個鏡像包是用來發布到研發測試環境、驗證培訓環境進行測試用的,是用來一鍵發布到生產環境的。一級鏡像庫集中存放的是統推項目程序包或鏡像包。二級鏡像庫存放統建兩級系統或自建項目的程序包或鏡像包,這個統建兩級系統的鏡像包,是由一級鏡像庫同步過來的。研發單位二級鏡像庫存放開發過程中內部測試版本的程序包或鏡像包,研發單位鏡像庫僅支撐研發單位內部測試和出廠測試,不對外發布。另外,這個鏡像庫還存放公共服務系統的鏡像包,這些鏡像包總部生成,并由一級鏡像庫發布至二級鏡像庫,二級單位及研發單位側公共服務環境加載使用,確保全網公共服務系統版本一致。
研發仿真環境的總體架構如圖3 所示,主要是研發仿真環境6 個環境和3 個庫的邏輯架構圖,同時,結合統建系統和自建系統,說明利用研發測試環境、公共服務環境、測試服務環境、驗證培訓環境、生產環境這5 個環境,以及3 個庫如何支撐項目研發測試部署全流程工作。

圖3 研發仿真環境架構
整體架構圖中,總部側會構建公司公共服務環境、驗證培訓環境、測試服務環境,同時,會部署一級代碼庫、一級依賴庫和一級鏡像庫。
研發單位側部署研發測試環境、公共服務環境,同時,會部署二級代碼庫、二級依賴庫和二級鏡像庫。
省級公司部署公共服務環境、驗證培訓環境,同時會部署二級代碼庫、二級依賴庫和二級鏡像庫。
統建系統共分為3個階段,研發階段流程1—4,三方測試與驗證階段流程5—9,發布生產階段流程10—13。
研發階段流程1—4,在左下角研發單位側。
流程1,研發人員在研發測試環境中開展系統研發,研發過程中,研發人員可實時調用測試服務環境中的在線三方測試服務對代碼進行在線掃描,根據掃描結果對代碼進行修改完善后,將代碼在線提交到本單位的二級代碼庫。
流程2,編譯工具從二級代碼庫拉取剛才提交編寫好的代碼,并從二級依賴庫拉取所需的依賴包組件,對代碼進行編譯打包,并將程序包(或鏡像包)推送至本單位的二級鏡像庫。
流程3,將剛才推送至二級鏡像庫的程序包或鏡像包發布至研發測試環境中。
流程4,研發單位測試人員在研發測試環境中,調用公共服務環境公共系統,利用測試服務環境,開展系統功能測試、性能測試、安全測試、集成測試,以及集團測試等。調用公共服務環境公共系統,確保使用與生產環境版本一致的公共服務系統進行測試;使用測試服務環境,就是利用服務化的三方測試工具,按照公開化、透明化的三方測試標準和測試規則,在線開展內部測試和集團出場測試,進一步縮短后期三方測試周期和項目建設周期。
三方測試、仿真階段,流程5—9,在上方總部側。
流程5,研發測試通過后,研發單位將測試通過的代碼在線提交到一級代碼庫,同時通過在線提交第三方測試申請材料,進行三方測試申請。
流程6,編譯工具拉取研發單位剛在線提交到一級代碼庫的代碼,并從一級依賴庫拉取所需的依賴包組件,對代碼進行編譯打包,并將程序包或鏡像包推送到總部的一級鏡像庫。
流程7,將剛才推送至一級鏡像庫的程序包或鏡像包發布至驗證培訓環境中。
流程8,在驗證培訓環境中,調用公共服務環境公共系統,利用測試服務環境中服務化的三方測試工具,在線開展系統第三方測試工作。
流程9,在驗證培訓環境中,通過調用公共服務環境公共服務系統,業務部門可以開展在線業務驗證,運行人員可以在線演練,關鍵用戶可以在線培訓,讓業務用戶深入參與到研發過程之中,敏捷響應用戶需求。
如果三方測試未通過,返回研發單位修改完善,確認沒問題再發布到驗證培訓環境繼續開展三方測試。
發布生產階段流程,流程10—13,分別在總部和省級公司生產環境側。
流程10,第三方測試或用戶驗證測試通過后,如果是統建一級系統,測試通過的程序包或鏡像包從一級鏡像庫一鍵發布至總部生產鏡像庫,并完成總部生產環境的自動部署。
如果是統建二級系統,走流程11,測試通過的程序包或鏡像包從一級鏡像庫推送至省級公司二級鏡像庫。
流程12,將省級公司二級鏡像庫中剛收到的統建二級系統程序包或鏡像包發布至驗證培訓環境,并調用公共服務環境公共系統,開展省公司側系統驗證工作。
最后一步,流程13,省側驗證培訓環境驗證通過后,將省級公司二級鏡像庫中的統建二級系統程序包或鏡像包一鍵發布至省級公司生產鏡像庫,并完成生產環境自動部署工作。
自建系統,流程包括流程1—4、流程15—19,其中流程1—4 主要是研發單位研發測試內容,與統建系統流程1—4內容、流程一致,不再贅述。主要說明流程15—19,從流程15開始,即研發隊伍完成自建系統研發測試后,在線提交代碼開始匯報。
流程15,研發單位完成省公司自建系統研發測試后,將代碼提交到省公司二級代碼庫中。
流程16,編譯工具從省級公司二級代碼庫拉取剛提交編寫好的自建系統代碼,并從二級依賴庫拉取所需的依賴包組件,對代碼進行編譯打包,并將程序包(或鏡像包)推送至省級公司二級鏡像庫。
流程17,將剛推送至二級鏡像庫的自建系統程序包或鏡像包發布至省級公司驗證培訓環境中。
流程18,在驗證培訓環境中,調用公共服務環境公共系統,第三方測試團隊利用測試服務環境,開展三方測試;同時,業務部門可以在線業務驗證,運行人員可以在線演練,以及關鍵用戶的在線培訓。
最后一步,流程19,三方測試通過后,將二級鏡像庫中的自建系統程序包或鏡像包一鍵發布至生產鏡像庫,并完成生產環境的自動部署工作。
選用本單位某系統開展Devops 全流程驗證,研發單位通過手工命令方式,將內部測試通過版本代碼上傳至二級代碼庫、提交項目編譯依賴包到總部一級依賴庫,通過云效平臺調用電力二級代碼庫,開展代碼編譯,生成程序包推送到PackageSwitch 二級鏡像庫中,通過部署在本地ECS 虛擬機上的Agent 完成程序包部署,省側測試驗證,通過測試后,利用云效將測試通過的程序包部署到生產環境中ECS,發布后,應用訪問正常如圖4所示。

圖4 驗證結果
本文針對目前研發與三方測試系統版本不一致、三方測試與生產系統版本不一致問題,結合電網企業數字化轉型發展需求,基于Devops 流程提出研發仿真環境構建方案,實現應用在線研發、在線測試、在線發布等一體化、全流程、自動化,提升各類研發、協作、運維效能,實現對用戶可見的持續、順暢、高質量、有效價值的交付。本文的工作可以進一步推進電力行業信息基礎設施數字化升級。