按子域分解
問題陳述
微服務架構將應用程式構建為一組鬆散耦合的微服務,每個服務都應以敏捷方式獨立開發,以實現持續交付/部署。當使用微服務架構構建大型複雜應用程式時,主要問題是如何設計鬆散耦合的微服務,或者如何將大型應用程式分解成小型鬆散耦合的服務?
解決方案
我們可以根據領域驅動設計 (DDD) 的子域定義微服務。DDD 將業務視為一個領域,一個領域可以有多個子域。每個子域代表不同的領域。例如:
訂單管理 - 訂單管理子域指的是訂單。
客戶管理 - 客戶管理子域指的是客戶。
子域可以使用以下標準進一步分類:
核心域 - 應用程式最重要的和關鍵的差異化因素。
支撐域 - 與業務相關,用於支援業務活動。
通用域 - 不特定於業務,但用於增強業務運營。
示例
考慮一個線上書店的例子。它可以有以下子域和相應的微服務:
圖書目錄管理
庫存管理
訂單管理
保修管理
優點
穩定的架構 - 由於業務子域是穩定的,因此該架構高度穩定。
跨職能團隊 - 開發團隊獨立工作,是跨職能的,並且圍繞功能特性而不是技術特性進行組織。
鬆散耦合的服務 - 開發的服務將是鬆散耦合且具有內聚性的。
缺點
需要很好地理解業務 - 需要在理解業務之後才能識別業務子域。理解組織結構會有所幫助,因為組織是根據其能力構建的。
需要高級別的領域模型 - 需要業務領域物件,因為它們對應於業務子域。
廣告