天天看點

按業務領域分解模式劃分微服務場景目标方法例子優點問題相關模式

場景

使用微服務架構開發一個大型複雜的應用程式,我們需要将應用程式細緻,合理地分解為一組松散耦合的微服務。微服務架構的目标是通過實作持續傳遞/部署來加速軟體開發。

按業務領域分解模式劃分微服務場景目标方法例子優點問題相關模式

目标

  • 架構必須穩定;
  • 服務必須高内聚 - 服務應該實作一小組強相關的功能;
  • 服務必須符合開閉原則 - 将一同變更的内容打包在一起,以確定每個更改僅影響一個服務;
  • 服務必須松耦合 - 每個服務都可以在不影響用戶端的情況下更改實作;
  • 服務應該是可測試的;
  • 每項服務都小到足以由“兩個披薩”團隊開發,即一個6-10人的團隊;
  • 負責一個或多個服務的每個團隊必須是自治的 - 團隊能夠在與其他團隊盡量少的協作下,來開發和部署他們的服務。

方法

通過領域驅動設計(DDD),設計與 子域 相對應的服務。DDD通過分析問題空間和業務邏輯,将應用程式定義為域。域由多個子域組成。每個子域對應于業務的不同部分。

子域可分為以下幾類:

  • 核心類 - 業務的關鍵差異化因素和應用程式中最有價值的部分;
  • 支援類 - 與業務有關,但與差異化無關;這些可以在内部實施或外包;
  • 通用類 - 與業務無關,理想情況下可以使用現成的軟體實作。

例子

一個線上商店的子域包括:

  • 産品目錄
  • 庫存管理
  • 訂單管理
  • 交貨管理

相應的微服務架構中,每一個子域将對應一個微服務。

按業務領域分解模式劃分微服務場景目标方法例子優點問題相關模式

優點

  • 由于子域相對穩定,是以具有穩定的體系結構;
  • 開發團隊能有效隔離業務邏輯和技術架構;
  • 服務具有高内聚和松耦合。

問題

如何識别子域?

識别子域需要了解業務。通過分析業務及其組織結構來識别不同的專業領域,進而識别子域。這個過程通常需要不斷疊代。

識别子域的好思路是:

  • 組織結構 - 組織内的不同分組或部門可能對應于不同子域;
  • 高階域模型 - 子域通常具有關鍵域對象。

相關模式

微服務架構風格

你現在的氣質裡,藏着你走過的路,讀過的書,愛過的人。

繼續閱讀