Backend For Frontend

De vertaallaag
die alles soepeler maakt

Een 'Backend for Frontend' (BFF) is een specifieke API-laag die uitsluitend is ontworpen om één enkele gebruikersinterface te bedienen, zoals een mobiele app of een webapplicatie. Het systeem fungeert als een persoonlijke conciërge: in plaats van dat je applicatie meerdere back-endsystemen moet raadplegen, verzamelt en bundelt de BFF precies de gegevens die de app nodig heeft in één enkel verzoek.

Het probleem

Waarom een generieke API
niet werkt voor apps

Stel je een monolithische backend voor die ooit voor de webapplicatie is gebouwd. Die API retourneert grote JSON-objecten met tientallen velden, omdat de webapplicatie die nodig heeft. Je mobiele app heeft er echter maar drie nodig.

Het gevolg: over-fetching, under-fetching en een mobiele app die afhankelijk is van de capaciteitsplanning van een backend-team met andere prioriteiten. Een BFF biedt hiervoor de oplossing. Het is een lichtgewicht, snelle service die precies de data samenstelt die de app nodig heeft. Niet meer, niet minder.
Architectuur

Hoe een BFF is opgebouwd

Patroon
API-aggregatie
Orchestration
De BFF roept meerdere downstream-services aan en combineert de responses tot één geoptimaliseerde payload voor de app. Fan-out met parallelle calls, fan-in tot één response.
Protocol
GraphQL als BFF-laag
Apollo Server · Pothos · DataLoader
GraphQL is een uitstekende keuze voor BFF’s: de app vraagt precies wat zij nodig heeft, de BFF lost queries op via bestaande REST-services. DataLoader voorkomt N+1-problemen.
Protocol
REST-BFF
Express · Fastify · Hono
Wanneer GraphQL overkill is: een slanke REST-BFF gebouwd met Fastify of Hono. Endpoint per scherm, heldere contracten, eenvoudig te cachen en te monitoren.
Caching
Response Caching
Redis · In-memory · CDN Edge
De BFF is de ideale plek voor caching. Veelgevraagde data wordt gecached in Redis of in-memory. Statische responses worden via CDN edge-cached voor minimale latency.
Auth
Authenticatiegateway
JWT · OAuth2 · Session tokens
De BFF valideert tokens voordat requests downstream gaan. Eén plek voor auth-logica, niet verspreid over tien services. Tokentranslatie voor legacy-systemen.
Resilience
Circuit breaker en retry
opossum · p-retry · timeouts
Wanneer een downstream service uitvalt, kapt de circuit breaker de calls af en retourneert cached of lege data. De app blijft functioneel, ook als de backend het moeilijk heeft.
Onze BFF stack

Wat we regelmatig gebruiken

Runtime
Node.js · Bun
Subtitle
Node.js voor de meeste projecten vanwege het ecosysteem. Bun voor projecten waarbij pure performance het verschil maakt.
Framework
Fastify · Hono · Apollo
Subtitle
Fastify voor high-performance REST-BFF’s. Hono voor edge-deployment. Apollo Server voor GraphQL-BFF’s.
Type safety
TypeScript · Zod · tRPC
Subtitle
TypeScript door de hele stack. Zod voor runtime-validatie van requests en responses. tRPC voor type-safe end-to-end contracts tussen BFF en app.

Een BFF is geen extra laag overhead.
Het is de afbakening die voorkomt dat je app-team wacht op het backendteam.

Cases

BFF in de praktijk