馮青峰 許穎 楊永艷 王慧
北京中電普華信息技術有限公司 北京 100192
企業云平臺作為企業基礎設施建設的數字化底座,為應用提供了所需的最基礎的架構支撐和源源不斷的強大算力,推動企業數字化轉型與智能升級。隨著企業云平臺的深化建設,越來越多的大型業務應用系統開始遷移上云。企業在應用上云時,架構設計是應用軟件開發中最為關鍵的一環,軟件架構中包含了關于如何構建軟件的一些最重要的設計決策,如基于云平臺的組件設計和技術選型、部署架構、集成架構和安全防護方案設計等,決定了最終開發出來的軟件系統能否滿足我們預期的質量屬性,架構設計是否合理將直接影響軟件系統最終能否成功。鑒于大型業務應用系統和企業云平臺本身的復雜性,應用系統架構設計存在很多懸而未決的重大風險,現代軟件開發非常注重盡早降低風險,在以架構為中心展開大規模的系統開發之前,通過開發演進型原型進行架構驗證是有效的風險應對措施,即將軟件架構設計方案盡快通過原型實現,并通過對該原型的測試和評審,來評估軟件架構是否合理以降低項目風險,架構原型作為演進型原型,代碼要達到產品級質量,成為下一步開發的基礎。
目前,架構驗證原型的識別和選擇研究成果較少,無法有效指導項目實踐,本文正是針對上述問題,在進行了各種探索與實踐后,總結提煉了一套架構驗證原型的識別和選擇方法,供準備進行架構驗證的個人或企業參考[1]。
鑒于架構驗證原型的用途,架構驗證原型實現的功能有限,需要經過細心挑選,選擇最影響用戶滿意度(功能性需求/非功能性需求滿足程度)或有較高技術風險的一些功能進行原型開發,以保證重大的技術風險在架構設計中得到解決和驗證,為下一步啟動大規模開發打下基礎。架構驗證原型選擇活動主要由需求和架構文檔收集、業務場景分析、架構風險識別、制作場景架構風險矩陣、為已識別架構風險點選擇驗證場景、通過業務場景推演識別架構風險點、完善場景架構風險矩陣和確定驗證原型8個任務組成。
架構驗證原型選擇以業務設計需求分析和架構設計成果為輸入,通過業務場景分析識別用戶最關心的關鍵業務場景,通過對業務系統組件和技術選型、部署架構、集成架構和安全防護架構等架構元素的分析識別架構風險。把關鍵業務場景和架構風險進行匹配,形成包含業務場景信息和架構風險的二維矩陣表。從架構風險角度對已識別的架構風險點遍歷關鍵業務場景,選擇適合驗證架構風險的業務場景。從業務場景角度,通過場景推演識別和該業務場景相關的技術架構風險。通過多次迭代,完善場景架構風險矩陣表,針對場景架構風險矩陣表中的風險點制定風險應對措施,確定哪些風險點需要開發原型進行驗證,最終完成架構驗證原型的選擇。
(1)需求和架構文檔收集。需求和架構文檔收集的目的是為業務場景分析和架構風險識別收集相關資料,輸入是業務設計、軟件需求分析、架構設計相關文檔,輸出:業務藍圖、業務架構、業務場景(包含業務流程和業務功能等),軟件需求說明,系統架構設計內容(包含系統架構、組件和技術選型、部署架構、集成架構、安全架構等),云平臺提供的云服務產品規格等,步驟通過手工方式整理,為確定關鍵業務場景和識別架構風險點,收集并梳理前期設計成果。
(2)業務場景分析。業務場景分析的目的是識別用戶最關心的關鍵業務場景,輸入是業務藍圖,業務架構,業務場景(包含業務流程和業務功能等),軟件需求說明等,輸出關鍵業務場景清單。步驟依據業務藍圖、業務架構和業務場景等業務設計成果,可采用層次分析法(AHP)等方法,對業務場景優先級進行排序,識別關鍵業務場景。場景信息包含的關鍵要素有業務場景、場景簡述、關鍵非功能指標信息。
(3)架構風險識別。架構風險識別目的通過對架構元素的分析,識別架構風險點,輸入是系統架構設計內容(包含系統架構、組件和技術選型、部署架構、集成架構、安全架構等),云平臺提供的云服務產品規格等。輸出架構風險表,步驟首先確定需要評審的關鍵架構元素,設計每個架構元素的風險類別,然后根據業務系統架構設計內容識別架構風險點。
例如:系統架構中通過云平臺引入的新組件對業務需求的滿足度可能存在風險;部署架構中部署地點的選擇對用戶體驗的影響可能存在不確定性。
(4)場景架構風險矩陣表制作。場景架構風險矩陣表制作目的是建立關鍵業務場景和架構風險點關聯關系,輸入是關鍵業務場景清單,架構風險表,輸出是場景架構風險矩陣表,步驟是編制場景架構風險矩陣表,初步建立關鍵業務場景和架構風險點關聯關系[2]。
(5)為已識別架構風險點選擇驗證場景。為已識別架構風險點選擇驗證場景目的是對于已識別的架構風險點,在關鍵業務場景清單中匹配包含該架構風險點的業務場景。輸入:場景架構風險矩陣表,系統架構設計內容(包含系統架構、組件和技術選型、部署架構、集成架構、安全架構等),云平臺提供的云服務產品規格等。輸出是場景架構風險矩陣表。步驟是在場景架構風險矩陣表中,針對每個架構風險點,遍歷每個業務場景,檢查該業務場景是否存在該風險,如果存在該風險,該業務場景未來可作為驗證該風險的候選場景。
(6)通過業務場景推演識別架構風險點。通過業務場景推演識別架構風險點目的是通過關鍵業務場景技術實現推演,識別和補充架構設計風險點。場景架構風險矩陣表,軟件需求說明,系統架構設計內容(包含系統架構、組件和技術選型、部署架構、集成架構、安全架構等),云平臺提供的云服務產品規格等。輸出是場景架構風險矩陣表。步驟是針對每個業務場景,分析支撐該業務場景的跨層組件、組件調用關系以及部署架構、集成架構和安全架構對業務場景非功能指標的影響,識別和補充架構風險點。
(7)完善場景架構風險矩陣表。完善場景架構風險矩陣表目的是對場景架構風險矩陣表架構風險點內容進行去重整理。輸入是場景架構風險矩陣表。輸出是場景架構風險矩陣表。步驟通過前面任務進行的架構風險點的識別和補充,可能造成場景架構風險矩陣表中架構風險點存在于多個場景中,對相同的架構風險點選擇一個高優先級業務場景進行去重處理。
(8)確定驗證原型。確定驗證原型目的是基于場景架構風險矩陣表,對架構風險點進行評估,確定哪些風險點要通過開發原型進行驗證。輸入是場景架構風險矩陣表。輸出是架構驗證原型清單。步驟針對場景架構風險矩陣表中的架構風險點制定風險應對措施,確定哪些架構風險點需要開發原型進行驗證。基于架構風險點對應的業務場景設計驗證原型功能范圍,編制架構驗證原型清單[3]。
某電力公司營銷服務系統是對外提供客戶側用能業務服務,對內支撐營銷專業業務管理的信息化管理系統。新建系統以“活前端、大中臺、強后臺”為架構模式覆蓋原有的24個業務系統并支持新興業務。系統基于公司云平臺構建,廣泛應用“云大物移智”技術,推進信息技術融入營銷全業務、全流程,全面支撐新型營銷業態。
該系統架構設計的復雜性主要體現在業務和云平臺兩個方面。
業務體量大,邏輯復雜。營銷業務能力規劃包括14個業務域、57個業務類,全面覆蓋客戶用能設備管理、產品服務和運營管理等業務能力,體量巨大。支撐業務的應用類型包括事務處理類、決策分析類、采集量測類和移動應用類,業務邏輯復雜。
公司云平臺體系復雜。在云平臺架構方面,公司云平臺采用了兩家商業云平臺產品進行構建,為多云模式,兩家商業云平臺產品不兼容,增加了云平臺的整體復雜度。在云平臺技術體系方面,為了解決單體架構“復雜度問題”使用了微服務架構,為了解決微服務間“通訊異常問題”使用了治理框架+監控,為了解決微服務架構下大量應用“部署問題”使用了容器,為了解決容器的“編排和調度問題”使用了Kubernetes,為了解決微服務框架的“侵入性問題”使用了Service Mesh,對這些云原生的技術體系項目組沒有太多經驗,帶來了很多技術風險。
為有效應對項目風險,為下一步大規模開發打好基礎,架構組設計了《典型業務場景技術驗證方案》,開展了架構驗證工作。
基于營銷業務能力藍圖設計,采用業務場景分析方法,分析了營銷業務的14個業務域、57個業務類,提取關鍵業務場景[4-7]。

