BFF
Una capa que adapta el backend a las necesidades del frontend, agregando y transformando datos para mejorar la experiencia del cliente.
¿Qué es un BFF?
BFF significa Backend for Frontend. Es una capa intermedia pensada para servir a un canal o interfaz concreta, como una SPA web, una app móvil o un portal administrativo.
Su trabajo no es reemplazar a los microservicios, sino traducir su complejidad en respuestas más útiles para la UI.
¿Qué problema resuelve?
Imagina un frontend que necesita:
- datos de usuario
- datos de pedidos
- datos de productos recomendados
- métricas o estado adicional
Sin BFF, el cliente podría verse obligado a:
- llamar a varios servicios
- entender formatos distintos
- combinar respuestas
- manejar errores distribuidos
- acoplarse a detalles internos
El BFF reduce esa complejidad.
Responsabilidades principales
Agregación de datos
Combinar información de varios servicios en una única respuesta.
Transformación a DTOs de UI
Entregar datos en un formato útil para pantallas concretas.
Optimización de payload
Reducir llamadas innecesarias y simplificar respuestas.
Caching de lectura
Guardar respuestas frecuentes para mejorar latencia y reducir carga.
Orquestación simple
Coordinar llamadas entre servicios cuando el frontend necesita una visión compuesta.
Qué no debería hacer
No debería contener la lógica central del negocio
Puede coordinar y transformar, pero no convertirse en la capa donde vive el dominio.
No debería reemplazar a los microservicios
Los servicios siguen siendo responsables de las reglas de negocio.
No debería crecer sin control
Un BFF mal gobernado puede terminar siendo un “backend monolítico para la UI”.
Cuándo aporta más valor
El BFF es especialmente útil cuando:
- el frontend necesita datos de varios servicios
- hay optimización específica por canal
- quieres evitar múltiples requests desde cliente
- necesitas DTOs pensados para UI
- tienes varios canales con necesidades distintas
BFF único vs múltiples BFFs
En algunos sistemas basta con un único BFF. En otros, puede tener sentido separar:
- BFF web
- BFF mobile
- BFF admin
La decisión depende de cuán diferentes sean las necesidades de cada canal.
REST o GraphQL
Un BFF puede implementarse con:
- REST
- GraphQL
- combinación de ambos
GraphQL suele ser atractivo cuando hay agregación compleja y necesidad de controlar exactamente qué campos consume la UI. REST puede ser suficiente y más simple en muchos contextos.
Ejemplo práctico
Supongamos la pantalla inicial de un e-commerce.
La UI necesita:
- perfil del usuario
- pedidos recientes
- productos recomendados
El BFF puede:
- Consultar
ms-users - Consultar
ms-orders - Consultar
ms-products - Combinar resultados
- Devolver un DTO listo para renderizar
Así el frontend hace una sola llamada y recibe una respuesta adaptada a su necesidad.
Resumen
El BFF existe para adaptar el backend al frontend. Su valor está en simplificar la UI, agregar respuestas y reducir acoplamiento, no en absorber la lógica principal del dominio.