摘要:事件風暴事件風暴就是把所有的關鍵參與者都召集到一個很寬敞的屋子里來開會,并且使用便利貼來描述系統中發生的事情。一張桔黃色的便利貼代表一個領域事件,在上面用一句過去時的話描述曾經發生過什么事情,格式一般是已。
一周前,參加了公司的一個架構設計與建模的工作坊——『事件風暴』。從某種意義上來說,這是一個關于架構設計與軟件建模的工作坊。于是便閃現了一個靈感,便有了 Stepping.js。
當我們結束事件風暴(Event Stroming)的時候,我們需要拍照,又或者是其他手段來記錄下相關的內容。因此,整理這些文檔又不是一個的容易的事。而事實上,我們只需要一個 DSL(領域特定語言),我們就可以直接將這個文檔轉換為圖片,還有文檔等等的內容。
因此,我寫了一個名為 Stepping 的工具,來簡化這方面的工作。
Stepping步驟一:安裝 Stepping
為了使用 Stepping,我們需要先安裝 Stepping,可以能過 yarn 或者 npm 來安裝:yarn global add stepping。
步驟二:設計領域模型
除此,我們還需要設計好系統相關的領域模型,如:
再以 DSL 的形式來描述這個模型:
domain: 庫存子域 aggregate: 庫存 event: 庫存已增加 event: 庫存已恢復 event: 庫存已扣減 event: 庫存已鎖定 command: 編輯庫存 aggregate: 商品 event: 商品已創建 command: 添加商品
保存這個文件為phodal.ffffd,然后執行stepping -i phodal.ffffd。就可以得到一個 stepping.svg 的文件,這個 SVG 文件便能得到上面的領域模型。
同時,如果你愿意的話,你還可以在這個 DDD 文件里寫上相關的聚合的 Model:
aggregate-detail: 商品 model: product field: id: int name: string number: string manufacturers: string
再執行下 stepping -i phodal.ffffd,就可以得到一份前后端分離的示例 API 接口,即:
{ "count": 1, "next": null, "previous": null, "results": [ { "id": 0, "name": "name", "number": 0, "manufacturers": "manufacturers" } ] }
結合一下 moco 或者 pretender,就可以直接變成一個 Mock 服務器。
在未來,我們還將結合這個 Model 來與 Django 做集成——只需要寫好設計稿的 DSL,就可以生成相關的文檔。
末了,讓我們了解一下什么是領域風暴。
事件風暴事件風暴就是把所有的關鍵參與者都召集到一個很寬敞的屋子里來開會,并且使用便利貼來描述系統中發生的事情。
一張桔黃色的便利貼代表一個領域事件,在上面用一句過去時的話描述曾經發生過什么事情,格式一般是:xx 已 xx。于是,我們需要整理系統相關的所有事件,也因此需要業務與開發人員共同進行風暴。如針對一個訂單,會有這么一些相關的事件:
訂單已創建
訂單已支付
訂單已投訴
訂單已撤銷
便會產生相關的便利貼:
再按事件發生的時間軸,來對這些事件發生的順序進行排序:
緊接著,我們需要結合軟件的用戶的相關操作,寫著與這些操作相關的命令。然后,結合這些命令與事件。如訂單相關的命令就有:
提交訂單,可以觸發事件『訂單已創建』
提交投訴,可以觸發事件『訂單已投訴』
等等
完成這個之后, 我們就有了系統相關的所有事件與命令:
換句話來說,這些相關的事件與命令就是我們編寫細節代碼時,需要完成的功能。最后,完成相關的聚合,我們就可以得到一份完整的模型:
依據這個模型,我們可以輕松地做出微服務設計。
歡迎試用,并在 GitHub 上提出建議:https://github.com/phodal/ste...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82298.html
摘要:前后端分離的開發方式在最近幾年突然火起來,松哥認為有兩方面的原因前端的發展。不變其實除了前后端交互方式發生變化之外,其他的地方都是不變的。 事情的起因是這樣的,有個星球的小伙伴向邀請松哥在知乎上回答一個問題,原題是: 前后端分離的時代,Java后臺程序員的技術建議? 松哥認真看了下這個問題,感覺對于初次接觸前后端分離的小伙伴來說,可能都會存在這樣的疑問,于是決定通過這篇文章和大家聊一...
摘要:如何去解決這些問題前后端分離大部分的互聯網公司都分成了前端團隊和后端團隊。方案一采用架構業界很多公司會采用,單頁應用的架構,這種架構是天然的前后端分離的。方案二淘寶的大前端方案中途島上圖是淘寶基于的前后端分離分層,以及的職責范圍。 我們遇到了什么問題? 1.前端無法調試后端未完成的 API:如果后端同學還沒有完成 API 開發,那么前端同學就不能對這個 API 進行開發。之前我們都是在...
閱讀 1171·2021-11-24 09:39
閱讀 2675·2021-09-28 09:35
閱讀 1070·2019-08-30 15:55
閱讀 1361·2019-08-30 15:44
閱讀 879·2019-08-29 17:00
閱讀 1969·2019-08-29 12:19
閱讀 3310·2019-08-28 18:28
閱讀 690·2019-08-28 18:10