DDD從戰(zhàn)略設(shè)計(jì)到代碼落地的三階段方法
時(shí)間:2022-03-03 22:26:01 | 來源:行業(yè)動(dòng)態(tài)
時(shí)間:2022-03-03 22:26:01 來源:行業(yè)動(dòng)態(tài)
ThoughtWorks總監(jiān)級咨詢師楊云指導(dǎo)過多個(gè)DDD實(shí)施項(xiàng)目的落地,在峰會的主題演講上楊云系統(tǒng)介紹了如何將DDD建模在大規(guī)模開發(fā)團(tuán)隊(duì)的情況下確實(shí)的落地到代碼層面。
為什么企業(yè)覺得DDD落地難?楊云表示:首先,因?yàn)镈DD進(jìn)入了更深層的應(yīng)用。DDD從戰(zhàn)略層面的應(yīng)用進(jìn)入到戰(zhàn)術(shù)落地層面,而不再僅僅停留在子域劃分、微服務(wù)劃分等。其次,參與建模的人,從業(yè)務(wù)專家和架構(gòu)師級別的技術(shù)專家,深入到產(chǎn)品經(jīng)理、軟件工程師等執(zhí)行具體事務(wù)的人員,面臨在百人以上開發(fā)團(tuán)隊(duì)大項(xiàng)目上保證代碼按照模型落地的難度。最后,DDD建模的投入和交付時(shí)間點(diǎn)的矛盾、DDD建模投入的即時(shí)性和DDD模型收益的長期性之間的矛盾。
在DDD落地方面,企業(yè)需要對戰(zhàn)術(shù)級別的建模提供更具體、更模式化的指引。對于大規(guī)模項(xiàng)目,設(shè)計(jì)更明確、與代碼實(shí)現(xiàn)直接相關(guān)的微觀模型。提供更好的工具降低DDD模型建設(shè)和維護(hù)成本,提高模型和代碼一致性。
基于此,楊云提出了DDD落地的三階段方法:事件風(fēng)暴階段聚焦戰(zhàn)略建模、子域劃分、微服務(wù)拆分;名詞動(dòng)詞階段,在子域或微服務(wù)內(nèi),細(xì)化實(shí)體和行為,識別重要角色和重要規(guī)則,建立子域內(nèi)核心概念的結(jié)構(gòu)化模型;類型流階段,微觀展開具體行為,將承載業(yè)務(wù)邏輯的純函數(shù)和依賴基礎(chǔ)設(shè)施的副作用函數(shù)剝離。
楊云表示,建模是迭代的,不是線性單向的。DDD建模需要考慮團(tuán)隊(duì)工作的細(xì)節(jié)層次,采取適當(dāng)?shù)姆椒ǎ河檬录L(fēng)暴來做戰(zhàn)略建模、用名詞動(dòng)詞法做子域內(nèi)的結(jié)構(gòu)化戰(zhàn)術(shù)建模、用類型流做行為內(nèi)部的微觀詳細(xì)設(shè)計(jì)。