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