¿Qué es el Backend para Frontend (BFF)?
BFF (Backend for Frontend): patrón que crea un backend a medida para cada tipo de cliente (web, móvil, terceros). Ventajas, riesgos y cuándo usarlo.
¿Qué es el patrón BFF?
Backend para Frontend (BFF), del inglés Backend for Frontend, es un patrón arquitectónico que consiste en crear un servicio backend específico y a medida para cada tipo de interfaz cliente: uno para la web, otro para la app móvil, otro para integraciones de terceros, etc. En lugar de un único backend genérico que sirva a todos por igual, cada frontend habla con un backend pensado exactamente para sus necesidades.
El patrón fue formalizado por Sam Newman y popularizado por el equipo de SoundCloud, que necesitaba servir de forma eficiente a clientes muy distintos (web de escritorio y aplicaciones móviles) sin sobrecargar a ninguno con datos que no usaba.
Para qué sirve
El problema que resuelve el BFF aparece cuando un mismo backend tiene que satisfacer a frontends con requisitos muy diferentes. Una app móvil quiere respuestas ligeras, con pocos campos y pocas llamadas (porque la red es lenta y la batería importa). Una web de escritorio puede permitirse respuestas más ricas. Un cliente de terceros necesita un contrato estable y versionado.
Forzar a todos a usar la misma API genérica produce respuestas infladas, llamadas innecesarias y un backend lleno de condicionales por tipo de cliente. El BFF da a cada frontend justo lo que necesita, ni más ni menos.
Cómo se implementa
El BFF introduce una capa intermedia entre los frontends y los servicios de negocio (o microservicios). Cada BFF:
- Recibe las peticiones de su frontend concreto.
- Orquesta llamadas a los servicios downstream (varios microservicios, bases de datos, APIs externas).
- Agrega y transforma los datos en el formato exacto que ese frontend espera (aggregation), evitando que el cliente haga múltiples llamadas.
- Devuelve una respuesta a medida, sin campos sobrantes.
Es habitual que el equipo que desarrolla cada frontend sea también el dueño de su BFF, lo que reduce la coordinación entre equipos y acelera los cambios.
BFF vs API Gateway
El BFF se confunde a menudo con un API Gateway, pero resuelven problemas distintos:
| Aspecto | API Gateway | BFF |
|---|---|---|
| Cuántos hay | Uno solo para todo el sistema | Uno por tipo de frontend |
| Propósito | Punto de entrada único, enrutado, auth, rate limiting | Adaptar datos a un cliente concreto |
| Lógica | Genérica y transversal | Específica de un frontend |
| Dueño | Equipo de plataforma | Equipo del frontend |
No son excluyentes: muchos sistemas usan un API Gateway como punto de entrada y varios BFF detrás, cada uno especializado en su cliente.
Beneficios
- Mejor rendimiento por cliente: cada frontend recibe respuestas optimizadas para su contexto (menos datos, menos llamadas en móvil).
- Independencia de los equipos: el equipo de cada frontend evoluciona su BFF sin pisar a los demás ni esperar a un backend compartido.
- Frontends más simples: la lógica de agregación y transformación vive en el BFF, no en el cliente.
- Evolución desacoplada: cambiar la app móvil no obliga a tocar la web ni el backend principal.
- Seguridad afinada: cada BFF expone solo lo que su frontend necesita, reduciendo la superficie de ataque.
Riesgos y cuándo no usarlo
El BFF no es gratis. Sus principales contrapartidas:
- Duplicación de lógica: código parecido repetido en varios BFF si no se factoriza bien lo común.
- Más servicios que mantener: cada BFF es un despliegue, una pipeline y un punto de fallo más.
- Sobreingeniería: si solo tienes un frontend, un BFF añade complejidad sin beneficio.
El patrón brilla cuando hay varios clientes con necesidades divergentes (típicamente web + móvil + terceros). Con un único cliente, suele ser preferible una API bien diseñada.
Preguntas frecuentes
¿Cuándo conviene introducir un BFF?
Cuando empiezas a llenar tu backend de condicionales del tipo "si es móvil devuelve esto, si es web devuelve aquello", o cuando un frontend tiene que hacer muchas llamadas y combinar datos a mano. Son señales de que cada cliente pide algo distinto.
¿Un BFF es un microservicio?
Funcionalmente se parece (es un servicio desplegable de forma independiente), pero su rol es de adaptación y orquestación para un frontend, no de implementar lógica de negocio de dominio.
¿Cuántos BFF debería tener?
Lo habitual es uno por experiencia de cliente claramente diferenciada: uno para web, uno para móvil, uno para integraciones públicas. Crear un BFF por pantalla o por equipo suele ser excesivo.
¿Quieres saber más?
Si te interesa saber más acerca de Backend para Frontend - BFF, hablemos. Me encanta compartir ideas y ayudar a equipos con estos temas. ¡Te leo!
¿Qué es una IA local?
Una IA local es un modelo que se ejecuta en tu propio equipo, sin enviar lo...
¿Qué es el Bus Factor o Factor de Autobús?
El factor de autobús es una métrica que mide la dependencia de un proyecto...
¿Qué es la facilitación?
La facilitación es la práctica de proporcionar la información, recursos y a...
¿Qué es el engagement?
El engagement del cliente es el mantenimiento de una buena relación entre u...
¿Qué es DeepSeek?
DeepSeek es una startup china de inteligencia artificial fundada en 2023 en...