API Gateway(Spring Cloud Gateway)
API Gateway란
클라이언트와 백엔드 서비스 사이에 위치한 진입점(중간계층)이다
클라이언트가 개별 서비스와 직접 통신하지 않고 API 게이트웨이를 통해 요청을 전송한다
게이트웨이가 요청을 적절한 서비스로 전달하거나 추가 작업(필터링, 인증 등)을 진행한다
API Gateway 주요 기능
라우팅 : 클라이언트 요청을 적절한 마이크로 서비스로 전달한다
필터링 : 요청 및 응답을 변환하거나 검사하는 기능이다
보안 : 인증, 권한 부여, 요청 검증 등을 수행한다
로드밸런싱 : 여러 인스턴스에 요청을 분산시킨다
모니터링 및 로깅 : 요청 / 응답 데이터를 로깅하고 모니터링할 수 있다
속도제한 및 트래픽 제어 : 특정 클라이언트 또는 IP의 요청을 제한할 수 있다
Spring Cloud Gateway란
Spring Frame work 기반으로 개발된 API 게이트웨이 솔루션
API 게이트웨이를 구현하기 위한 프레임워크
스프링의 유연성과 생산성을 활용하여 API 게이트웨이의 주요 기능을 쉽게 구현할 수 있도록 돕는다
특징
비동기 네트워크 처리 : Netty와 Reactor 기반으로 고성능 비동기 요청 처리가 가능하다
Spring Boot 통합 : 간단한 설정으로 API 게이트웨이를 구축할 수 있다
유연한 요청 필터링 및 라우팅 : Filter와 Predicate를 사용하여 세부 동작을 설정할 수 있다
Spring Cloud 생태계와의 통합 : Eureka, Config Server, Resilience4j 등과 쉽게 연동할 수 있다
Spring Cloud Gateway의 주요 구성 요소
Routes (라우트)
요청이 전달되는 경로를 정의한다
각 라우트는 Predicate (조건) 와 Filter (처리) 로 구성된다
구성
id : 라우트 식별자
uri : 요청이 전달될 백엔드 서비스 주소
predicates : 라우팅 조건
filters : 요청 / 응답을 반환하거나 수정하는 로직
Predicates (조건)
요청을 특정 서비스로 라우팅할지 여부를 결정하는 조건
Filters (필터)
요청이나 응답을 수정하거나 추가 동작을 수행
Global Filters
모든 요청에 공통으로 적용되는 필터
Spring Cloud Gateway 동작 흐름
클라이언트 요청 : 클라이언트가 API 게이트웨이로 요청을 보낸다
Predicate : 요청이 특정 라우트와 일치하는지 조건을 확인한다
Filter 처리 : 요청 / 응답에 대한 추가 작업을 진행한다
백엔드 호출 : 필터링 후 해당 요청을 적절한 백엔드로 전달한다
응답 반환 : 백엔드에서 응답을 받아 클라이언트로 반환한다
Spring Cloud Gateway 필터
yml에 설정하는 필터
Spring Cloud Gateway의 라우트 설정에 사용하는 필터
간단한 사전 정의 필터를 조합해서 사용
ex: AddRequestHeader (응답 헤더 추가), RewritePath (요청 경로 재작성), StripPrefix(경로의 일부 제거) 등
특정 라우트에만 적용된다
Java 코드로 구현하는 필터 (커스텀 필터)
GlobalFilter 또는 GateWayFilter 인터페이스를 구현한다
모든 라우트에 적용하거나 특정 조건에서 동작한다
Pre / Post 필터로 나눠 요청과 응답에 대한 맞춤형 처리가 가능하다
@Component로 스프링 빈 등록 필요