按业务能力分解
问题说明
微服务架构将应用程序构建为一组松散耦合的微服务,每个服务应以敏捷的方式独立开发,以实现持续交付/部署。 当使用微服务架构构建大型复杂应用时,主要问题是如何设计松耦合的微服务,或者将大型应用分解为小的松耦合服务?
解决方案
我们可以定义一个对应特定业务能力的微服务。 业务能力是指以产生价值为目标的业务活动。 业务能力可以称为业务对象。 例如 −
订单管理 − 订单管理业务能力指的是订单。
客户管理 − 客户管理业务能力是指客户。
业务能力可以进一步划分为多级层次结构。 例如订单管理可以有配送、库存、服务等业务能力。
示例
考虑一个在线书店的示例。 可具备以下业务能力及相应的微服务 −
图书目录管理
库存管理
订单管理
保修管理
优点
稳定的架构 − 由于业务能力稳定,所以该架构稳定性高。
跨职能团队 − 开发团队独立工作、跨职能,并围绕功能特性而不是技术特性进行组织。
松耦合服务 − 开发的服务将是松散耦合和内聚的。
缺点
需要对业务有很好的了解 − 了解业务后,需要识别业务能力。 了解组织结构会有所帮助,因为组织是根据其能力构建的。
需要高级域模型 − 需要业务域对象,因为它们对应于业务功能。