API 조합 패턴은 프론트엔드 또는 외부 서비스에 필요한 데이터를 여러 마이크로서비스에서 집계해야 할 때 사용됩니다. 이는 필요한 서비스에 대한 개별 요청을 통해 필요한 데이터를 수집하고 최종 응답을 형성하는 조정 계층(API Composer)을 통해 구현됩니다.
이 계층은 종종 별도의 서비스, 게이트웨이 또는 BFF(백엔드 포 프론트엔드)로 구현되어 집계, 변환 및 오류 처리를 제공합니다. 이러한 솔루션은 중복 네트워크 호출을 줄이고 내부 API의 변경으로부터 클라이언트를 격리합니다.
코드 예시 (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 }); });
주요 특징:
API 조합이 항상 마이크로서비스의 데이터를 통합하는 가장 좋은 방법인가요?
아니요, 관련 엔티티가 많고 연결이 느릴 경우 성능이 저하될 수 있습니다. 특정 경우에는 CQRS 또는 데이터 집계 서비스 사용이 더 나을 수 있습니다.
프론트엔드에서 각 마이크로서비스에 직접 접근할 수 있나요?
작은 시스템에서는 가능하지만 시스템이 커짐에 따라 보안, 스키마 관리, 확장성 및 프론트엔드의 집계 로직 부담과 관련된 문제가 발생합니다. 따라서 중앙집중형 집계 계층이 선호됩니다.
API 조합이 서비스 간의 트랜잭션 무결성을 보장합니까?
아니요. 이 패턴은 요청에 대한 데이터만 집계합니다. 트랜잭션 처리는 사가 또는 이벤트 메커니즘을 통해 구현해야 합니다.