按子域分解



問題陳述

微服務架構將應用程式構建為一組鬆散耦合的微服務,每個服務都應以敏捷方式獨立開發,以實現持續交付/部署。當使用微服務架構構建大型複雜應用程式時,主要問題是如何設計鬆散耦合的微服務,或者如何將大型應用程式分解成小型鬆散耦合的服務?

解決方案

我們可以根據領域驅動設計 (DDD) 的子域定義微服務。DDD 將業務視為一個領域,一個領域可以有多個子域。每個子域代表不同的領域。例如:

  • 訂單管理 - 訂單管理子域指的是訂單。

  • 客戶管理 - 客戶管理子域指的是客戶。

子域可以使用以下標準進一步分類:

  • 核心域 - 應用程式最重要的和關鍵的差異化因素。

  • 支撐域 - 與業務相關,用於支援業務活動。

  • 通用域 - 不特定於業務,但用於增強業務運營。

示例

考慮一個線上書店的例子。它可以有以下子域和相應的微服務:

  • 圖書目錄管理

  • 庫存管理

  • 訂單管理

  • 保修管理

Decompose By Subdomain Design Pattern

優點

  • 穩定的架構 - 由於業務子域是穩定的,因此該架構高度穩定。

  • 跨職能團隊 - 開發團隊獨立工作,是跨職能的,並且圍繞功能特性而不是技術特性進行組織。

  • 鬆散耦合的服務 - 開發的服務將是鬆散耦合且具有內聚性的。

缺點

  • 需要很好地理解業務 - 需要在理解業務之後才能識別業務子域。理解組織結構會有所幫助,因為組織是根據其能力構建的。

  • 需要高級別的領域模型 - 需要業務領域物件,因為它們對應於業務子域。

廣告
© . All rights reserved.