幽默:兩個沒有使用DDD的幽默
幽默1:多虧了微服務,我們的JOINS(SQL語句)現在可以跨HTTP了。
banq評:SQL的JOIN是跨表操作,這種跨表操作可能會將本是松耦合的兩個資料表耦合在一起,變成一個整體,相互綁架,無法各自獨立擴充套件。如果使用DDD的有界上下文設計微服務,清晰劃分好微服務的邊界,微服務之間如果需要通訊,透過鬆耦合的訊息機制聯絡,而不是直接把SQl JOIN操作延申到微服務之間操作,透過HTTP實現微服務之間實現同步呼叫,完成類似跨表實現的功能。
這種方式其實還是資料庫思維的延續,或者說,當進入微服務世界,卻沒有引入DDD來管理資料操作,沒有引入DDD對微服務進行指導制約設計:
DDD>微服務>SQL JOINs |
如果缺少DDD只是,則變成:
SQL JOINS>微服務 |
因為SQL和DDD都是解決業務問題不同的方式,而微服務只是一種技術架構,只是強調微小,而沒有說明如何變得微小,DDD的有界上下文是說明如何切分變得微小,如果你的認知中沒有DDD這種思維,那麼你又要實現微小的業務功能,那麼最終變成使用SQL JOINs透過HTTP整合多個微服務實現一個大的整體功能。
幽默2: 10年前,我們擁有一個難以管理的整體,其中包含資料庫和伺服器端渲染的Web前端。 現在,我們有了一個無法管理的NoSQL資料庫系統、複雜的JS前端以及微服務的死星。
banq評:引入微服務和NoSQL以後,系統從過於集中走向另外一個極端:過於瑣碎,這樣的系統一盤散沙,難以管理,微服務+NOSQL=切斷耦合,但是不是所有耦合都能切斷,代表事物天生自然的耦合就無法切分,比如窗戶由玻璃和窗框組成,這·三者耦合是一種聚合,天然組成在一起才代表一個窗戶,否則分開就沒有窗戶這個事物存在了。
微服務和NoSQL只是指明方向,需要切斷耦合,但是沒有告訴我們如何保留聚合,放棄普通關聯關係,也就是高聚合低關聯,DDD的有界上下文和聚合體現了高聚合低關聯的設計原則,因此,微服務+NOSQL組合中如果沒有DDD,必然也會走向失敗。
相關文章
- 幽默:不懂OO或DDD的程式設計師永遠無法get到這個幽默程式設計師
- 實施DDD的幽默:DDD落地需要專門的框架嗎?框架
- 幽默:沒有資料庫的架構來了資料庫架構
- 幽默:Github上兩個機器人吵架了Github機器人
- 幽默:使用CSS中!important的原因只有一個CSSImport
- 幽默:團隊有這兩種精神患者就完美了
- 幽默:K8S沒有那麼難,部署在Kubernetes上個人部落格K8S
- 幽默:Javascript為什麼算術沒算好?JavaScript
- 兩則幽默圖:Java糟糕和Rust字串JavaRust字串
- 幽默:使用錯誤框架的下場框架
- 幽默:兩種專案包的選擇難題
- 幽默圖:log4j漏洞事件的幽默模因事件
- 幽默:為什麼DDD的Bounded Context翻譯為"有界上下文"?Context
- 幽默:如何建立一個良好的關係?
- 幽默:程式設計師的兩次淚奔時刻程式設計師
- 幽默:服務架構的兩難與矛盾之處架構
- 幽默:過度使用Lambda的Java程式碼Java
- 幽默:神經科學的認知漸進模板用在DDD和微服務上微服務
- 編碼與幽默
- 幽默:歐洲人認為如沒有工程學位就不算軟體工程師軟體工程工程師
- 幽默:太多需求的職位要求
- 幽默:重構的德文定義
- 幽默:大勺挖小碗
- 幽默:PHP+Python=DjangoPHPPythonDjango
- 幽默:Python很容易學?Python
- 幽默:STUPID原則 - simon
- 幽默:優秀程式設計師過馬路看兩邊程式設計師
- 幽默:軟體的五個層次,通俗易懂 -CatMcGeeCode
- 幽默:語言會限制你的思想
- 幽默:Facebook的排序演算法 - KevlinHenney排序演算法
- 幽默:新手與專家的區別
- 技術宅的幽默你懂嗎?
- 幽默:程式設計師跳槽的幾個原因,最後一個亮了!程式設計師
- 幽默:什麼是價值?
- 幽默:程式碼本地漢化
- 幽默:SQL Join形象解釋SQL
- 幽默:MySQL與mongodb區別MySqlMongoDB
- 幽默:什麼是FAANG? - emily