业务能力指组织为了创造价值和实现业务目标所做的事情。被划为业务能力一类的微服务直接反映的是业务目标。在商业软件开发中,它们的业务目标通常是系统内部主要的变革驱动力。因此,设计系统的组织结构时,将那些变化区域封装在内部是很自然的事情。一些通过服务所实现的业务能力:订单管理、分类交易账簿、费用收取和向市场下单。

业务能力与领域驱动设计(DDD,Domain-Driven Design)的方法有着紧密的联系。领域驱动设计因埃里克·埃文斯(Eric Evans)的同名图书而得到普及。DDD专注于将现实世界领域构建为共享的、不断演进的视图和模型系统,其中一个最有用的概念是Evans引入的限界上下文(bounded context)。一个领域的任何解决方案都是由若干个限界上下文组成的。每个上下文内的各个模型是高度内聚的,并且对现实世界抱有相同的认知。每个上下文之间都有明确且牢固的边界。
限界上下文是有着清晰范围和明确外部边界的内聚单元。这就使得它们很自然会成为服务范围划分的起点。在一套解决方案中的各个领域部分之间通过上下文相互划定界限。这种上下文边界通常和组织边界非常吻合。比如,电子商务公司在发货和顾客支付这两个领域上的需求并不相同,对应的开发团队也不同。
在开始的时候,一个限界上下文通常直接和一个服务以及一块业务能力领域相关联。随着业务不断发展得越来越复杂,到最后,我们可能需要将一个上下文分解为多个子功能,其中的许多子功能需要实现为一个个独立的、相互协作的服务。但是,从客户端的角度看,这个上下文仍旧可以从逻辑上展示为一个服务。
摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》
网友评论