1) API 게이트웨이 패턴이란?
- 여러 클라이언트가 여러 개의 서버 서비스를 각각 호출하게 된다면
매우 복잡한 호출 관계가 만들어질 것이다.
이러한 복잡성을 통제하기 위한 방법이 필요하다.
- 한 가지 해결책은 API 게이트웨이(Gateway)다.
다양한 클라이언트가 다양한 서비스에 접근하기 위해서는 단일 진입점을 만들어 놓으면
여러모로 효율적이다.
다른 유형의 클라이언트에게 서로 다른 API 조합을 제공할 수도 있고,
각 서비스에 접근할 때 필요한 인증/인가 기능을 한 번에 처리할 수도 있다.
- 또 정상적으로 동작하던 서비스에 문제가 생겨
서비스 요청에 대한 응답 지연이 발생하면
정상적인 다른 서비스로 요청 경로를 변경하는 기능이 작동되게 할 수도 있다.
- 이러한 서비스 흐름 제어를 위한 서비스 라우팅 기능은 L4 같은 하드웨어 장비로 구현할 수도 있고,
소프트웨어로 구현할 수도 있는데,
소프트웨어로 구현할 경우 API 게이트웨이가 애플리케이션 레벨의 라우팅 기능을 수행한다.
- 또한, 여러 인스턴스로 부하를 분산하는 로드 밸런싱도 수행하고,
라우팅 시 필터를 둬서 라우팅 전과 후에 각각 수행되는 선행 처리와 후행 처리,
에러 처리 등을 손쉽게 구현할 수 있다.
- 정리하면 API 게이트웨이는 다른 서비스와 연계해서 다음과 같은 기능을 제공한다.
(1) 레지스트리 서비스와 연계한 동적 라우팅, 로드 밸런싱
(2) 보안: 권한 서비스와 연계한 인증/인가
(3) 로그 집계 서비스와 연계한 로깅. ex) API 소비자 정보, 요청/응답 데이터
(4) 메트릭 ex) 에러율, 평균/최고 지연시간, 호출 빈도 등
(5) 트레이싱 서비스와 연계한 서비스 추적 ex) 트래킹 ID 기록
(6) 모니터링 서비스와 연계한 장애 격리(서킷 브레이커 패턴)
- 이러한 API 게이트웨이 패턴은 스프링 클라우드의 스프링 API 게이트웨이 서비스
라는 제품으로 구현할 수 있다.
스프링 게이트웨이 서비스는 스프링 웹사이트에서 내려받가 간단한 스프링 애너테이션 설정만으로
손쉽게 적요할 수 있다.
- 마찬가지로 다른 클라우드 플랫폼에서도 이러한 API 게이트웨이 패턴을 지원하는데,
쿠버네티스의 경우 자체 기능인 쿠버네티스 서비스와 인그레스 리소스로 제공한다.
- 참고로 앞에서 API 게이트웨이는 프런트엔드가 백엔드를 호출할 때 필요하다고 했는데,
그뿐만 아니라 외부 레거시 시스템과 단일 지점에서
서로 다른 형태의 API를 연계하는 용도로도 사용되기도 한다.
'도메인 주도 설계로 시작하는 마이크로서비스 개발' 카테고리의 다른 글
[도메인 주도 설계로 시작하는 마이크로서비스 개발] 다양한 서비스의 등록 및 탐색을 위한 서비스 레지스트리, 서비스 디스커버리 패턴 (0) | 2025.01.07 |
---|---|
[도메인 주도 설계로 시작하는 마이크로서비스 개발] 비즈니스 로직은 어디에? 관심사의 분리 (0) | 2025.01.07 |