4、BFF架构模式:单BFF模式、多BFF模式(按客户端划分)、BFF与API Gateway的对比

BFF(Backend For Frontend)并非单一实现形态。在实际落地中,根据组织规模、客户端种类和运维粒度,主要演化出单BFF模式和多BFF模式两种架构。同时,BFF与API Gateway在职责边界上常被混淆,本节将系统对比三者的适用场景与核心差异。

4.1 单BFF模式

单BFF模式是指整个系统只部署一个BFF服务,所有前端客户端(Web、iOS、Android、小程序等)共享同一个BFF实例。该模式适合客户端种类少、业务逻辑相对统一的项目初期或中小型团队。

核心特征: 一个BFF服务,多个前端共享;路由、聚合、裁剪逻辑集中管理;部署与运维成本最低。

架构示意

单BFF模式架构 Web 前端 iOS 客户端 Android 客户端 小程序 单 BFF 服务 路由 / 聚合 / 裁剪 / 适配 用户服务 订单服务 商品服务 ...
适用场景: 创业初期、MVP阶段、客户端类型≤2、后端微服务数量≤10。单BFF可快速验证前端聚合效果,避免过早拆分带来的运维负担。

4.2 多BFF模式(按客户端划分)

多BFF模式为每种客户端类型(或每组相似客户端)部署独立的BFF服务。例如:Web BFF、Mobile BFF、小程序BFF。每个BFF只服务于特定客户端,聚合逻辑、数据格式、接口契约完全独立演化。

核心特征: 客户端与BFF一对一绑定;BFF独立部署、独立迭代;前端变更不影响其他客户端;适合大型团队或多终端产品线。

架构示意

多BFF模式架构(按客户端划分) Web 前端 Mobile 客户端 小程序 Web BFF 桌面端聚合 Mobile BFF 移动端聚合 Mini BFF 小程序聚合 用户服务 订单服务 商品服务 ...
注意: 多BFF模式虽然解耦了客户端,但会引入重复代码(如通用聚合逻辑、认证校验)。建议通过共享库(Shared Library)或BFF SDK来复用公共能力,避免每个BFF重复造轮子。

4.3 单BFF vs 多BFF 对比

对比维度 单BFF模式 多BFF模式(按客户端)
部署单元 1个BFF服务 N个BFF服务(N=客户端类型数)
客户端耦合 所有客户端共享,变更互相影响 客户端独立,变更隔离
聚合逻辑 统一聚合,难以针对特定端优化 按端定制,可精细控制数据格式
运维成本 低,1个服务监控、日志、部署 高,N个服务需要独立CI/CD、监控
团队协作 单团队维护,沟通成本低 可按端分配团队,并行开发
适用阶段 初创期、中小规模 成长期、多终端产品线

4.4 BFF与API Gateway的对比

BFF和API Gateway是两种不同职责的中间层,但在实际架构中经常被混淆。API Gateway是全局入口网关,负责跨横切关注点(认证、限流、路由、协议转换);BFF是前端专属适配层,负责数据聚合与UI驱动逻辑。两者可以共存,也可以独立存在。

职责边界对比

对比维度 API Gateway BFF
核心职责 全局流量管理、安全、协议转换 前端数据聚合、裁剪、UI适配
服务粒度 通常为单体网关,面向所有后端 按客户端拆分,面向特定前端
业务逻辑 无业务逻辑,纯基础设施 包含前端业务编排逻辑
变更频率 低,稳定配置为主 高,随前端需求频繁迭代
典型技术 Kong、Zuul、Spring Cloud Gateway Node.js、GraphQL、自定义聚合层
是否必须 大型微服务架构推荐 多前端、多终端场景推荐

典型共存架构

在大型系统中,API Gateway与BFF通常分层共存:请求先经过API Gateway完成认证、限流、路由,再转发到对应的BFF服务,由BFF完成数据聚合后返回给前端。

API Gateway + BFF 分层共存架构 前端客户端 API Gateway(认证 / 限流 / 路由) Web BFF Mobile BFF Mini BFF
最佳实践: 在API Gateway之后部署BFF,可以让Gateway专注基础设施能力(如OAuth2校验、速率限制),BFF专注前端业务聚合。Gateway不感知前端差异,BFF不处理全局安全策略,职责清晰,互不干扰。

4.5 模式选择决策树

在实际项目中,可以通过以下问题快速判断采用哪种BFF模式:

  1. 客户端类型是否超过2种? 是 → 考虑多BFF;否 → 单BFF即可。
  2. 不同客户端的数据展示差异是否显著? 是 → 多BFF更灵活;否 → 单BFF可满足。
  3. 团队是否按端划分? 是 → 多BFF匹配组织架构;否 → 单BFF降低沟通成本。
  4. 是否需要API Gateway? 已有Gateway → BFF放在Gateway之后;无Gateway → 单BFF可兼任简单路由,但建议逐步引入Gateway。
总结: 单BFF模式适合“快而简”,多BFF模式适合“专而稳”。BFF与API Gateway不是二选一,而是分层协作的关系。架构选型应结合客户端数量、团队规模、迭代频率综合判断,避免过度设计。