中臺架構下的DDD和落地實踐

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Why DDD matters?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"GoF Design Pattern、EIP、Refactoring、P of EAA等,它們的理念是通過技術手段解決技術問題,並沒有根本上解決業務的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DDD是真正解決業務問題的架構思想:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"業務和技術解耦控制軟件的複雜性避免業務邏輯的複雜度與技術實現的複雜度混淆在一起,因爲他們變化的維度不同把業務邏輯集中到domain一層,使得產品和研發能有一個共同的代碼交流場所"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"統一併一致的領域建模和代碼實現分析模型和設計模型不再割裂以領域爲核心的分層架構,技術手段通過倒置依賴進行隔離"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"改變過去"},{"type":"codeinline","content":[{"type":"text","text":"Service + 數據庫"}]},{"type":"text","text":"技術驅動開發模式迴歸業務本質,代碼有更強的業務表達能力沉澱出反映領域知識並聚集於關鍵概念的模型解放研發生產力,不再束手束腳,可以充分發揮面向對象的優勢寫業務代碼"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"統一語言,代碼的業務表達能力高"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Domain Driven Design (DDD) is about mapping business domain concepts into software artifacts."}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"link","attrs":{"href":"https://github.com/funkygao/cp-ddd-framework/wiki/DDD#%E4%B8%BA%E4%BB%80%E4%B9%88ddd%E9%9A%BE%E8%90%BD%E5%9C%B0","title":null}},{"type":"text","text":"爲什麼DDD難落地?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於DDD不是一套框架,而是一種架構思想,所以在代碼層面缺乏了足夠的約束,導致DDD在實際應用中上手門檻很高,理解上容易產生偏差。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有人戲稱DDD是\"陽春白雪\"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"框架易學,思想難學"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DDD的最佳實踐太少,沒有標準在實踐落地過程中,會發現很多空白需要自己摸索解決,但又不知道是否合理"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DDD中出現了很多的概念和術語"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DDD需要我們在領域建模花費很多的時間和精力"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"link","attrs":{"href":"https://github.com/funkygao/cp-ddd-framework/wiki/DDD#%E4%B8%AD%E5%8F%B0%E7%89%B9%E8%89%B2%E7%9A%84ddd","title":null}},{"type":"text","text":"中臺特色的DDD"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在中臺場景下,僅靠DDD是不夠的,需要針對中臺的特色進行架構補充。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除了DDD解決的業務模型和分層架構外,還需要解決:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"擴展機制業務邏輯擴展業務模型擴展業務流程擴展"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"業務的多態"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"前中臺業務解耦,隔離機制"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"能力的上浮和下沉機制"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"link","attrs":{"href":"https://github.com/funkygao/cp-ddd-framework/wiki/DDD#why-framework-matters","title":null}},{"type":"text","text":"Why framework matters?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"If every developer is allowed to implement their own architecture, you can easily end up with lots of optimised but fragmented ideas in the code base. Over time this becomes unmaintainable. It is better to have guidance and direction on how the software should be built into a single defined vision."}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"There should be one-- and preferably only one --obvious way to do it."}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"link","attrs":{"href":"https://github.com/funkygao/cp-ddd-framework/wiki/DDD#%E4%B8%9A%E5%8A%A1%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6%E7%8E%B0%E7%8A%B6","title":null}},{"type":"text","text":"業務開發框架現狀"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"市場上有很多技術框架,也有一些"},{"type":"codeinline","content":[{"type":"text","text":"low code"}]},{"type":"text","text":"甚至"},{"type":"codeinline","content":[{"type":"text","text":"codeless"}]},{"type":"text","text":"框架來滿足簡單業務場景,但開源的解決複雜業務場景問題的業務開發框架,目前是空白。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"中臺架構,更多停留在思想和方法論上,具體在代碼層面如何落地,目前是空白。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DDDplus,一套輕量級業務中臺開發框架,填補了這些空白。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"link","attrs":{"href":"https://github.com/funkygao/cp-ddd-framework/wiki/DDD#dddplus","title":null}},{"type":"text","text":"DDDplus"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以DDD架構思想爲本,面向複雜業務場景架構設計通過代碼框架提供足夠約束,讓DDD不再僅停留在思想層面降低DDD上手門檻,爲研發減負,防止落地偏差降低複雜度,持續保障業務資產的可沉澱可傳承提供"},{"type":"link","attrs":{"href":"https://github.com/dddplus/dddplus-archetype","title":null},"content":[{"type":"text","text":"dddplus-archetype"}]},{"type":"text","text":",自動生成包含最佳實踐的工程腳手架"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"14個核心業務抽象(常用的9個),勾勒出業務中臺骨架中臺架構的頂層設計以不變應萬變研發填空式開發"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"全方位解決業務的不確定性業務邏輯、流程、邏輯模型、數據模型的擴展、多態體系框架本身支持再次擴展擴展業務包支持不重啓熱更新"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支撐中臺戰略的複雜生態協作前臺、中臺解耦業務隔離InnerSource協同機制"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"完整的解決方案業務能力演化,業務測試,最佳實踐,架構持續防腐,重構的導流驗證,絞殺者落地方案等提供"},{"type":"link","attrs":{"href":"https://github.com/dddplus/dddplus-demo","title":null},"content":[{"type":"text","text":"一套完整的Demo工程"}]},{"type":"text","text":",手把手真實場景教學"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章