API Gateway 무엇입니까?

API Gateway Pattern이란 클라이언트에서 여러 개의 마이크로서비스에 효율적으로 접근할 수 있도록 단일 진입점을 제공하는 것을 말합니다. API Gateway를 사용하면 서로 다른 유형의 클라이언트에게 서로 다른 API 조합을 제공할 수 있고, 각 서비스에 접근할 때 필요한 인증/인가 기능, 시큐리티 기능 등을 한 번에 처리할 수도 있습니다. 또 정상적으로 동작하던 서비스에 문제가 생겨 서비스 요청에 대한 응답 지연이 발생하면 정상적인 다른 서비스로 요청 경로를 변경하는 기능이 작동되게 할 수도 있습니다. 또한 블루 그린, 카나리 배포와 같은 무중단 배포를 지원할 수도 있습니다. API Gateway에는 일반적으로 라우팅 기능, 로드 밸런싱 기능, 인증/인가, 추적, 장애 격리, 서비스 탐색, 필터 등의 기능이 함께 구현됩니다.

  • 레지스트리 서비스와 연계한 동적 라우팅, 로드 밸런싱 (Ribbon)
  • 보안: 권한 서비스와 연계한 인증 / 인가 (Security)
  • 로그 집계 서비스와 연계한 로깅, 예: API 소비자 정보, 요청 / 응답 데이터 (ELK 스택)
  • 메트릭, 예: 에러율, 평균/최고 지연시간, 호출 빈도 등 (Prometheus+Grafana)
  • 트레이싱 서비스와 연계한 서비스 추적, 예 (트래킹 ID 기록)
  • 모니터링 서비스와 연계한 장애 격리, 서킷 브레이커 패턴 (Zipkin, AWS X-Ray, Google Stackdriver)


스프링 계열에선 Spring Cloud API gateway 디펜던시 추가를 통해 구현할 수 있습니다. 쿠버네티스 환경에선 쿠버네티스 서비스와 인그레스 리소스 (ingress resource)를 통해 구현할 수 있습니다. 추가적으로, Spring Cloud Api Gateway는 외부 레거시 시스템과 단일 지점에서 서로 다른 API를 연계하기 위한 용도로도 자주 사용됩니다.

Written on January 18, 2023