什么是可组合架构?MACH 与 API 优先指南

告别臃肿的单体系统!本文带你深度解析可组合架构与 MACH 原则,剖析如何通过 API 优先的设计,将独立业务能力像积木一样灵活拼装,打造高弹性、无锁定的现代化企业技术栈。

用 Apifox,节省研发团队的每一分钟

什么是可组合架构?MACH 与 API 优先指南

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

可组合架构是一种构建软件系统的方法,它使用独立、可互换的最佳组件,通过 API 进行通信,而不是使用一个庞大的一体化平台。它是无头(headless)运动背后的更广泛理念,并与 MACH Alliance 紧密相关——这是一个推广开放、可组合企业技术的厂商中立的行业机构。本指南将解释该术语的含义、它与单体架构的区别,以及 API 契约在其中的位置。

首先进行快速概念澄清

“可组合”(composable)这个词出现在三个截然不同的领域。先理清这些概念,有助于更好地理解本指南接下来的内容。

  • 可组合架构(本文主题)是一种软件设计方法。你通过独立的业务组件组装应用程序,每个组件都通过 API 进行集成。
  • 可组合基础设施是一个硬件和数据中心概念。计算、存储和网络资源被池化,并根据需求分配给工作负载。它运行在操作系统之下,而不是在你的应用程序代码中。
  • DeFi 可组合性是一个区块链概念,通常被称为“资金积木”。诸如借贷和兑换协议等智能合约可以相互叠加,从而创建新的金融产品。

同一个词根,三个互不相关的层面。从这里开始,“可组合”指的都是软件架构意义上的概念。

可组合架构的真正含义

一个可组合系统是由模块化、自包含的单元构建而成的,每个单元都拥有完整的业务功能。你为每项工作选择最合适的工具,通过 API 将它们连接起来,并且以后可以替换其中任何一个,而无需重建其周围的所有内容。

这种组合单元有一个名称:封装业务能力(Packaged Business Capability,简称 PBC)。Gartner 将 PBC 定义为可独立部署的能力,其中包含自包含的业务数据、逻辑和流程,并且通过 API 和事件通道与其他应用程序进行交互。

可以把 PBC 想象成一个开箱即用的完整业务领域。例如,“支付” PBC 拥有支付方式、反欺诈检查、退款和争议处理能力;“搜索” PBC 则拥有索引、排序和查询处理能力。每个 PBC 都暴露业务级别的 API,而不是原始的数据库表,你可以向供应商采购,也可以自己构建。就像拼装模型套件一样,你可以通过这些积木式的模块来组合出自己的产品。

可组合架构与单体架构的对比

单体应用将所有功能打包进一个带有共享数据库的单一可部署应用程序中。这在项目初期非常简单,但随着规模增长,修改会变得越来越困难。可组合架构(composable architecture)则将这些功能拆开,以便每个功能都能独立演进。如果你读过关于单体应用与微服务拆分的内容,可组合则是对同一转变的业务能力视角的构建:微服务是技术层面的分解,而 PBC 则是业务领域层面的分解。

以下是直观的对比。

维度 单体应用 可组合架构
变更单元 整个应用程序 单个 PBC
数据 一个共享数据库 每个能力拥有自己的数据
供应商选择 单一平台,全盘接受 每个能力选择最佳组合
前端 与后端耦合 解耦,支持任意数量的渠道
集成 内部函数调用 API 和事件
锁定风险 较低,组件可替换

这种权衡是真实存在的。可组合架构为你带来了灵活性和可替换性,但同时也带来了更多需要集成、监控并保持契约一致的活动部件。

MACH:大多数人所指的标准

当团队说“可组合”时,他们通常指的是遵循 MACH 原则的技术栈。MACH 是一个缩写词,MACH 联盟(成立于 2020 年)将其作为开放、可组合系统的架构进行推广。

  • M,微服务 (Microservices)。 各项能力被构建为小型的、可独立部署的服务,而不是一个整体。
  • A,API 优先 (API-first)。 每一个功能都通过 API 暴露。UI 只是该 API 的一个消费者,而不是唯一的入口。
  • C,云原生 (Cloud-native)。 组件是专为云端构建的,利用弹性伸缩和托管服务。
  • H,无头 (Headless)。 前端与后端分离,因此你可以通过相同的 API 将内容发布到 Web、移动端、自助终端或任何其他渠道。

