1. 什么是BFF?
BFF(Backend For Frontend)层基本上是一个编排器层(orchestrator layer),也称为前端的后端。当编排器层包括聚合、计算、某些数据的组合时,它就不仅仅是一个简单的 API 网关。由于大多数公司出于一些原因(可扩展性、开发成本、可维护性等)而转向微服务架构。因此,考虑到每个客户端都有不同的规范和不同的数据要求,每个微服务都很难为其每个客户端提供准确的 API。
简单来说:BFF会根据不同的客户端需求,提供不同的接口。
传统开发模式
BFF开发模式
2. 什么是指标系统?
指标系统是指标的统一入口,通过定义原子、派生和复合指标,明确指标业务口径和技术口径,解决指标定义不一致、口径不一致和数据来源不一致的问题,实现规范定义,助力数据模型规范设计。
简单来说:指标系统对外提供统一口径的指标,助力其他系统查询。
传统指标体系
指标系统体系
3. 新的架构设计是怎样的?
目前我们已基于BFF+指标系统这一套进行初步实践,只是以前对于服务的边界与层次划分的并清晰。
因此,我通过阅读相关的资料,对其未来的架构进行简要设计:
- Customer: 应用层,指各种用户端的前台应用程序。
- BFF(metric-client): 前端的后端,也是指标系统的客户端,主要是针对查询出来的指标数据进行组合,并封装成前端需要的数据结构并返回。基于这一层,老板通确实已经抽象出了指标配置平台,但目前这个平台只供老板通前台调用,对于其他应用等并不通用。未来如果想做成基础平台,这块一定要做成通用的。
- Metric-Server:指标平台,对外提供指标管理与查询相关的接口。目前指标的管理功能还冗余在代码中,这块如果想做的易用,一定要做成Web端可配置的平台。
引用:
springboot整合graphQL:http://git.hualala.com/bigdata-laobantong/springboot-graphql
BFF介绍: https://www.cnblogs.com/qianxingmu/p/16030910.html
标准化思想及组装式架构在后端BFF实践:https://tech.meituan.com/2022/04/28/composable-architecture-in-bff-2022.html