全面分析和理解PBC

简介: 全面分析和理解PBC

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的结构如下图所示:

image.png

这一特征也吻合我在应用现代化白皮书中对开放能力的定义,即“开放为用,内聚为体”:image.png

PBC的开放就是API与事件通道,PBC的内聚则体现为它所拥有的数据和元数据,而业务代码则定义为各个独立的服务。


PBC的特征


Gatner定义的PBC具有以下的核心特征:

  • 模块化
  • 可发现
  • 自治
  • 可编排

image.png

我认为可以从业务维度与技术维度分别定义PBC的特征:

  • 业务维度:代表一种完善的业务能力,可被业务用户理解

o业务导向o灵活组合o独立售卖

  • 技术维度:封装完好的软件组件,并以开放的API向外公开

o设计要素:§发现§开放§扩展§自治o质量属性§可移植性§互操作性§弹性伸缩§韧性可靠

PBC的分类

根据PBC的业务特征,以及它对外提供的能力,可以分为以下五类:

  • 业务PBC:提供相对完整的业务功能,如订单管理、合同管理等
  • 流程PBC:封装了业务流程的完整业务能力,如工单审批流程、贷款申请流程等
  • 数字孪生PBC:物理世界中人(People)、位置(Place)和物(Thing),即所谓的PPT对象到数字世界的映射,如工厂产线、零售网点等
  • 数据PBC:提供数据信息,并形成信息汇总和画像能力,如员工画像、规则库、凭证等
  • 分析PBC:对数据进行洞察和预测等分析能力,如动态销售预测、经营风险分析等

对于数据PBC和分析PBC而言,还需要数据编织(Data Fabric)技术的支持。

PBC与微服务的对比

下图是微服务的设计原则:


可以看出,PBC与微服务十分相似,甚至有似是而非之感。例如,它们都以API或Event作为对外通道,它们都要求一定的独立性和自治性,它们也都是去中心化的,同时,它们的粒度也不曾有大家公认的客观标准。然而,二者又有本质上的区别。微服务是一种架构风格,PBC更突出它作为一种构建块(building block),其目的是为了打造组合式应用。因此,可以理解为PBC是一种抽象概念,微服务则只是PBC的其中一种实现罢了。应用现代化方法体系中的开放能力,可以认为就是PBC。所以,PBC和微服务可以形成如下图所示的关系:

image.png

左图,一个促销微服务构成了一个PBC,右图,购物车和订单两个微服务构成了一个PBC。


PBC的实现


从满足PBC设计要素来思考PBC该如何设计。一个典型的PBC如下图所示:

image.png

一个完整的PBC需要:

  • endpoints:提供可访问的端点,通过它满足PBC的发现能力,包括:

oaddress:可访问的地址,地址的类型与格式取决于绑定的类型obinding:描述通信协议、编码和必要的安全要求ostate:能力的当前状态,如released,running等

  • contracts:定义对外公开的协议,通过它满足PBC的开放能力,包括:

ointerface:接口定义,接口类型可以为API、Event或Functionomessage:对通信消息的定义oversion:版本

  • addon:插件,通过它满足PBC的扩展能力
  • data:数据,通过它满足PBC的自治能力,它又可分为

ometadata:描述能力的元数据和支持代码生成的元数据信息obusiness data:业务数据oconfig:必要的配置信息


PBC的组合


PBC的组合方式包括:

  • 编制(orchestration):通过一个可执行的流程来协同内部及外部的能力交互,通过流程来控制总体的目标、涉及的操作、调用顺序。
  • 编排(choreography):通过消息的交互序列来控制各个能力之间的交互,参与交互的能力是对等的,没有集中的控制

这两种组合方式与微服务的组合方式完全相同。


现代化的三种途经


PBC是应用现代化的重要架构单元,通过它可以推动企业应用架构的现代化。根据不同IT生态和业务场景,运用PBC进行现代化可以有如下图所示的三种形式:

image.png

  • 独立实现(Standalone Implementation):这一方式可以针对数字化创新业务,在打造现代应用时,直接采用PBC模式,打造组合式应用;如果针对旧有系统的数字化转型,则通过直接替代的方式实现现代化。替代的内容可以是局部,也可以是整体。
  • 遗留现代化(Legacy Modernization): 这一方式主要针对旧有系统的数字化转型,可以识别大型遗留系统中哪些需要优化和调整,然后对这部分内容进行重构和升级,定义为PBC。
  • 系统增强(System Enhancement):对已有系统的现有功能不做任何变化,但对于该系统的扩展业务,则可以引入PBC,形成对该系统的功能增强。

