Architecture systèmeDéveloppeur Backend

Comment réaliser des requêtes dans une architecture distribuée en utilisant le modèle de composition d'API ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

Modèle de Composition d'API est utilisé lorsque les données pour l'interface utilisateur ou un service externe doivent être agrégées à partir de différents microservices. Cela se réalise par le biais d'une couche de coordination (API Composer), qui collecte les données nécessaires via des requêtes distinctes aux services requis et forme la réponse finale.

Souvent, cette couche est réalisée comme un service distinct, une passerelle ou un BFF (Backend For Frontend), assurant l'agrégation, la transformation et la gestion des erreurs. Cette solution réduit les appels réseau superflus et isole les clients des changements des API internes.

Exemple de code (en Node.js + Express) :

const axios = require('axios'); app.get('/user-details/:id', async (req, res) => { const user = await axios.get(`http://usersvc/user/${req.params.id}`); const orders = await axios.get(`http://ordersvc/orders/user/${req.params.id}`); res.json({ user: user.data, orders: orders.data }); });

Caractéristiques clés :

  • Transformation et agrégation des données provenant de différents services dans une seule API
  • Isolement des clients des détails de l'architecture interne des microservices
  • Scalabilité en déchargeant la charge sur une couche distincte

Questions pièges.

La composition d'API est-elle toujours le meilleur moyen d'agréger des données à partir de microservices ?

Non, avec un grand nombre d'entités liées et des connexions lentes, les performances peuvent en pâtir. Dans certains cas, il est préférable d'utiliser CQRS ou des services d'agrégation de données.

Peut-on accéder directement depuis le front à chaque microservice ?

Dans les petits systèmes, cela est possible, mais à mesure que le système croît, des questions de sécurité, de gestion des schémas, de scalabilité et de surcharge de la logique d'agrégation du front surgissent. Par conséquent, une couche d'agrégation centralisée est préférable.

La composition d'API assure-t-elle l'intégrité transactionnelle entre les services ?

Non. Ce modèle n'agrège que les données pour la requête. La transactionnalité doit être mise en œuvre via des sagas ou des mécanismes d'événements.