Architekt systemówProgramista Backend

Jak zrealizować zapytania w architekturze rozproszonej z wykorzystaniem wzorca kompozycji API?

Zdaj rozmowy kwalifikacyjne z asystentem AI Hintsage

Odpowiedź.

Wzorzec Kompozycji API jest używany, gdy dane dla frontendu lub zewnętrznej usługi muszą być agregowane z różnych mikroserwisów. Realizuje się to przez warstwę koordynacyjną (API Composer), która zbiera potrzebne dane za pomocą oddzielnych zapytań do odpowiednich usług i formuje ostateczną odpowiedź.

Często ta warstwa jest realizowana jako osobna usługa, Gateway lub BFF (Backend For Frontend), zapewniająca agregację, transformację i obsługę błędów. Takie rozwiązanie redukuje nadmiarowe wywołania sieciowe i izoluje klientów od zmian wewnętrznych API.

Przykład kodu (na 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 }); });

Kluczowe cechy:

  • Transformacja i łączenie danych z różnych usług w jednym API
  • Izolacja klientów od szczegółów wewnętrznej architektury mikroserwisów
  • Skalowalność poprzez przeniesienie obciążenia na osobną warstwę

Pytania z podchwytliwymi odpowiedziami.

Czy kompozycja API zawsze jest najlepszym sposobem łączenia danych z mikroserwisów?

Nie, przy dużej liczbie powiązanych encji i wolnych połączeniach wydajność może ucierpieć. W niektórych przypadkach lepiej jest używać CQRS lub usług agregatorów danych.

Czy można bezpośrednio odwoływać się z frontu do każdego mikroserwisu?

W małych systemach jest to możliwe, ale wraz z rozwojem systemu pojawiają się kwestie bezpieczeństwa, zarządzania schematami, skalowalności i obciążenia frontu logiką agregacji. Dlatego preferowana jest zcentralizowana warstwa agregacji.

Czy kompozycja API zapewnia transakcyjną integralność między usługami?

Nie. Ten wzorzec agreguje tylko dane dla zapytania. Transakcyjność należy realizować za pomocą sag lub mechanizmów zdarzeń.