应用架构的变化

由PBC构成的应用架构与传统方式的应用架构存在较大差别,如下图所示:

image.png

每个PBC具有独立完整的自治能力,形成为自治且可组合的架构单元。每个PBC的边界隔离了内外,内部的实现可以保持自己的个性,包括内部的技术栈、发布周期,都是完全独立的。PBC的开放、发现又保证了它的复用性与组合性,使得团队可以根据不同的应用场景对PBC进行组合。同时,利用网格能力,将PBC之间的协作实现及其对应的基础设施隔离出来,交由统一的运维团队。以PBC打造的应用架构是应用现代化提倡的现代应用架构,这种现代架构体现为面貌焕然一新的架构风格,可以认为是架构发展的趋势。


Cell-based Architecture


image.png

由于PBC的发现、开放、扩展和自治特性,它与传统乐高式的组件并不相同。组件的价值主要体现在复用能力上,每个组件并没有体现相对完整的业务价值,同时,它也不具有生命周期的独立性,不管是它的编译、运行,都是与组合后的应用绑定在一起的;PBC则不然,它是可以独立部署的,甚至可以独立售卖,通过定义标准契约,又能满足其开放性与组合性,使得PBC既可分,又可合,成为一种构成整个应用生态的细胞单元。当我们将PBC作为细胞单元,还将赋予它生命力,使其具有自组织、自学习、自迭代的进化特征,而这种可以快速拼装的Cell 应用则是敏捷创新的结果和进一步迭代的驱动。


API-centric Architecture


image.png

在现代应用架构中,体现业务价值的细胞单元——PBC,既可以独立向往提供业务能力,也可以彼此组合起来,对外提供更强大的业务能力。无论是PBC之间的组合,还是对外发布的能力,都通过混合型的APIs完成。对于前者,APIs提供集成能力,它就像胶水一样,将彼此完全独立的PBC集成起来;对于后者,APIs提供开放能力,它是PBC连通外界的通道,不断输出应用价值和数据价值。因此,在由PBC构成的现代应用架构中,APIs不可避免将成为架构的中心,并通过它体现PBC的“用”。PBC的APIs虽然可以是服务接口、事件通道或者函数(此之谓混合型APIs),但它们都必须遵循以下设计要求:

  • 可用性:APIs的设计要从消费的角度考虑,尽可能降低调用的复杂度,让调用者愿意调用
  • 可发现性:调用者可以快速获得APIs的信息,知道它在哪里,该怎么调用
  • 标准:APIs的设计需要遵循统一的标准,如此才能满足PBC的可复用和可组合
  • 可演进:APIs可以不断演进,但在演进的同时,需要考虑集成之间的兼容性,将变化带来的影响降到最低
  • 安全:每个API都必须是安全的,当然,位于不同层次不同业务场景,对API安全性的要求与强度可以不同

细胞单元与API为中心的架构可以支持去中心化的大规模敏捷性组织和社群。

组织模式的变化

Gartner认为,应通过融合团队(fusion team)打造组合式应用(Composable Application),从而满足快速业务发展的要求。融合团队如下图所示:

image.png

无论是业务团队还是IT团队,都无法单独支持正在加速的业务变革步伐。业务团队和IT团队必须共同努力,分享共同的愿景,从而组建一个由业务角色和技术角色共同构成的融合团队。融合团队打通了业务和技术之间的壁垒,并在统一语言的指导下,形成领域知识的共享。如此就可以更好地以业务结果为共同目标,推动业务快速适应变化并快速创新。融合团队定义的三种角色,参与构建PBC的不同方面:

  • 技术专家(Technical Professional):负责设计PBC的接口,并通过开发或平台实现一个满足业务价值的PBC,在构建时,它需要与业务专家沟通和协作
  • 业务专家(Business Professional):PBC的调用者,也是PBC的需求提出者,也可以是PBC的购买者
  • 业务技术人员(Business Technologist):PBC的组装者,可以利用平台或胶水代码,完成对PBC的组合,对外输出完整的业务能力

