API Composition(API Aggregation)
MSA에서 서비스 간 API 호출이 잦아지면, 이로 인해 오버헤드가 발생하게 된다. 서비스가 잘게 나누어질수록 클라이언트에서 호출해야하는 API가 많아져 호출 빈도도 높아지고 클라이언트에서도 코드가 길어져 부담이 된다.
API Composition은 이런 잘게 쪼개진 여러 API의 응답들을 모아서 받아주는 역할을 한다. 클라이언트에서 API Composer로 요청을 하면, API Composer에서는 각 마이크로 서비스에 필요한 요청을 보내고 데이터를 조합해 클라이언트에 응답을 보낸다.
클라이언트에서는 간편하게 호출할 수 있지만, 인메모리에 데이터들을 가져와 조합하는 방식이기 때문에 비효율적이라는 단점이 있다.
API Composition 위치
API Composition을 어디서 하느냐에 대한 것도 중요하다.
1.
클라이언트
클라이언트 단에서 직접 API Composition을 수행하는 방식이다. 세 가지 API Composition 방식 중 가장 느리지만, 데이터 표현 형태가 가장 유연하고 반드시 순차적으로 API 호출이 수행되어야 하는 경우에 적합하다.
2.
서버
서버에서 API Composition을 수행하는 방식이다. 클라이언트 호출 방식보다 빠르지만 MSA의 결합도가 높아질 수 있다.
3.
API Gateway
클라이언트와 서버 사이에 API Gateway를 두고, Gateway에서 서비스를 중개하는 방식이다. 종속성을 낮출 수 있고 이벤트 방식을 통해 개발 생산성을 높일 수 있다. MSA의 Outer 영역의 Gateway가 가장 핵심적인 컴포넌트로, Outer Architeture로 인해 구축 및 유지보수 비용이 추가 될 수 있다.