隨著全球疫情的逐步消退,民航業(yè)呈現(xiàn)出強(qiáng)勁的復(fù)蘇態(tài)勢(shì),國(guó)內(nèi)市場(chǎng)同樣迎來了顯著的發(fā)展機(jī)遇和新興挑戰(zhàn)。民航電子商務(wù)系統(tǒng)作為旅客出行的核心支撐平臺(tái),在民航業(yè)發(fā)展中發(fā)揮著至關(guān)重要的作用。然而,民航電商系統(tǒng)也面臨較多技術(shù)和業(yè)務(wù)難題。一方面,系統(tǒng)業(yè)務(wù)邏輯復(fù)雜,涉及航班查詢、票價(jià)計(jì)算、座位預(yù)訂、支付結(jié)算、出票與退票,以及退款等多個(gè)關(guān)鍵流程。另一方面,系統(tǒng)架構(gòu)龐大且復(fù)雜,傳統(tǒng)單體式架構(gòu)形成的“泥球效應(yīng)”導(dǎo)致系統(tǒng)內(nèi)聚性低,任何小規(guī)模需求的調(diào)整都可能引發(fā)大范圍的測(cè)試與部署工作。此外,市場(chǎng)環(huán)境的快速變化和用戶需求的多元化趨勢(shì),進(jìn)一步加大了系統(tǒng)更新和優(yōu)化的壓力。為了應(yīng)對(duì)這些挑戰(zhàn),亟須引入先進(jìn)、合理且高效的技術(shù)解決方案,以指導(dǎo)民航電商系統(tǒng)的設(shè)計(jì)與開發(fā)。鑒于此,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)作為一種創(chuàng)新的架構(gòu)方法論,為解決當(dāng)前復(fù)雜業(yè)務(wù)場(chǎng)景和系統(tǒng)性能問題提供了新的路徑,其引入可謂恰逢其時(shí)。
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(Domain-Driven Design, DDD)是一種專注業(yè)務(wù)復(fù)雜性的系統(tǒng)開發(fā)方法,強(qiáng)調(diào)以領(lǐng)域模型為核心,促進(jìn)開發(fā)團(tuán)隊(duì)與領(lǐng)域?qū)<业木o密合作,將業(yè)務(wù)邏輯轉(zhuǎn)化為可執(zhí)行軟件架構(gòu)。DDD核心理念及其釋義如下:
統(tǒng)一語言:通過構(gòu)建統(tǒng)一的領(lǐng)域術(shù)語和行為描述體系,團(tuán)隊(duì)能更準(zhǔn)確地理解和實(shí)現(xiàn)復(fù)雜業(yè)務(wù)邏輯,確保團(tuán)隊(duì)成員與領(lǐng)域?qū)<沂褂靡恢滦g(shù)語溝通,避免理解偏差。
事件風(fēng)暴:一種協(xié)作式探索業(yè)務(wù)領(lǐng)域的方法。通過識(shí)別關(guān)鍵事件、命令、規(guī)則等,幫助團(tuán)隊(duì)深入理解業(yè)務(wù)流程和領(lǐng)域架構(gòu),為構(gòu)建領(lǐng)域模型提供信息支持。
限界上下文:定義領(lǐng)域模型的適用范圍與邊界,包含一組相關(guān)領(lǐng)域概念、業(yè)務(wù)規(guī)則、實(shí)體及其交互關(guān)系,確保這些元素在上下文內(nèi)部具有明確定義與關(guān)聯(lián)。
領(lǐng)域模型:是對(duì)特定業(yè)務(wù)領(lǐng)域知識(shí)的抽象表達(dá),明確業(yè)務(wù)概念、規(guī)則、關(guān)系和行為,為系統(tǒng)開發(fā)奠定基礎(chǔ)。它幫助團(tuán)隊(duì)深刻理解業(yè)務(wù)領(lǐng)域,指導(dǎo)軟件設(shè)計(jì)與實(shí)現(xiàn),確保系統(tǒng)準(zhǔn)確映射和滿足業(yè)務(wù)需求。
(一)業(yè)務(wù)分析與統(tǒng)一語言
業(yè)務(wù)分析與統(tǒng)一語言是通過事件風(fēng)暴的方式,團(tuán)隊(duì)對(duì)現(xiàn)有系統(tǒng)進(jìn)行深入的業(yè)務(wù)分析和統(tǒng)一認(rèn)知。實(shí)施過程中,詳細(xì)梳理航班查詢、價(jià)格計(jì)算、座位預(yù)訂、支付結(jié)算、出票退票及退貨退款等業(yè)務(wù)流程,識(shí)別關(guān)鍵領(lǐng)域和術(shù)語,從而建立起對(duì)業(yè)務(wù)的全面理解和視野。同時(shí),邀請(qǐng)領(lǐng)域?qū)<覅⑴c,共同確定并使用統(tǒng)一的業(yè)務(wù)術(shù)語和語言體系,有效避免溝通誤解,為后續(xù)的戰(zhàn)略與戰(zhàn)術(shù)設(shè)計(jì)奠定堅(jiān)實(shí)基礎(chǔ)。
(二)戰(zhàn)略設(shè)計(jì)及戰(zhàn)術(shù)設(shè)計(jì)
戰(zhàn)略設(shè)計(jì)階段,團(tuán)隊(duì)運(yùn)用事件風(fēng)暴等方法深入探索業(yè)務(wù)全景和領(lǐng)域知識(shí)。依據(jù)查詢航班、購(gòu)買產(chǎn)品、提交訂單、支付出票、退貨退款等業(yè)務(wù)特性,劃分出核心域(商品子域、銷售子域)及支撐域(搜索子域、支付子域、組織子域、庫存子域、安全子域)。同時(shí),明確了商品、搜索、認(rèn)證、角色權(quán)限、購(gòu)物車、訂單、支付、票證、退貨、航司、庫存等界上下文。
戰(zhàn)術(shù)設(shè)計(jì)階段,則進(jìn)一步細(xì)化領(lǐng)域模型、設(shè)計(jì)領(lǐng)域服務(wù),并識(shí)別聚合根實(shí)體。據(jù)此,民航電子商務(wù)系統(tǒng)細(xì)化為商品、搜索、購(gòu)物車、訂單、支付、票證、退貨等領(lǐng)域模型,設(shè)計(jì)出提交訂單、取消產(chǎn)品、支付票款、出貨出票、退貨退款等服務(wù),并識(shí)別出商品、購(gòu)物車、訂單、票證、退貨單等聚合根及眾多實(shí)體和值對(duì)象。
通過戰(zhàn)略及戰(zhàn)術(shù)設(shè)計(jì),明確了領(lǐng)域邊界,建立了穩(wěn)定的領(lǐng)域模型,為后續(xù)模塊化拆分等提供了有力支持。
(三) 模塊化拆分
在模塊化拆分過程中,依據(jù)民航業(yè)務(wù)特性,對(duì)舊單體應(yīng)用按業(yè)務(wù)順序進(jìn)行垂直拆分,并與戰(zhàn)略設(shè)計(jì)階段的上下文一一映射,形成授權(quán)認(rèn)證、商品搜索、訂單管理、票證服務(wù)、支付服務(wù)、退貨服務(wù)等6個(gè)模塊。各模塊圍繞具體業(yè)務(wù)領(lǐng)域設(shè)計(jì),確保高度內(nèi)聚。同時(shí),采用微服務(wù)架構(gòu),利用其單一職責(zé)、無狀態(tài)、異步通信及獨(dú)立部署等特性,提升系統(tǒng)靈活性和可維護(hù)性。
(四)分層架構(gòu)
采用整潔架構(gòu)的設(shè)計(jì)理念,將系統(tǒng)從內(nèi)到外依次劃分為領(lǐng)域模型層、領(lǐng)域服務(wù)層、應(yīng)用服務(wù)層、基礎(chǔ)設(shè)施層以及用戶界面層。領(lǐng)域模型層位于架構(gòu)的核心,負(fù)責(zé)定義業(yè)務(wù)領(lǐng)域的實(shí)體、值對(duì)象、聚合及領(lǐng)域邏輯,確保業(yè)務(wù)邏輯的純粹性和內(nèi)聚性。領(lǐng)域服務(wù)層則封裝了跨多個(gè)聚合的復(fù)雜業(yè)務(wù)邏輯,保持領(lǐng)域?qū)拥母邇?nèi)聚低耦合。應(yīng)用服務(wù)層作為領(lǐng)域?qū)优c用戶界面層和基礎(chǔ)設(shè)施層之間的橋梁,處理應(yīng)用級(jí)別的邏輯并協(xié)調(diào)領(lǐng)域服務(wù)的調(diào)用。基礎(chǔ)設(shè)施層為上層提供技術(shù)支持,包括數(shù)據(jù)庫訪問、消息隊(duì)列、民航主機(jī)等外部系統(tǒng)集成。用戶界面層與用戶交互,采用RESTFUL的方式向所有的前端用戶提供可靠的API。這種技術(shù)與業(yè)務(wù)分離的分層架構(gòu)設(shè)計(jì),將穩(wěn)定核心的業(yè)務(wù)保護(hù)在最內(nèi)層,將可變的部分隔離在最外層,不管未來是面對(duì)技術(shù)上的頻繁革新還是外部系統(tǒng)的頻繁變更,都能確保核心的領(lǐng)域和業(yè)務(wù)穩(wěn)定。這種設(shè)計(jì)確保了各層之間的獨(dú)立性和靈活性,為系統(tǒng)的后續(xù)擴(kuò)展和重構(gòu)奠定了堅(jiān)實(shí)基礎(chǔ)。
(五) 模塊化獨(dú)立部署
采用模塊化獨(dú)立部署的策略使得每個(gè)微服務(wù)都可以作為一個(gè)獨(dú)立的單元進(jìn)行部署和更新,無需影響其他模塊的正常運(yùn)行。例如,航空公司提出對(duì)于航班查詢的結(jié)果和價(jià)格排序的優(yōu)化需求時(shí),按照模塊化拆分只需要修改[商品搜索]模塊的相關(guān)代碼,開發(fā)難度顯著降低,測(cè)試驗(yàn)證時(shí)范圍更小,效率更高。同時(shí)依賴獨(dú)立部署策略,版本升級(jí)可以快速上線,同時(shí)不影響其他模塊功能,有效提高系統(tǒng)的靈活性和可擴(kuò)展性的同時(shí),降低系統(tǒng)維護(hù)和升級(jí)的難度,在應(yīng)對(duì)頻繁的業(yè)務(wù)變更時(shí)表現(xiàn)更為優(yōu)秀。
民航電子商務(wù)系統(tǒng)通過引入DDD模式,產(chǎn)品研發(fā)周期與交付質(zhì)量等方面均實(shí)現(xiàn)了顯著提升。以國(guó)內(nèi)某知名航空公司客票銷售系統(tǒng)的改造為例,具體成效對(duì)比如下:

綜合上述指標(biāo)對(duì)比,DDD的引入對(duì)系統(tǒng)提升效果顯著,不僅大幅縮短了研發(fā)周期,還顯著提高了交付質(zhì)量和運(yùn)行效率,整體收益提升顯著。這一變革充分證明了DDD在軟件開發(fā)領(lǐng)域中的重要價(jià)值和深遠(yuǎn)影響。