每个融合团队可以是位于企业内部打通部门墙的联合团队,也可以是不断涌现的微创业者社群,以开放的协作共创方式完成对创新应用的构建。这种去中心化的团队组织模式恰好与去中心化的由PBC构成的细胞单元架构保持一致,符合康威定律的定义。

参考资料

相关文章
|
中间件 API 开发者
组装式架构重构未来平台研发模式
企业数字化转型如火如荼的进行中,快速响应市场需求变化,低成本进行数字化改造时每个企业追求的目标。而组装式架构可以完美解决B段客户对于软件平台的高质量要求。
组装式架构重构未来平台研发模式
|
数据可视化 IDE 安全
云巧-让开发更简单,更高效,更方便
近年来,快速迭代的新需求将引导企业改变其开发方式,进而转向使用支持快速、安全和高效的技术架构,组装式应用便成为了企业重要的战略技术趋势。组装式应用引入模块化的理念,使得各企业可以更敏捷、更有效地复用能力模块,提高商业的韧性和效率。云巧平台应运而生,能极大的改善开发环境,节省开发工作量,让开发更简单,更高效,更方便。
2185 0
|
云计算 运维 存储
aPaaS平台是什么?aPaaS与PaaS有什么区别?
aPaaS和PaaS都可以完成软件的开发和部署,都支持云端访问,而两者的差异主要体现在用户人群和使用环境不一样。
aPaaS平台是什么?aPaaS与PaaS有什么区别?
|
缓存 运维 安全
云巧组件标准
可组装式应用的理论,结合了云原生的理念和交付质量要求,云巧对云巧组件设计了六大维度的标准。根据这六大维度名称的英文首字母组成单词ACCORD
2535 0
|
运维 前端开发 Java
云巧组装式交付介绍
Gartner在2021年10月19日,正式发布了2022年重要战略趋势。其中包括了“组装式应用”这一战略。 云巧是“组装式应用”理念的落地,是围绕生态,面向产业的首个产业数字组件中心。 你可以从本文了解组装式开发的理念,以及阿里云GTS通过组装式理念交付项目的最佳实践:云巧。 如果你是阿里及阿里云生态合作伙伴的开发者,可以进一步访问云巧首页:https://gts.work/portal/yunqiao ,进一步了解云巧的能力。 即使你不是阿里及阿里云生态合作伙伴的开发者,也可以在自己的日常的开发过程中通过运用可组装式理念提升业务交付效率。
5832 1
云巧组装式交付介绍
|
11月前
|
运维 Cloud Native 数据可视化
阿里云云原生应用组装平台BizWorks满分通过最新评估
阿里云BizWorks满分通过《基于云计算的业务组装平台能力成熟度模型》评测,获得优秀级(最高等级),广东移动联合阿里云BizWorks团队开展的组装式应用实践获得第三届“鼎新杯”数字化转型应用优秀案例一等奖。
475 3
|
运维 数据可视化 搜索推荐
零代码、低代码、全代码的区别
如果您留意过这两年IT行业的新词汇,一定会注意到零代码、低代码这几个新事物。此前,阿里云智能总裁、达摩院院长张建锋在会上表示:未来的软件开发一定是碎片化的,2021年的潮流就是低代码开发,低代码开发将是2021年的行业关键词。从这句话中,我们不难发现,随着低代码、无代码在2021开年的火爆程度,俨然有逐渐成为新风口的趋势。对此,为了帮助大家更快速的了解低代码、无代码、全代码,我特地为大家整理了他们之间的区别,供大家参考学习,希望对大家有所帮助!
4005 1
零代码、低代码、全代码的区别
|
JSON 数据库 数据格式
推荐一款管理系统专用 低 代码工具,一天开发一个系统不是梦
Yao是一款Go语言驱动的低代码应用引擎,目前在Github上已有3.8k+Star!使用该框架,你可以通过JSON完成90%的接口和页面开发,用来开发管理系统正合适!Yao的名字源于汉字爻(yáo),是构成八卦的基本符号,看样子作者对八卦还是挺有研究的。
|
机器学习/深度学习 安全 搜索推荐
如何提升项目交付中软件复用水平
软件复用是软件工程领域一个非常重要的话题,但如何进行有效合理的服用,需要理解复用的本质,并且经过一些顶层设计。本文介绍了不同的软件复用形式,以及各自的优缺点,论述在项目交付场景下合理的复用形式。
29533 20
如何提升项目交付中软件复用水平