Spring Cloud Gateway는 다른 API로 라우팅하는 것을 편리하게 제공하고, 보안과 모니터링, 회복을 한 곳에서 처리할 수 있도록 돕는다.
1. Spring Cloud Gateway 사용 방법
spring-cloud-starter-gateway
의존을 추가하여 사용하면 된다.
<aside>
🚨 Spring Cloud Gateway는 Spring Boot 2.x, Spring WebFlux, Project Reactor 기반이기 때문에 동기 라이브러리(Spring Data 및 Spring Security) 적용이 안될 수도 있다.
</aside>
2. 용어집
Route
- 게이트웨이의 기본 구성 요소
- ID, 목적지 URI, predicates 컬렉션, filter 컬렉션으로 정의된다.
- predicate들을 집계한 결과가 true일 때 route에 매칭된다.
Predicate
- 자바 8의 함수형 인터페이스인 Predicate
- 입력 파라미터는 ServerWebExchange 이다.
- predicate를 통해 헤더나 파라미터같은 HTTP 요청 정보를 매칭시킬 수 있다.
Filter
- 특정 팩토리로 생성하는 GatewayFilter 인스턴스이다.
- 다운스트림으로 요청을 전송하기 전후에 요청과 응답을 수정할 수 있다.
3. 동작 원리
스프링 클라우드 게이트웨이의 동작 방식
- 클라이언트가 스프링 클라우드 게이트웨이에 요청을 전송한다.
- 핸들러 매핑에서 요청이 라우트와 매칭되는지 판단 후, 매칭이 성공하면 웹 핸들러로 전달한다.
- 웹 핸들러에서 필터 체인을 통해 요청을 처리한다.
- 점선의 의미는 프록시 요청을 전송하기 전과 후에 로직에 적용되는 필터를 의미한다.