Skip to content

BFF

传统的开发模式通常是前后端分离,后端提供接口,前端通过接口与之通信。但是,随着业务的发展,前后端分离的架构会遇到一些问题:

  • 后端微服务演进的过程中,前端的一个页面要请求多个接口,开发效率低并且数据加载慢;
  • 后端的开发标准和前端不一致,数据字段命名不一样、数据模型不统一、返回的信息有冗余,或者同一个地方的数据被后端拆分成了多个服务,前端需要拼接得到某一段 JSON;
  • 后端有的逻辑可能和 UI 强相关,导致后端服务耦合

Any problem in computer science can be solved by another layer of indirection.

解决办法就是在前后端加一层适配层,即 BFF(Backend For Frontend)。这个中间件可以屏蔽后端服务的差异,让前端可以专注于 UI 的开发,后端可以专注于业务逻辑的开发,做到前后端解耦。它可以提供统一的接口,实现接口聚合、字段裁剪、数据规范等操作。

涉及到了两个概念——DO 和 VO,BFF 可以将多个后端返回的 Data Object 合并处理为前端需要的 View Object。

领域具体措施
研发成本1. 多端适配,减少重复开发
2. 减少前端业务逻辑、数据加工,减少版本更新次数,提高运行速度,减少包大小
研发流程1. 降低前后端协同成本,提升前后端开发体验
性能1. 减少串行 HTTP 请求,提高用户侧响应速度(但不绝对)
服务治理1. 在 BFF 层进行请求并行化改造、字段裁剪、字段映射、安全校验等
2. 屏蔽底层实现细节,提供统一接口,方便底层服务迁移