DDD:架构思想的旧瓶新酒?阿里等大厂却对它趋之若鹜!
4月,InfoQ 發布了軟件架構與設計的趨勢報告。在報告中可以看出,微服務、領域驅動設計等已經非常流行,并成為目前軟件開發行業的主流趨勢。
大家都知道,微服務劃分的一個重要理論基礎就是領域驅動設計。但由于 DDD 門檻高、概念多,體系龐大又抽象,再加上缺少實踐經驗和案例指導,很多開發人員對 DDD 存在不少疑惑:
理論文章多,涉及太多知識點,無從下手!
這么牛逼的技術,不能落地有什么用?
為何需要領域專家參與到項目開發中來?
DDD 與微服務的關系?
DDD 落地案例市面上少見,真的靠譜嗎?
領導都不懂 DDD,怎么推!
……
許多朋友對其價值收益感受不明顯,主要這兩點原因:一是落地困難,對開發人員的能力要求比較高,二是不清楚到底用在哪里,為什么要用、怎么用。
其實,DDD是一套完整而系統的設計方法,并非一種架構。它能帶給你從戰略設計到戰術設計的標準設計過程,使得你的設計思路能夠更加清晰,設計過程更加規范,有助于提高技術人的架構設計能力。無論是在新項目中設計微服務,還是將系統從單體架構演進到微服務,DDD 都大有助力。
為什么要使用領域驅動設計?
從Eric Evans的《領域驅動設計:軟件核心復雜性應對之道》一書的書名就可以看出這一方法論是為了解決軟件核心復雜性的。也就是說軟件業務越來越復雜了,領域驅動設計可以讓事情變得簡單。而實際情況是:領域驅動設計的門檻很高,沒有很深厚的面向對象編碼能力幾乎不可能實踐成功。
這一說法是否自相矛盾呢?Martin Fowler在PoEAA一書中給了一個有力的解釋:
我們把三層架構等除了領域驅動之外的架構方式都可以歸納為以數據為中心的架構方式,在圖中是黑色的粗實線;領域驅動設計在圖中是綠色的粗實線。
當軟件在開發初期,以數據驅動的架構方式非常容易上手,但是隨著業務的增長和項目的推進,軟件開發和維護難度急劇升高。
領域驅動設計則在項目初期就處在一個比較難以上手的位置,但是隨著業務的增長和項目的推進,軟件開發和維護難度平滑上升。
這幅圖形象的解釋了領域驅動設計和傳統的軟件架構模式兩者在軟件開發過程中解決復雜性之間的差異。
領域驅動設計的核心是什么?
戰略設計:
說到戰略設計,我們要站在一個比較高的視角來看待這個問題,戰略設計要解決的就是某個領域的問題,所以戰略設計時,我們要構建好領域模型,保證我們的大方向是不會錯的
戰略設計主要從業務視角出發,建立業務領域模型,劃分領域邊界,建立通用語言的限界上下文,限界上下文可以作為微服務設計的參考邊界。
以數據為中心的架構模式
戰術設計 :
戰術設計則是要求我們從業務模型轉向微服務落地 我們會將領域模型中的領域對象與代碼模型中的代碼對象建立映射關系,將業務架構和系統架構進行綁定。當我們去響應業務變化調整業務架構和領域模型時,系統架構也會同時發生調整,并同步建立新的映射關系。也有演進式架構的含義在里面。
說到這里,大家可能對DDD有了一個粗略的,大體的認識,我們可以理解到,DDD能夠幫助我們更好的在微服務的架構中進行合理的拆分,由于DDD要求我們建立標準的業務領域模型,所以DDD也能夠很好地幫助我們設計企業的中臺,DDD是一把利器,幫助我們解決架構中遇到的問題和挑戰。
領域模型
DDD的優勢及未來
DDD是一套完整而系統的設計方法,并非一種架構。它能帶給你從戰略設計到戰術設計的標準設計過程,使得你的設計思路能夠更加清晰,設計過程更加規范,有助于提高技術人的架構設計能力。無論是在新項目中設計微服務,還是將系統從單體架構演進到微服務,DDD 都大有助力。
倘若能一直保持DDD的開放性,保持DDD的獨立性,我覺得在未來的五年乃至十年,DDD仍將煥發生命力,只是它的面貌會更加多姿多彩,甚至超過Eric Evans對DDD的原初定義。畢竟,軟件系統的核心只有兩個:領域和算法。
DDD集訓
為了幫助大家更快的了解和熟悉DDD驅動領域設計,這里給大家推薦一門高級架構師Zilor的在線直播課程~從原理到實戰,全程干貨,帶你完整走一遍 DDD+ 微服務設計的全流程,重點講解其中的技術要點、設計原則和注意事項~相信通過本次的集訓,你一定可以收獲滿滿!
課程原價199元,本號粉絲,前99名免費學習!!!趕緊掃描下方二維碼搶占學習名額吧~
長按掃碼,入群學習
如掃碼失敗,請添加微信號:
estherzry
1
DAY?01—DDD初探
01 ? 領域、子域、核心域
02??如何定義領域邊界
03 ?實體與值對象
04 ?聚合與聚合根
2
DAY?02—DDD設計思想
01 ? 領域事件
02??DDD分層架構
03 ?微服務架構模型
3
DAY?03—DDD與微服務設計
01 ? 領域建模
02??代碼模型
03 ?邊界與視圖
長按掃碼,入群學習
還有超級福利等你領取
視頻合集,免費送!!!
聽課還送福利!
課堂上還有抽獎環節,中獎者可贏得辦公室午睡神器——抱枕+午睡毯1套喲~
趕緊掃碼,搶占名額!!!
長按掃碼,入群學習
僅限前99名
如掃碼失敗,請添加微信號:
estherzry
總結
以上是生活随笔為你收集整理的DDD:架构思想的旧瓶新酒?阿里等大厂却对它趋之若鹜!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kubernetes探针踩坑记
- 下一篇: 程序开发天团必备单品,稳定输出还加持千元