一個微服務對應一個有界的上下文嗎?
“ 一個微服務應該涵蓋一個有界的上下文 ” Vaughn Vernon斷言。它引發了與Greg Young,Romeu Moura和Mathias Verraes的有趣的討論。Greg和Romeu不同意,我說這取決於上下文。
要知道一個概念是否可以覆蓋另一個概念,我們必須知道微服務是什麼以及有界的上下文是什麼。我發現他們的定義很模糊,我認為這個討論就是證明。我將試著澄清我在本文中的觀點。
免責宣告:以下定義是基於我目前對DDD戰略模式的理解,我並未聲稱它們是唯一真正的定義。
微服務定義
在我們檢視維基百科的定義之前,我們相信我們知道什麼是微服務。
“ 與SOA相比,微服務可以解決服務應該有多大的問題,以及它們應該如何相互通訊的問題。在微服務架構中,服務應該很小,協議應該是輕量級的。“
這個定義是我們行業的毛病:我們用別的東西來解釋一些我們也不瞭解的東西。我們是否對“ 小 ”和“ 輕量 ” 有什麼共同的理解?我不這麼認為。
更好的解釋是維基百科頁面細節中的第二個屬性:“ 服務是圍繞功能組織的,例如,使用者介面前端,推薦,後勤,計費等。 ”
公平地說,這個屬性與我們如何定義有界上下文有很多對稱性。
領域定義和問題空間
要了解有界上下文是什麼,我們需要定義域是什麼。它是問題空間中企業的理論表徵。它可以劃分為子域。
例如,在亞馬遜的知名企業中,核心域名是關於線上銷售內容,並且有不同的子域或多或少的通用,如運輸,計費,廣告等。
我們處於問題空間,因為我們還不知道如何實施亞馬遜的業務,它只是對他們所做工作的理論描述。
有界上下文定義和解決方案空間
有界上下文是解決方案空間中的投影,用於定義實現域的系統中的邊界。有限的上下文很重要,因為它們允許定義一種無處不在的語言,但是隻在其邊界內有效。結算有界上下文中的產品與運輸有界上下文中的含義不同。
如果做得不好很糟糕時,我們會獲得一個大的泥球,例如一個沒有邊界的龐大系統,其中計費部分的更新可能會導致運輸部件產生副作用。
我們處於解決方案領域,因為它是有關我們如何實現領域的實際描述。有界上下文不一定恰好匹配一個子域。但是,如果在不同的子域之間存在太多有界的上下文,這絕對會散發一種設計氣味。
一項微服務應涵蓋一個有界的上下文?
現在我們定義了微服務和有界上下文,我們可以嘗試確定一個微服務是否應該涵蓋一個有限的上下文?
當然,我們仍然無法決定,因為我們仍然缺乏(業務)背景。在某些業務環境中,微服務可能適合有界的上下文。在其他一些方面,一些微觀服務將在一個有限的上下文下。我們唯一能想到的是,重疊不同有界上下文的微服務是有些不對勁的。
像任何DDD討論一樣,上下文是王道。
相關文章
- 每個微服務對應一個程式碼庫嗎? - Reddit微服務
- Knative 實戰:一個微服務應用的部署微服務
- 切實有效的三個步驟:如何通過劃分有界上下文設計微服務? - Robert Reppel微服務
- Spring Cloud之微服務之間相互呼叫、如何讓一個微服務呼叫另外一個微服務SpringCloud微服務
- 資料和行為與有界上下文、微服務的關係 - Alberto Brandolini微服務
- [譯] 用 Rust 寫一個微服務Rust微服務
- 編寫第一個 .NET 微服務微服務
- 一個可以自我進化的微服務框架微服務框架
- Soa: 一個輕量級的微服務庫微服務
- Dubbo 入門系列之快速部署一個微服務應用微服務
- 一個域名可以對應多個IP嗎?如何透過DNS實現?DNS
- 關於有界上下文和微服務的關係以及它們的劃分粒度 - Alberto Brandolini微服務
- 微服務不過只是一個新名頭微服務
- “一學就會,一做就廢”微服務的架構模式:一個服務一個資料庫模式微服務架構模式資料庫
- DDD統一語言和有界上下文誤配 - Alberto Brandolini
- 推薦一個基於Dapr的 Red Dog 的完整微服務應用程式微服務
- 【轉載】微服務是個壞主意嗎?微服務
- 從0實現一個前端微服務(上)前端微服務
- Kite: 一個分散式微服務框架(翻譯)分散式微服務框架
- 微服務中如何搭建一個高可用的地圖服務微服務地圖
- 如何設計一個容錯的微服務架構微服務架構
- 如何通過一個SAPGUI螢幕反查這個螢幕對應的事務碼GUI
- Spring-MultiValueMap(一個Key對應多個Value)Spring
- 一個快速生成web和微服務程式碼工具Web微服務
- 如何快速搭建一個 “簡單模式” 的微服務架構模式微服務架構
- 如何用Nginx快速搭建一個安全的微服務架構Nginx微服務架構
- 一個知名網站的微服務架構最佳實現網站微服務架構
- 通過 docker-compose 一鍵部署一個微服務專案Docker微服務
- 如何用Nginx搭建一個安全的、快速的微服務架構Nginx微服務架構
- 如何劃分有界上下文? - nick
- 對電子商務下一個時代的7個預測
- 從SpringCloud看一個微服務框架的「五臟六腑」SpringGCCloud微服務框架
- go-kit微服務:一個簡單的API閘道器Go微服務API
- 從0實現一個single-spa的前端微服務(中)前端微服務
- 從0實現一個single-spa的前端微服務(下)前端微服務
- 應對微服務呼叫時的雪崩效應微服務
- 教你如何用Nginx搭建一個安全的、快速的微服務架構Nginx微服務架構
- 微服務中如何設計一個許可權授權服務微服務