Spring cloud gateway vs k8s ingress
❓ 의문 제기
같은 기능을 가진 두 솔루션, 둘 중 하나만 사용하면 되지 않을까?
1. 로드 밸런싱
Spring Cloud Gateway:
- 로드 밸런싱: Spring Cloud Gateway는 유레카(Eureka)와 같은 서비스 디스커버리와 통합하여 로드 밸런싱을 수행합니다. 요청을 여러 인스턴스로 분산시키고, 각 인스턴스의 상태를 실시간으로 모니터링하여 가용한 인스턴스로 트래픽을 라우팅합니다.
- 커스터마이즈 가능성: 다양한 필터를 통해 트래픽을 세밀하게 제어하고, 라우팅 규칙을 설정할 수 있습니다. 이를 통해 특정 조건에 맞는 로드 밸런싱 전략을 구현할 수 있습니다.
Kubernetes Ingress:
- 로드 밸런싱: Ingress 컨트롤러(NGINX, Traefik 등)는 클러스터 내의 서비스로 트래픽을 분산합니다. 기본적인 라운드 로빈 방식 외에도, 여러 고급 로드 밸런싱 기능을 제공합니다.
- 자동화: Kubernetes의 특성상, 클러스터 내의 각 노드와 포드의 상태를 자동으로 관리하며, 확장성과 가용성을 보장합니다.
2. 경로 기반 라우팅
Spring Cloud Gateway:
- 경로 기반 라우팅: Spring Cloud Gateway는 다양한 경로 기반 라우팅 규칙을 설정할 수 있습니다. URL 경로, 요청 헤더, 쿼리 매개변수 등을 기반으로 세밀한 라우팅을 설정할 수 있습니다.
- 필터 기능: 필터 체인을 통해 요청을 가로채고, 수정하고, 조건부로 라우팅하는 등 다양한 기능을 제공합니다. 이를 통해 고급 라우팅 시나리오를 구현할 수 있습니다.
Kubernetes Ingress:
- 경로 기반 라우팅: Ingress는 HTTP(S) 트래픽을 URL 경로에 따라 적절한 서비스로 라우팅합니다. 간단한 설정으로 다양한 경로 기반 라우팅 규칙을 적용할 수 있습니다.
- 간편한 설정: Ingress 리소스를 통해 YAML 파일로 간단하게 라우팅 규칙을 정의할 수 있으며, 컨트롤러가 이를 자동으로 적용합니다.
🌐 결론: 통합된 환경의 이점