陳云鵬,王建東
(三峽高科信息技術有限責任公司,北京 100000)
工程項目管理作為現代管理科學的一個重要分支學科,在20 世紀80 年代引入我國,至今已有30 多年。工程項目管理是一項復雜的系統工程,從工程項目管理的生命周期來看,工程項目管理分為項目前期管理和項目實施管理,涉及前期管理、相關方管理、進度管理、質量管理、成本管理、文檔管理等諸多方面的工作。
隨著互聯網技術的興起,基于互聯網技術的工程項目管理信息系統已得到廣泛應用。工程項目生命周期各階段是相互獨立的,不同階段的組織管理形式和所采用的信息技術平臺可能存在較大的差異。如何實現工程不同階段、不同參與方的數據資源共享是工程管理單位所要研究的重要問題。
文章對微服務技術進行研究,在基于軟件即服務(Software as a Service,SaaS)模式的工程項目管理信息系統中進行應用實踐,打破工程項目管理生命周期各階段的數據壁壘,解決信息資源共享和延續性問題。
20 世紀70 年代,國外就已經開始工程項目管理信息系統的研發工作。經過幾十年的發展,工程項目管理信息系統已經從只注重對工程項目管理某一過程的管理發展為支持跨地域多項目、多項目參與方共同使用的協同工作平臺管理。因此,基于互聯網的工程項目管理信息系統因其所具備的優勢而得到了廣泛的推廣和應用。
我國工程項目管理信息系統經歷了從國外引進到自主開發、從局部應用到全面推廣的過程。近年來,雖然越來越多的企業采用工程項目管理系統來進行項目管控,但管控模式主要是按工程項目各階段情況獨立進行,導致項目各階段數據無法實現共享。
SaaS 模式是一種新型的云計算模式,在提供基礎信息系統服務的同時,為用戶提供系統開發、部署與運維服務,用戶按照其訂閱的軟件服務內容與時長付費。
SaaS 模式所具有的突出優勢,使其在各行各業的數字化轉型過程中得到了廣泛的應用,將SaaS 模式與工程項目管理相結合的行業也在近些年得到了蓬勃發展。在SaaS 模式下,軟件服務供應商提供功能完備的工程項目管理系統,客戶可以直接租用該項服務來解決工程項目管理信息化問題?;?SaaS 模式的工程項目管理通過提供高質量服務持續給客戶企業帶來長久效益。
目前,主流的企業級應用系統、互聯網應用系統一般都是通過Web 提供業務服務。Web 軟件系統架構主要分為兩大類:整個系統部署到同一物理主機、同一個進程的單體架構(Monolithic Architecture,MA);整個系統分散到不同物理主機、不同進程的分布式架構(Distributed Architecture,DA)。目前,主流的分布式服務架構是微服務架構(Micro Service Architecture,MSA)。
微服務架構的思想本質上來源于對業務功能和模塊的水平、垂直切割與拆分。基于微服務架構的設計思想,原有的單體架構信息系統將會被拆分為多個可以獨立設計開發、獨立部署運行的小應用,這些小應用即為微服務。每個微服務遵循單一職責原則,具備獨立的功能,通過微服務集群間的接口通信完成數據交換與集成。不同的微服務可以使用不同的技術棧,從而進行功能和架構層面的獨立演進。
微服務架構適用于有高性能、高并發、高可用等非功能性需求的大型信息系統。微服務架構可以通過部署微服務集群,利用微服務集群彈性伸縮策略,有效地解決高性能、高并發、高可用等問題。微服務架構為軟件業務邏輯復雜、軟件更新迭代風險高、軟件長期維護困難等原有單體架構信息系統無法解決的問題提供了有效的解決方案。
目前,使用微服務架構構建Web 應用程序的趨勢是基于領域驅動設計理念。領域驅動設計是一套完整的軟件架構設計方法論,利用這套方法論來設計領域模型、定義業務邊界、指導軟件架構設計,可以保證業務模型和代碼模型的一致性。微服務架構設計過程中可以通過領域驅動設計中的事件風暴,梳理業務流程中的操作步驟、事件和依賴關系,從而確定領域實體;可以通過梳理實體間的業務關系,定義業務邏輯邊界,形成聚合,確定聚合根;還可以通過業務分析,將一個或者多個聚合放到一個限界上下文中,也就是微服務的邊界。每個微服務對應一個限界上下文,從而完成領域模型到微服務架構設計的轉化。
在微服務的劃分中,通常使用康威定律等方式,保證微服務是有界的,這樣微服務就可以獨立擴展??低杀砻鳎涸O計系統的組織所產生的設計等價于組織內、組織間的溝通結構,即組織溝通方式會通過系統設計表達出來。同樣,在工程項目管理業務流程之中,工程項目的組織結構決定了其管理業務流程。利用康威定律,可以在業務建模的過程中,梳理業務邊界和微服務邊界,并將這種業務邊界和組織結構體現在信息系統的架構之中。
工程項目管理全過程所包含的業務領域眾多,文章以計劃進度管理和質量管理為例對業務建模進行介紹。
計劃進度管理業務過程主要包括編制計劃工作日歷、編制計劃體系、編制計劃任務、下達任務、審核計劃任務、反饋進度、工作分解結構(Work Breakdown Structure,WBS)與項目分解結構(Project Breakdown Structure,PBS)關聯等。
日歷編制人員需要編制項目各級計劃的工作日歷,以便于計算計劃任務的工期。計劃管理負責人需要編制項目的計劃體系,以便于形成整個項目由粗到細的計劃包劃分結構,實現計劃體系與責任體系的關聯。計劃編制人員需要編制所管理的計劃任務,以便于對計劃任務進行分解和完善,同時需要下達計劃任務至下級單位,以便于對進度管理的需求進行逐層控制與下達。計劃審核人員需要對各級計劃任務進行審核,以便于高效完成進度計劃的審核工作。計劃反饋人員需要反饋計劃的工作進展情況,以便于及時做好進度管理工作。項目經理需要將WBS 和PBS 建立關聯關系,以便于進行以PBS 為維度的分析、統計。
質量管理業務過程主要包括定義工程單元、定義工序質量標準、定義質量驗評表模板等。
定義工程單元是指按照工程質量管理的規范和標準形成質量控制的工程單元,工程單元是整個質量管理的關鍵環節。定義工序質量標準是指按照工程施工相關質量規范,每種單元工程類型對應不同的作業工序,每個作業工序具有規定的質量檢測標準,包括檢測表、檢測指標。
施工質量業務過程主要是填報和流轉檢驗批評定表、單元工程驗收表等表格。質量驗評檢驗批表的數量、內容都是動態的,且生成的表樣需要滿足標準格式要求,因此需要設計質量驗評檢驗批表樣設計器,方便實施人員和用戶可以快速增加、修改表樣。實施人員通過分析相關質量驗評表樣,將幾百張表樣按照填報方式、填報內容進行分類歸納,將質量驗評表樣拆分為表頭、驗評指標明細、表尾3 部分進行控制。
根據業務建模的結論,利用微服務劃分方法,可以將工程項目管理業務領域服務化,搭建工程項目管理信息系統的業務中臺。采用標準化、輕量化接口進行服務間數據通信,降低業務服務之間的耦合度,讓每個服務都可復用、可獨立演進,滿足工程項目管理業務可持續發展的需要。
構建的業務服務包括:前期管理、相關方管理、成本管理、合同管理、工程財務管理、竣工決算管理、物資/設備管理、計劃進度管理、質量管理、安全管理、設計管理、文檔管理等,覆蓋了工程項目管理的主要業務范圍,形成了從前期管理到項目實施管理,再到項目交付的完整數字化鏈條。
根據對工程項目管理的業務建模與服務劃分,以及對SaaS 模式技術架構的研究,基于SaaS 模式的工程項目管理系統的架構設計如下。
架構主要分為應用層、服務層、基礎設施層。應用層向用戶提供系統功能,提供人機交互界面;服務層向應用層提供業務服務,作為系統功能的支撐;基礎設施層為系統提供計算資源、存儲資源和網絡資源。
在系統部署方面,系統支持公有云、企業私有云及混合云部署。通過部署微服務治理組件,搭建服務集群,向多租戶提供基于SaaS 模式的工程項目管理服務。
系統在應用層打造建設管理應用、參建單位應用、系統管理應用。根據用戶群定制化應用客戶端能夠極大提升不同用戶群的用戶體驗。隨著應用的拆分,系統的復雜業務邏輯被分散到不同的應用中,系統整體的復雜性降低,可維護性提升,通過分而治之的方案解決用戶體驗與代碼業務邏輯復雜性問題。
在應用架構設計中,系統采用了前后端分離架構,同時使用了服務于前端的后端(Backend For Frontend,BFF)模式,為每個前端提供一個BFF。BFF 隔離了前端UI 展示對后端服務應用程序編程接口(Application Programming Interface,API)的定制化需求,起到了業務服務聚合的作用,解決了業務場景問題,也可以更好地支持后端服務的演進。
系統使用Spring Cloud 搭建服務注冊發現,網關、負載均衡、配置中心、服務監控、容錯保護等微服務治理組件,為系統的基礎服務、業務服務提供完整的微服務治理能力,讓基礎服務、業務服務聚焦于服務能力本身,使整個架構具備支持大規模微服務集群的能力。
工程項目管理系統是面向企業客戶的應用,租戶數量可控,且工程項目管理數據具有較高的保密性要求,對數據隔離性、安全性要求較高。基于上述原因,兼顧考慮研發、實施、運維成本及技術難度等綜合因素,本系統選擇了獨立數據庫的多租戶數據存儲方案,即每個租戶完全獨占一個數據庫。此方案有助于簡化數據模型,便于數據遷移,數據隔離級別最高、安全性最高,犧牲了一定的數據庫來維護便利性。
目前,系統已經上線運行,部署方式覆蓋了公有云和企業私有云。系統已在民用建筑建設、機場建設、數據中心建設等工程項目管理場景中得到應用,服務于5 家企業客戶,管理工程項目15 個,管理合同超過350 個,管理合同金額超過32 億元,應用效果良好。
文章研究了微服務相關理論方法和技術應用在基于SaaS 模式的工程項目管理信息系統,將傳統的單體架構應用升級為高內聚、松耦合的微服務架構。這種架構設計的方法能夠較好地適用于工程項目管理信息系統這類業務覆蓋面廣、業務邏輯復雜的大型信息系統,提升了系統的穩定性、可維護性,能夠支持業務的可持續發展,應用取得了良好的效果,可以為類似信息系統的設計開發提供良好借鑒。