请注意,可组合(composable)、无头(headless)和 MACH 并不是同义词。无头(headless)只是 MACH 中的一个字母。MACH 是一种特定的、有主见的构建可组合系统的方式。而可组合则是涵盖所有这些概念的伞形术语。

可组合企业 vs 可组合架构

这两个术语经常被混用,但它们处于不同的层面。可组合企业(composable enterprise)是业务模型层面的构建。它是指围绕可重用的业务能力组织整个公司,每种能力都通过 API 暴露,以便团队能够重新组合它们来发布产品并应对变化,而无需从头重构。Gartner 推广了这一观点,这也是 PBC 和 MACH 风格组装的来源:将支付、搜索、库存等视为业务拥有并可重复使用的构建块。

可组合架构是该战略底层的技术实现。它是具体的技术软件设计(微服务、API、无头前端、可插拔组件),能够让这些业务能力落地并实现重新组合。可组合企业是目标,而可组合架构是实现这一目标的手段。你可以将可组合企业架构视为两者之间的桥梁:它是将业务战略转化为运行系统的架构蓝图。

API 优先的核心支柱

顺着这些线索探寻,你都会得出同一个结论:API 是将可组合系统连接在一起的集成层。如果组件是独立的,并且各自拥有自己的数据,那么连接它们的唯一纽带就是它们之间的契约。

这就是为什么 API 优先开发是一个不可动摇的支柱。在单体应用中,两个模块可以访问同一个数据库并直接调用彼此的函数。但在可组合系统中,这种捷径不复存在。一项能力的价值取决于它所暴露的 API,而一个系统的稳定性则取决于其各个部分之间契约的稳定性。

这也是 API 不再仅仅是“侧门”,而是转变为产品本身的时刻。当前端是无头的且能力是可替换的时,API 就是其他团队和合作伙伴实际消费的产品。设计稍有不慎,下游的每一个消费者都会深受其害。

优势与权衡

简而言之,采用可组合架构的理由如下:

  • 最佳组合。 针对每种能力选用最强大的工具,而不是妥协于单一供应商最薄弱的模块。
  • 独立变更。 替换或升级单个打包业务能力(PBC),而无需影响其他部分。
  • 减少锁定。 可替换的组件意味着你不会被绑定在单一平台上。
  • 团队并行。 解耦的能力使各个团队能够按照自己的排期进行发布。
  • 多渠道支持。 无头前端允许一套 API 为多个不同的界面提供服务。

然而,这也伴随着真实的成本:

  • 集成开销。 组件越多,意味着需要连接和监控的链路就越多。
  • 契约约束。 单个 API 的破坏性变更可能会波及调用它的所有组件。
  • 运维复杂度。 监控、auth 以及版本控制需要跨越多个服务,而不是集中在单个服务中。
  • 前期设计。 在发布之前,你需要花费更多的时间来确定边界和契约。

当需要灵活性、扩展性和多渠道支持时,可组合架构非常适用。但如果一个精心构建的单体应用就能满足需求,那么使用可组合架构就有些大材小用了。

Apifox 的定位:API 优先的支柱

Apifox 并不能直接让你的架构变成可组合的。它不是 CMS、电商引擎、API 网关,也不是 MACH 平台,无法替代这些系统。它的作用是主导 MACH 架构中的“A”(即 API 优先这一支柱),这也是可组合系统中所有其他部分都依赖的底层基础。

因为 API 是独立组件之间唯一的接口,所以契约必须准确无误。Apifox 就是你设计、测试、mock 并为此契约编写文档的地方:

  • 文档模式的契约。 在编写具体实现之前,将每个能力的 API 定义为 OpenAPI 契约,以便消费者和提供者在前期就其结构达成一致。
  • Mock 服务端。 解耦的团队不应该相互等待。Mock 服务端允许前端或合作伙伴在后端 PBC 仍在构建时,直接基于契约进行开发。
  • 无头测试执行。 Apifox CLI 可以在没有 GUI 的情况下直接在 CI 中运行你的 API 测试。这在概念上与“无头”完美契合——测试基于契约运行,而不是通过屏幕界面。
  • 通过你的工具进行管理。 通过 MCP,你可以从 AI Agent 或 IDE 中驱动你的 API 项目。

如果你的系统遵循“API 即产品”的模式,这就是确保契约真实可靠的质量保障层。下载 Apifox,在后端尚未存在时即可设计并 mock 契约。

