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:

  1. Consultar ms-users
  2. Consultar ms-orders
  3. Consultar ms-products
  4. Combinar resultados
  5. 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.