2021年,Gartner给出2022年Top Strategic Technology Trends,列出的12项前沿技术中,包括了组合式应用(Composable Applications)。同时,Gartner预测,到2024年, 新的SaaS应用和自定义应用都将是“composable API-first or API-only”。这种可组装API优先或API唯一的方式,甚至可以认为是现代应用的一种特征,可以概况为开放和组合。
组合式应用由PBCs(packaged-business capabilities)构成,也可以将PBC称之为软件定义业务对象(software-defined business object)。这就是PBC概念的由来。
PBC的定义
Packaged business capabilities (PBCs) are software components representing a well-defined business capability, functionally recognizable as such by a business user. Technically, a PBC is a bounded collection of a data schema and a set of services, APIs, and event channels. The well-implemented PBCs are functionally complete to ensure autonomy (no critical external dependencies, no need for direct external access to its data). PBCs are meant to be used as building blocks for application product suites and custom-assembled application experiences.
以上为Gatner对PBC的定义。从这一详细定义可以明确PBC面向业务用户,为其提供相对独立的业务能力。
技术上,PBC的外部公开为APIs与Event Channel,内部则由服务(可以是微服务,也可以是迷你服务或宏服务)、内部数据与元数据构成,同时,还包含可选的用户界面。整个PBC的结构如下图所示:
这一特征也吻合我在应用现代化白皮书中对开放能力的定义,即“开放为用,内聚为体”:
PBC的开放就是API与事件通道,PBC的内聚则体现为它所拥有的数据和元数据,而业务代码则定义为各个独立的服务。
Gatner定义的PBC具有以下的核心特征:
我认为可以从业务维度与技术维度分别定义PBC的特征:
o业务导向
o灵活组合
o独立售卖
o设计要素:
§发现
§开放
§扩展
§自治
o质量属性
§可移植性
§互操作性
§弹性伸缩
§韧性可靠
PBC的分类
根据PBC的业务特征,以及它对外提供的能力,可以分为以下五类:
对于数据PBC和分析PBC而言,还需要数据编织(Data Fabric)技术的支持。
PBC与微服务的对比
下图是微服务的设计原则:
可以看出,PBC与微服务十分相似,甚至有似是而非之感。例如,它们都以API或Event作为对外通道,它们都要求一定的独立性和自治性,它们也都是去中心化的,同时,它们的粒度也不曾有大家公认的客观标准。然而,二者又有本质上的区别。微服务是一种架构风格,PBC更突出它作为一种构建块(building block),其目的是为了打造组合式应用。因此,可以理解为PBC是一种抽象概念,微服务则只是PBC的其中一种实现罢了。应用现代化方法体系中的开放能力,可以认为就是PBC。
所以,PBC和微服务可以形成如下图所示的关系:
左图,一个促销微服务构成了一个PBC,右图,购物车和订单两个微服务构成了一个PBC。
从满足PBC设计要素来思考PBC该如何设计。一个典型的PBC如下图所示:
一个完整的PBC需要:
oaddress:可访问的地址,地址的类型与格式取决于绑定的类型
obinding:描述通信协议、编码和必要的安全要求
ostate:能力的当前状态,如released,running等
ointerface:接口定义,接口类型可以为API、Event或Function
omessage:对通信消息的定义
oversion:版本
ometadata:描述能力的元数据和支持代码生成的元数据信息
obusiness data:业务数据
oconfig:必要的配置信息
PBC的组合方式包括:
这两种组合方式与微服务的组合方式完全相同。
PBC是应用现代化的重要架构单元,通过它可以推动企业应用架构的现代化。根据不同IT生态和业务场景,运用PBC进行现代化可以有如下图所示的三种形式:
应用架构的变化
由PBC构成的应用架构与传统方式的应用架构存在较大差别,如下图所示:
每个PBC具有独立完整的自治能力,形成为自治且可组合的架构单元。每个PBC的边界隔离了内外,内部的实现可以保持自己的个性,包括内部的技术栈、发布周期,都是完全独立的。PBC的开放、发现又保证了它的复用性与组合性,使得团队可以根据不同的应用场景对PBC进行组合。同时,利用网格能力,将PBC之间的协作实现及其对应的基础设施隔离出来,交由统一的运维团队。
以PBC打造的应用架构是应用现代化提倡的现代应用架构,这种现代架构体现为面貌焕然一新的架构风格,可以认为是架构发展的趋势。
由于PBC的发现、开放、扩展和自治特性,它与传统乐高式的组件并不相同。组件的价值主要体现在复用能力上,每个组件并没有体现相对完整的业务价值,同时,它也不具有生命周期的独立性,不管是它的编译、运行,都是与组合后的应用绑定在一起的;PBC则不然,它是可以独立部署的,甚至可以独立售卖,通过定义标准契约,又能满足其开放性与组合性,使得PBC既可分,又可合,成为一种构成整个应用生态的细胞单元。
当我们将PBC作为细胞单元,还将赋予它生命力,使其具有自组织、自学习、自迭代的进化特征,而这种可以快速拼装的Cell 应用则是敏捷创新的结果和进一步迭代的驱动。
在现代应用架构中,体现业务价值的细胞单元——PBC,既可以独立向往提供业务能力,也可以彼此组合起来,对外提供更强大的业务能力。无论是PBC之间的组合,还是对外发布的能力,都通过混合型的APIs完成。对于前者,APIs提供集成能力,它就像胶水一样,将彼此完全独立的PBC集成起来;对于后者,APIs提供开放能力,它是PBC连通外界的通道,不断输出应用价值和数据价值。
因此,在由PBC构成的现代应用架构中,APIs不可避免将成为架构的中心,并通过它体现PBC的“用”。PBC的APIs虽然可以是服务接口、事件通道或者函数(此之谓混合型APIs),但它们都必须遵循以下设计要求:
细胞单元与API为中心的架构可以支持去中心化的大规模敏捷性组织和社群。
组织模式的变化
Gartner认为,应通过融合团队(fusion team)打造组合式应用(Composable Application),从而满足快速业务发展的要求。融合团队如下图所示:
无论是业务团队还是IT团队,都无法单独支持正在加速的业务变革步伐。业务团队和IT团队必须共同努力,分享共同的愿景,从而组建一个由业务角色和技术角色共同构成的融合团队。
融合团队打通了业务和技术之间的壁垒,并在统一语言的指导下,形成领域知识的共享。如此就可以更好地以业务结果为共同目标,推动业务快速适应变化并快速创新。
融合团队定义的三种角色,参与构建PBC的不同方面:
每个融合团队可以是位于企业内部打通部门墙的联合团队,也可以是不断涌现的微创业者社群,以开放的协作共创方式完成对创新应用的构建。这种去中心化的团队组织模式恰好与去中心化的由PBC构成的细胞单元架构保持一致,符合康威定律的定义。
参考资料