Architecture systèmeDéveloppeur Fullstack

Décrivez le modèle 'Backend for Frontend' (BFF) : à quoi sert-il, comment est-il mis en œuvre et quelles sont les principales difficultés qui peuvent survenir ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

Le modèle Backend for Frontend (BFF) est utilisé lorsque différentes API ou interfaces doivent être fournies pour divers clients (par exemple, une application mobile, une application Web, des appareils IoT), afin d'optimiser leur interaction avec le backend et de camoufler la complexité interne des microservices. Chaque type de client dispose de son propre serveur BFF, qui met en œuvre une API spécialisée, adaptée au mieux aux besoins du client.

C'est pratique lors de la conception de systèmes complexes — différents BFF permettent :

  • D'agréger ou d'adapter les réponses du backend aux besoins spécifiques de l'interface utilisateur ;
  • D'isoler les changements sur le front des modifications dans les services sous-jacents ;
  • De réduire la charge des clients frontaux en centralisant l'optimisation et l'adaptation des données.

Exemple d'architecture en Node.js :

// Express pour BFF const express = require('express'); const axios = require('axios'); const app = express(); app.get('/profile', async (req, res) => { // Agrégation de données provenant de différents 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);

Caractéristiques clés :

  • Traitement et validation centralisés des données entre le client et les microservices
  • Amélioration des performances et gestion de la sécurité par la personnalisation en fonction du type de client
  • Possibilité de publier rapidement des améliorations pour des plateformes spécifiques sans affecter d'autres parties du système

Questions pièges.

Le BFF est-il juste un proxy entre les clients et les microservices ?

Non. La principale différence entre le BFF et un proxy ordinaire est la présence de logique métier et d'adaptation des données. Le BFF traduit et agrège les données, au lieu de simplement rediriger les requêtes.

Peut-on utiliser un seul BFF pour tous les clients ?

Non, l'un des principes du BFF est de créer un BFF pour chaque type de client. Si l'on utilise un BFF unique, on perd l'optimisation appropriée pour différentes interfaces et types d'appareils.

Le BFF augmente-t-il la faible couplage entre les équipes ?

Il est souvent répondu "oui", mais ce n'est pas le cas : l'ajout d'un BFF renforce généralement le couplage, car le soutien du BFF nécessite un travail commun des équipes frontend et backend, ce qui exige de coordonner les changements.