圖1 業務藍圖
營銷服務系統架構包括IaaS層、PaaS層、業務服務層、聚合開放層及前端5層和應用構建、運維監控、安全防護3個跨層。
IaaS層為業務服務提供計算服務、存儲服務和網絡服務三大類服務;PaaS層提供各種平臺服務,包括數據庫服務、中間件服務、人工智能服務、大數據服務和公共服務;業務服務層由基于企業中臺構建的各業務域微服務組成,每個微服務單獨部署;聚合開放層通過服務連接平臺等集成組件實現外部服務的接入和內部服務的開放,支撐系統之間的服務調用;前端直接面向用戶提供業務服務,由前端頁面、APP界面以及交互邏輯等組成;應用構建提供研發過程的協作支撐,實現研發過程中各個環節的統一管理,保證系統研發迭代的速度和質量;運維監控提供自動化監控和自動化運維服務;安全防護根據等保2.0三級安全技術要求,從云平臺安全、通信網絡安全、區域邊界安全、大數據平臺安全、數據安全、應用安全、安全管理等方面提供安全防護。
采用架構風險識別方法,通過對系統架構、部署架構、集成架構、安全架構等架構設計內容的分析,識別了系統存在的風險[9]。
通過對業務場景的梳理、架構風險的識別,制作場景架構風險矩陣表,并對場景和架構的反復打磨,持續迭代,完善場景信息和架構風險點,形成最終的場景架構風險矩陣表。以下以電費測算場景為例,制作的場景架構風險矩陣表如下表1:

表1 遠程實時費控場景架構風險矩陣表
通過關鍵業務場景和架構風險點的匹配,持續完善場景架構風險矩陣,明確哪些架構風險點需要開發原型進行驗證,最終明確架構驗證原型清單[10]。
很多項目做架構設計的時候往往不做架構驗證,導致架構設計一些內容變成空中樓閣,無法落地,甚至導致后續大規模開發推倒重來。大型業務系統上云,項目風險大,通過開發原型進行架構驗證是有效的風險應對措施。本文介紹了一種架構驗證原型選擇方法,并通過某電力公司營銷服務系統案例介紹了該方法的應用,該方法為后續大規模開發工作打下了堅實的基礎,避免了顛覆性推倒重建帶來的巨大損失。