何时采用可组合架构

当满足以下多个条件时,可以考虑采用可组合架构:

  • 你需要通过共享逻辑为多个渠道(Web、移动端、店内、语音)提供服务。
  • 不同的能力以极不相同的速率发生变更,而你已经厌倦了为了一个小修补而重新部署所有内容。
  • 你希望针对每个能力选择业界最佳(best-of-breed)的供应商,而不是采用单一的套件。
  • 供应商锁定对你而言是一个真正的业务风险。
  • 你拥有随着时间推移来维护 API 契约和集成的团队与规范。

如果你是一个在紧张的时间线内交付单一产品的小团队,选择一个干净的单体架构(monolith)通常是更明智的决定。可组合架构的复杂度只有在规模化时才能体现其价值。

常见问题解答

可组合架构与微服务是一回事吗?

不完全是,但它们有重叠。微服务是一种将系统分解为小型可部署服务的技术方式。而可组合架构则是沿着业务能力(PBC)进行分解,并引入了由 API 连接的、可替换的业界最佳组件的概念。微服务通常是构建可组合系统后端的方式。有关更广泛的区别,请参阅单体架构与微服务的对比(monolith versus microservices)。

可组合(composable)与无头(headless)有什么区别?

无头(headless)意味着前端与后端分离,因此任何客户端都可以消费相同的 API。而可组合(composable)是更广泛的方法:将独立且通过 API 连接的能力组装成一个完整的系统。无头是可组合系统通常遵循的一个原则(即 MACH 中的 “H”)。你可以在某一个能力上实现无头,而不需要在整个技术栈中实现完全的可组合。

可组合企业(composable enterprise)与可组合架构是一回事吗?

并非完全如此,尽管它们是从不同角度来描述同一种转变。可组合企业(composable enterprise)是商业模式层面的定义:企业围绕可复用的、通过 API 暴露的打包业务能力(PBC)进行组织,各团队以 MACH 风格对其进行组装,以实现快速交付和适应。可组合架构(composable architecture)则是使之成为可能的底层技术实现,包括底层的微服务、API 和无头(headless)前端。而可组合企业架构(composable enterprise architecture)则是人们用来连接这两者的蓝图。

什么是打包业务能力(PBC)?

PBC 是一个包含完整业务功能(包括其数据、逻辑和 API)的自包含单元。Gartner 将 PBC 描述为可独立部署的能力,通过 API 和事件通道与其他应用程序进行交互。“搜索”、“支付”或“库存”组件,各自暴露业务级别的 API,就是典型的 PBC。

转向可组合架构需要 API 平台吗?

你需要一种方法来设计、测试并保持 API 契约的稳定性,因为这些契约是连接独立组件的唯一纽带。这可以是一套分散的工具,也可以是一个集设计、mock、测试和文档于一体的统一平台。其核心在于对契约规范的遵守,而非某一个具体的产品。

总结

可组合架构是“属”,而无头(headless)、MACH 和微服务是其下的“种”。其核心主线很简单:独立的能力、对最佳工具组合的选择,以及作为连接纽带的 API。最后这一点正是风险最集中的地方,因为契约即系统。通过像 Apifox 这样的工具做好 API 设计、mock、测试和文档,可组合架构的其他承诺(可替换、多渠道、无厂商锁定)才能拥有坚实的基础。

开发必备:API 全流程管理神器 Apifox

介绍完上文的内容,我想额外介绍一个对开发者同样重要的效率工具 —— Apifox。作为一个集 API 文档、调试、设计、测试、Mock、自动化测试于一体的工具,Apifox 是目前提升研发效率的首选。

如果你正在开发项目,不妨试试其极其友好的界面设计,它完全兼容 Postman 和 Swagger 数据格式,导入数据非常方便,,即使是新手也能很快上手,点击这里即可注册使用

Apifox

值得一提的是,除了个人和常规团队使用,针对有高安全合规要求、或需要在内网环境协作的企业,Apifox 还提供了深度定制的私有化部署方案

获取专属报价与部署方案

icon 详细的私有化部署系统架构与安全白皮书
icon 针对您公司规模的专属报价单
icon 免费的 1v1 专属产品演示 (Demo) 机会
获取部署方案
* 提交后,我们的客户经理将在 1 个工作日内与您联系
林俊锋 企业微信
@Apifox 专属顾问
扫码备注: 私有化 + 公司名