原文地址:https://microservices.io/patterns/decomposition/decompose-by-business-capability.htmlhtml
假設你在開發一個大型複雜的微服務架構的應用,微服務架構的目標是將程序設計成一組鬆耦合的微服務應用,經過持續交付與部署,加速軟件開發。設計模式
微服務架構經過兩種方式實現這一點:架構
可是要想享受這些好處,必須將服務拆分好。微服務要足夠的小,以便由一個小團隊開發,而且這樣更加易於測試。面向對象設計(OOD)的一個重要的指導原則就是單一職責原則(SRP)。SRP 將類的職責定義爲更改這個類的緣由,並規定一個類應該只有一個更改的緣由。能夠將 SRP 應用於服務設計,來設計更加內聚的服務並實現一小部分強相關的功能。ide
拆分微服務,還須要以一種讓大多數新的和須要更改的需求隻影響單個服務的方式進行拆分。這是由於影響多個服務的更改須要跨多個團隊的協調,這會減緩開發速度。OOD 的另外一個有用的原則是共同封閉原則(CCP),它指出,因爲一樣的緣由而改變的類應該在同一個包中。這樣,當需求發生變化時,只須要修改少許的代碼,理想狀況下只有一個包須要改變。這種想法在設計服務時也是有指導意義的,它將有助於確保每一個更改隻影響一個服務。微服務
如何將應用程序分解爲微服務?測試
定義與業務功能相對應的服務。業務功能是業務體系結構建模中的一個概念,通常是指一個爲創造價值而作的事情。業務功能一般是做用於業務對象,例如:設計
一個線上商店一般包括下面的業務功能:htm
設計對應於這些功能的微服務:對象
這種模式有如下好處:blog
主要問題就是如何設計業務功能?須要理解業務才能設計好業務功能。通常業務功能是按照分析公司的目的、結構、業務流程和專業領域來設計的。經過迭代流程不斷改變與擴展業務功能邊界。通常能夠從以下方面來開始設計業務功能:
可選擇替代的另外一種設計模式是按子域拆分模式