本文首發自「慕課網」,想了解更多IT幹貨内容,程序員圈内熱聞,歡迎關注!
如果你知道微服務,那麼就一定聽說過DDD.....
01
DDD到底是什麼?
大家都知道,微服務劃分的一個重要理論基礎就是領域驅動設計。而DDD全稱就是“領域驅動設計”,它是一種軟件開發中用到的建模設計思想,軟件的建模和設計類似建築領域中建築師的工作。建築師把建築的架構設計出來,首先是要滿足和優化用戶的需求,用戶要住着舒适,安全;同樣,軟件的業務架構師也需要設計軟件的業務架構,讓軟件能夠非常好地滿足業務需求,推動業務發展,軟件的建模和設計就是業務架構中的重要工作内容。
業務越複雜的軟件,建模和設計就越難,中國在芯片領域被卡脖子,不僅是因為沒有光刻機,另一個重要原因是缺少芯片設計的EDA軟件,EDA軟件就是複雜軟件的一個典型代表,芯片領域極其複雜,所以EDA軟件的建模和設計也同樣複雜。對複雜軟件,傳統的面向對象思想已經不夠用了,舉個例子,某大廠雖然具備極強的技術和管理能力,但是,早期使用面向對象的建模和設計思想來開發整個電商系統,最終也是以失敗告終。DDD就是為了解決業務複雜的軟件系統的建模和設計問題誕生的一種新思想(其實不算太新,但是近幾年逐漸升溫)。
02
DDD被廣泛應用于哪裡?
凡是涉及到複雜軟件系統的設計,都需要用到DDD。
例如DDD對業務系統進行建模和設計,可以使複雜系統更具備可維護性和可更改性,各個模塊的耦合更低,不會出現牽一發而動全身的情況。這一點,從下面我們會提到的某大廠使用面向對象建模和設計方法的失敗經驗,到現在WXG采用DDD就能夠看到。
03
為什麼DDD這麼火?
一方面,随着國内經濟的發展,早期的發展紅利已經逐漸消失了,空白領域基本不複存在,各領域競争越來越激烈,業務的複雜性也越來越高,所以對應的軟件系統的複雜性也越來越高,以前簡單軟件也能賺錢的時代已經一去不返了。隻會CURD、設計簡單軟件的人當然也沒有市場了,市場需要的是具備複雜軟件設計能力的人才,DDD是目前最有效的針對業務複雜系統的建模和設計思想,所以,市場上對掌握DDD的人才需求量不斷增加。掌握DDD的人,才能擔當現代軟件系統的架構師,有較好的職業發展空間。
另一方面,随着微服務架構的流行,人們發現DDD能夠為微服務架構中的一些問題提供理論指導,比如:如何劃分微服務。所以人們更加意識到DDD思想的重要性。
發展趨勢:
1) 和大數據、AI結合;
2) 理論和具體建模方法不斷完善;
3) 面向DDD的框架和編程語言。
04
DDD的特點和核心是什麼?
DDD的核心思想簡單用一句話來說就是:通過分解來控制複雜性。分解又分兩種:橫向分解和縱向分解。
05
DDD的分層架構和構成要素有哪些?
傳統的分層架構分為下面四層,但是領域層依賴基礎設施層會讓領域層受到基礎設施層的具體技術實現影響。所以,發展出來六邊形架構和洋蔥架構,這類架構歸納起來,統稱為“整潔架構”。
整潔架構:
整潔架構的特點,就是把最核心的領域層,放在中間,不依賴其他層。
06
大廠使用DDD的多嗎?
可以很負責任的告訴你,目前大廠使用DDD的非常多,基本上所有的業務開發都在學習和應用DDD,或者是在應用DDD的路上。
微信支付商戶資金後台開發工程師招聘JD
騰訊資深後台架構師招聘JD
從上面兩個騰訊JD我們可以看出:
1) 市場需要懂DDD的人才,因為懂DDD的人才能夠設計複雜系統;
2) 懂DDD的人才能擔任現代業務系統的架構師,才會有更好的職業發展空間;
3) 大廠的核心部門都在使用DDD,使用DDD能夠使軟件系統的設計更合理,具備更好的可維護性和可改動性,模塊和模塊之間的耦合更低,業務不會受技術的影響,不會牽一發而動全身。
目前而言,DDD是針對複雜業務軟件系統進行建模與設計的唯一有效的方法論工具,不誇張地說,在當今階段,隻有學會應用DDD,技術人員才真正具備了成為架構師的資格。
07
DDD好學嗎?我要怎麼學?
可以肯定的是,任何軟件開發人員,隻要想實現更好的職業發展,都可以學習DDD,從中受益。
歡迎關注「慕課網」,發現更多IT圈優質内容,分享幹貨知識,幫助你成為更好的程序員!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!