原文地址:https://microservices.io/patterns/decomposition/decompose-by-business-capability.htmlhtml
假设你在开发一个大型复杂的微服务架构的应用,微服务架构的目标是将程序设计成一组松耦合的微服务应用,经过持续交付与部署,加速软件开发。设计模式
微服务架构经过两种方式实现这一点:架构
可是要想享受这些好处,必须将服务拆分好。微服务要足够的小,以便由一个小团队开发,而且这样更加易于测试。面向对象设计(OOD)的一个重要的指导原则就是单一职责原则(SRP)。SRP 将类的职责定义为更改这个类的缘由,并规定一个类应该只有一个更改的缘由。能够将 SRP 应用于服务设计,来设计更加内聚的服务并实现一小部分强相关的功能。ide
拆分微服务,还须要以一种让大多数新的和须要更改的需求只影响单个服务的方式进行拆分。这是由于影响多个服务的更改须要跨多个团队的协调,这会减缓开发速度。OOD 的另外一个有用的原则是共同封闭原则(CCP),它指出,因为一样的缘由而改变的类应该在同一个包中。这样,当需求发生变化时,只须要修改少许的代码,理想状况下只有一个包须要改变。这种想法在设计服务时也是有指导意义的,它将有助于确保每一个更改只影响一个服务。微服务
如何将应用程序分解为微服务?测试
定义与业务功能相对应的服务。业务功能是业务体系结构建模中的一个概念,通常是指一个为创造价值而作的事情。业务功能一般是做用于业务对象,例如:设计
一个线上商店一般包括下面的业务功能:htm
设计对应于这些功能的微服务:对象
这种模式有如下好处:blog
主要问题就是如何设计业务功能?须要理解业务才能设计好业务功能。通常业务功能是按照分析公司的目的、结构、业务流程和专业领域来设计的。经过迭代流程不断改变与扩展业务功能边界。通常能够从以下方面来开始设计业务功能:
可选择替代的另外一种设计模式是按子域拆分模式