Introducción: Backends por cliente
BFF crea backend específico para cada cliente (web, móvil, partners). Sin BFF: una API para todos (compromiso). Mobile necesita datos comprimidos, web necesita relaciones full, desktop batch. Con BFF: cada cliente su propio backend. Mobile BFF retorna comprimido. Web retorna full. Cada BFF adapta a cliente. Ventaja: mejor UX per client. Desventaja: multiplicar backends (maintenance). Usa cuando clients tienen necesidades diferentes (mobile vs web).

Prompt: BFF layers per client, clean minimal style.
1. Naturaleza: Menús personalizados
Un restaurante ofrece menús distintos para desayuno, almuerzo y cena.
El mismo “backend” ajusta la oferta según el cliente y el contexto.

Prompt: Different menus for different customers, soft illustration.
2. Mundo Real: Web vs Mobile
La web necesita vistas ricas; el móvil prioriza payloads livianos.
Un BFF para móvil agrega y simplifica datos, mientras el BFF web expone más detalle.

Prompt: Web and mobile tailored APIs, clean flat style.
3. Implementación en C#: Código Paso a Paso
// BFF Mobile
app.MapGet("/mobile/home", async () =>
{
var feed = await servicios.GetFeed();
return new { feed, limit = 20 };
});
El BFF debe ser delgado: solo orquesta y adapta, no concentra lógica de negocio.
Usa contratos versionados para evitar romper clientes antiguos.
4. BFF vs Gateway único
Gateway único sirve a todos; BFF crea backends por cliente.
Si tus UIs son muy distintas, BFF reduce fricción. Si son similares, un gateway puede bastar.
5. Diagrama UML

Prompt: UML diagram of BFF pattern, clean vector layout.

Prompt: BFF flow diagram, minimal infographic style.
⚠️ Cuándo NO Usar BFF
- Si solo tienes un cliente o UIs muy similares.
- Si no puedes mantener múltiples capas de backend.
- Si el equipo no tiene autonomía para gestionar cada BFF.
💪 Ejercicio
Diseña un BFF móvil que consolide datos de pedidos y tracking en un solo endpoint.
Conclusión
BFF mejora la experiencia del cliente al ofrecer APIs específicas y optimizadas.
Es ideal cuando existen múltiples UIs con necesidades distintas.