一、戰略、戰術、戰役
首先 DDD 是一種軟件設計方法,Domain-driven design (DDD) is a major software design approach. 來自維基百科。軟件設計方法涵蓋了;范式、模型、框架、方法論,主要活動包括建模、測試、工程、開發、部署、維護。來自維基百科的軟件設計涵蓋信息介紹。dm328資訊網——每日最新資訊28at.com
在 DDD 領域驅動設計中,常提到戰略、戰術,和一少部分會講到戰役。這3個詞主要講的是不同的開發階段所需要完成的事項;dm328資訊網——每日最新資訊28at.com
- 戰略 - 建模;領域劃分、界限上下文、核心領域
- 戰術 - 架構;工程結構、領域對象、領域服務、領域事件
- 戰役 - 編碼;設計原則、設計模式
DDD 的戰略、戰術和戰役設計相輔相成,戰略提供系統的建模作為宏觀指導,戰術下面有N個戰役,兩者則關注具體的實現和編碼落地。dm328資訊網——每日最新資訊28at.com
在維基百科中有不少 DDD 非常好的資料,其中一個是關于事件風暴的,講解了執行戰略設計中風暴模型的步驟。dm328資訊網——每日最新資訊28at.com
dm328資訊網——每日最新資訊28at.com
有了這基礎認知,接下來我們通過《大營銷項目》從需求到設計,一步步了解系統的領域驅動設計。dm328資訊網——每日最新資訊28at.com
二、產品需求
1. 產品訴求
如圖,是一個復雜的營銷抽獎場景玩法需求,涵蓋了;活動配置、簽到&獎勵、活動賬戶、抽獎策略「責任鏈+規則樹」、庫存扣減、抽獎滿N次后階梯抽獎等。面對這樣的復雜系統,非常適合使用 DDD 落地。dm328資訊網——每日最新資訊28at.com
dm328資訊網——每日最新資訊28at.com
分析需求;dm328資訊網——每日最新資訊28at.com
- 整體概率相加,總和為1或者分值計算,概率范圍千分位
- 抽獎為免費抽獎次數 + 用戶消耗個人積分抽獎
- 抽獎活動可給用戶分配可抽獎次數,通過點擊簽到發放
- 活動延伸配置用戶庫存消耗管理,單獨提供表配置各類庫存 用戶可用總庫存、用戶可用日庫存
- 部分抽獎規則,需要抽獎n次后解鎖,才能有機會抽取
- 抽獎完成增加(運氣值/積分值/抽獎次數)記錄,讓用戶獲得獎品。
- 獎品對接,自身的積分、內部系統的獎品
- 隨機積分,發給你積分。
- 黑名單用戶抽獎,則給予固定的獎品。
2. 業務流程
依照于產品需求,在產品的 PRD 文檔中還會繪制出業務流程圖。產品的流程圖會比較粗一些,研發后期需要根據產品的 PRD 文檔做具體的設計。dm328資訊網——每日最新資訊28at.com
dm328資訊網——每日最新資訊28at.com
- 產品經理會詳細的介紹整個系統的功能流程和需要對接接口文檔。
- 以上就是以用戶旅程為維度,從點擊簽到獲得活動賬戶額度,再到一些列抽獎、抽獎策略、中獎結果和獎品發放的流程。
三、系統架構
如果首次承接的是一個新的系統,還需要對系統進行架構設計,是單體架構還是分布式架構,以及所要用到的技術棧。最好在提供好相關的落地案例和DDD腳手架。—— 沒有這些東西,就想說點理論,就讓團隊用DDD寫代碼,那就是天方夜譚!你都沒寫出DDD代碼,兄弟哪里去復制!dm328資訊網——每日最新資訊28at.com
資料:—— 詳細介紹了 DDD 落地的案例和通用的腳手架。dm328資訊網——每日最新資訊28at.com
- DDD 架構:https://bugstack.cn/md/road-map/ddd.html
- MVC2DDD:https://bugstack.cn/md/road-map/mvc2ddd.html
- DDD 腳手架:https://bugstack.cn/md/road-map/ddd-archetype-maven.html
1. 分布式架構
dm328資訊網——每日最新資訊28at.com
2. 分布式技術
dm328資訊網——每日最新資訊28at.com
四、戰略設計
不少伙伴,都講過不知道怎么開始 DDD,主要是拿到一個需求,不知道從哪下手,也不知道那些領域的模型是怎么弄出來的。好,這次小傅哥就給你整個完整的案例,告訴你如何開始。dm328資訊網——每日最新資訊28at.com
1. 用例圖
根據業務需求畫系統用例圖;dm328資訊網——每日最新資訊28at.com
dm328資訊網——每日最新資訊28at.com
- 用例圖(英語:use case diagram)是用戶與系統交互的最簡表示形式,展現了用戶和與他相關的用例之間的關系。通過用例圖,人們可以獲知系統不同種類的用戶和用例。用例圖也經常和其他圖表配合使用。
- 用例圖,也可以等同于是用戶故事(英語:User story)(軟件開發和項目管理中的常用術語),主旨是以日常語言或商務用語撰寫句子,是一段簡單的功能表述。以客戶或使用者的觀點撰寫下有價值的功能、引導、框架來與使用者進行互動,進而推動工作進程。可以被認為是一種規格文件,但更精確而言,它代表客戶的需求與方向。以該用戶故事來反應對象在組織內的其工作職責、范圍、需要進行的任務等。用戶故事在敏捷開發方法中用來定義系統需要提供的功能和實現需求管理。
- 盡管用例本身會涉及大量細節和各種可能性,用例圖卻能提綱挈領地讓人了解系統概況。它為“系統做什么”提供了簡化了的圖形表示,因此被譽為“搭建系統的藍圖”。
2. 事件風暴定義
在使用 DDD 的標準對系統建模前,一堆人要先了解 DDD 的操作手段,這樣才能讓產品、研發、測試、運營等了解業務的伙伴,都能在同一個語言下完成系統建模。dm328資訊網——每日最新資訊28at.com
dm328資訊網——每日最新資訊28at.com
- 藍色 - 決策命令,是用戶發起的行為動作,如;開始簽到、開始抽獎、查看額度等。
- 黃色 - 領域事件,過去時態描述。如;簽到完成、抽獎完成、獎品發放完成。它所闡述的都是這個領域要完成的終態。
- 粉色 - 外部系統,如你的系統需要調用外部的接口完成流程。
- 紅色 - 業務流程,用于串聯決策命令到領域事件,所實現的業務流程。一些簡單的場景則直接有決策命令到領域事件就可以了。
- 綠色 - 只讀模型,做一些讀取數據的動作,沒有寫庫的操作。
- 棕色 - 領域對象,每個決策命令的發起,都是含有一個對應的領域對象。
敲黑板 綜上,左下角的示意圖。就是一個用戶,通過一個策略命令,使用領域對象,通過業務流程,完成2個領域事件,調用1次外部接口個過程。我們在整個 DDD 建模過程中,就是在尋找這些節點。dm328資訊網——每日最新資訊28at.com
3. 尋找領域事件
接下來,大量的時間,都是在挖掘領域事件。這個過程就是一堆人頭腦風暴的過程,避免錯失流程節點。dm328資訊網——每日最新資訊28at.com
dm328資訊網——每日最新資訊28at.com
- 根據產品 PRD 文檔,一起開會梳理有哪些領域事件。其實大多數領域事件一個人都可以想到,只是有些部分小的場景和將來可能產生的事件不一定覆蓋全。所以要通過產品、測試、以及團隊的架構師,一起討論。
- 像是整個大營銷的抽獎會包括如圖所列舉的事件。在列舉這個階段,你用在乎格式。也可以是每個人準備好黃色便簽紙,想到一個就貼到黑板上一個,只是窮舉完成。—— 實際做DDD中,也是這樣用便簽紙貼黑板,所以用不同的顏色做區分。
4. 識別領域角色和對象
在確定了領域事件以后,接下來要做的就是通過決策命令串聯領域事件,并填充上所需要的領域對象。這塊的操作,新手可以分開處理,如先給領域事件添加決策命令、執行用戶和領域對象,最后在串聯流程。就像 事件風暴定義 中的示意一樣。dm328資訊網——每日最新資訊28at.com
dm328資訊網——每日最新資訊28at.com
- 首先,通過用戶的行為動作,也就是決策命令,串聯到對應的領域事件上。并對復雜的流程提供出紅色的業務流程。
- 之后,為決策命令添加領域對象,每一個領域在整個流程中都起到了至關重要的作用。
5. 劃分領域邊界
有了識別出來的領域角色的流程,就可以非常容易的劃分出領域邊界了。先在事件風暴圖上圈出領域邊界,之后在單獨提供領域劃分。dm328資訊網——每日最新資訊28at.com
5.1 圈出領域
dm328資訊網——每日最新資訊28at.com
5.2 領域邊界
dm328資訊網——每日最新資訊28at.com
- 到這步咱們就可以獲得整個項目中 DDD 的領域邊界劃分了。之后再往下就是具體的每個領域對象的詳細設計和流程設計。
6. 研發詳細設計
6.1 實體對象
dm328資訊網——每日最新資訊28at.com
- 你需要對每一個領域對象進行字段的詳細設計。并劃分出它們的上下文關系。一般在公司中,這部分設計完成,其他人也能對照你的設計進行代碼開發。
6.2 流程設計
dm328資訊網——每日最新資訊28at.com
- 流程設計,就是更詳細的設計了。每一步要調用到哪個系統,哪個接口,要執行什么動作就全部都有了。
五、工程實現
DDD 的戰略設計做完,劃分出領域邊界以后。接下來就是要執行戰術和戰役了。也就是在工程中做編碼實現。但一定要懂得設計原則和設計模式,否則寫不出好的代碼的。dm328資訊網——每日最新資訊28at.com
dm328資訊網——每日最新資訊28at.com
- 工程實現,就是在確定的框架結構中編碼。可以是洋蔥架構、整潔架構、菱形架構等等。這部分內容的可以通過實戰項目來鍛煉,獲得編碼技巧。
本文鏈接:http://www.tebozhan.com/showinfo-26-87478-0.html大營銷抽獎系統,DDD開發要如何建模?
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 美國司法部重拳出擊,懸賞千萬美元緝拿 LockBit 勒索軟件頭目
下一篇: 一文徹底搞明白組合模式