IT 개발 관련/[Spring]

[Spring] API Gateway

Baileyton 2024. 7. 7. 13:34
728x90

API Gateway

사용자가 설정한 라우팅 설정에 따라서 각각 엔드포인트로 클라이언트 대신해서 요청하고 응답을 받으면 다시 클라이언트에 전달해주는 프록시 역할을 하게됩니다. 시스템의 내부 구조는 숨기고 외부의 요청에 대해서 적절한 형태로 가공해서 응답할 수 있는 장점을 가지고 있습니다.

 

구축하는 방법

1. Spring Cloud Gateway

Spring Cloud Gateway는 Spring Boot 2.x 이상에서 사용할 수 있는 API Gateway 솔루션입니다. 마이크로서비스 아키텍처를 지원하며, Spring 생태계와의 뛰어난 통합성을 자랑합니다.

장점:

  • Spring 생태계와의 통합성: Spring Boot, Spring Security 등과의 원활한 통합.
  • 강력한 라우팅 및 필터 기능: 다양한 라우팅과 필터를 통해 요청을 세밀하게 제어 가능.
  • Reactive 프로그래밍 지원: 고성능 비동기 프로그래밍 모델 제공.
  • 확장성: 커스터마이징이 용이하여 다양한 요구사항에 맞출 수 있음.

단점:

  • 복잡성: Spring Boot와 Spring Cloud의 학습 곡선이 존재.
  • Spring 종속성: Spring 생태계를 사용하지 않는 환경에서는 부적합.

2. NginX

Nginx는 HTTP 서버, 리버스 프록시, 로드 밸런서 등 다양한 역할을 수행할 수 있는 소프트웨어입니다. API Gateway로도 널리 사용됩니다.

장점:

  • 성능: 높은 성능과 낮은 리소스 사용.
  • 유연성: 다양한 설정 옵션과 모듈을 통한 확장성.
  • 광범위한 사용: 커뮤니티와 문서가 풍부하여 문제 해결이 용이.

단점:

  • 설정 복잡성: 복잡한 설정 파일과 낮은 직관성.
  • 기능 제한: Spring Cloud Gateway 같은 고급 기능 제공 어려움.

3. Kubernetes Ingress Controller

Kubernetes Ingress Controller는 Kubernetes 클러스터에서 외부 HTTP 및 HTTPS 트래픽을 내부 서비스로 라우팅하는 역할을 합니다.

장점:

  • Kubernetes와의 통합: Kubernetes 네이티브로, 클러스터 내부 서비스와의 원활한 통합.
  • 자동 스케일링: Kubernetes의 자동 스케일링 기능 활용.
  • 다양한 Ingress Controller: Nginx, Traefik, Istio 등 다양한 선택지.

단점:

  • 복잡성: Kubernetes를 운영해야 하는 부담.
  • 관리 오버헤드: 클러스터 관리와 함께 추가적인 설정 및 관리 필요.

 

Spring Cloud Gateway 채택 이유

  • Spring 생태계와의 통합: 기존 프로젝트가 Spring Boot를 사용하고 있어 통합이 용이하고, Spring Security와의 연계도 원활합니다.
  • 강력한 라우팅 및 필터 기능: 다양한 요구사항을 만족시킬 수 있는 세밀한 요청 제어가 가능합니다.
  • Reactive 프로그래밍 지원: 비동기 처리로 고성능의 API Gateway를 구현할 수 있습니다.
  • 확장성 및 커스터마이징 용이성: 필요에 따라 기능을 확장하고 커스터마이징할 수 있습니다.
728x90