Het Backend for Frontend (BFF) patroon wordt toegepast wanneer verschillende API's of interfaces voor verschillende klanten (bijvoorbeeld mobiele toepassingen, webtoepassingen, IoT-apparaten) moeten worden aangeboden om hun interactie met de backend te optimaliseren en de interne complexiteit van microservices te verbergen. Elke type klant krijgt zijn eigen BFF-server, die een gespecialiseerd API implementeert, dat het beste aansluit bij de behoeften van de klant.
Dit is handig bij het werken aan grote systemen — verschillende BFF's maken het mogelijk:
Voorbeeldarchitectuur op Node.js:
// Express voor BFF const express = require('express'); const axios = require('axios'); const app = express(); app.get('/profile', async (req, res) => { // Gegevensaggregatie uit verschillende services const [user, settings] = await Promise.all([ axios.get('http://user-service/api/user'), axios.get('http://settings-service/api/settings') ]); res.json({ name: user.data.name, theme: settings.data.theme }); }); app.listen(3000);
Belangrijkste kenmerken:
Is BFF simpelweg een proxy tussen klanten en microservices?
Nee. Het belangrijkste verschil tussen BFF en een gewone proxy is het aanwezig zijn van bedrijfslogica en gegevensadaptatie. BFF vertaalt en aggregeert gegevens, en leidt niet alleen verzoeken om.
Kan één BFF voor alle klanten worden gebruikt?
Nee, een van de principes van BFF is het toewijzen van een BFF voor elk type klant. Als er één BFF wordt gebruikt, gaan de voordelen van optimale afstemming voor verschillende interfaces en typen apparaten verloren.
Verhoogt BFF de zwakke koppeling tussen teams?
Vaak antwoorden mensen "ja", maar dat is niet het geval: het toevoegen van BFF versterkt meestal de koppeling, omdat het onderhoud van BFF samenwerking vereist tussen frontend- en backend-teams, wat coördinatie van wijzigingen vereist.