<aside>
📌 Spring Cloud Gateway
</aside>
- Spring webflux 기반이기 때문에 높은 트래픽을 보장한다.
- Reactive systems의 Responsive(응답성)을 보장한다.
- Circuit breaker를 지원하여 문제가 생긴 컴포넌트, 서비스에 대한 접근을 제한하고 시스템의 안정성을 유지한다.
- Reactive systems의 Resilient(복원력)를 보장한다.
- properties를 이용하여 다양한 Route, Predicate, GatewayFilter를 사용 가능하다.
<aside>
📌 Spring Cloud gateway 흐름
</aside>
- 먼저 Spring WebFlux의 구조를 보자
- Reactor Netty로 요청이 들어오면 DispatcherHandler로 보낸다.
- HandlerMapping List로 들어가서 적당한 handlerMapping을 찾아서 반환한다.
- 이후 반환받았으면 HandlerAdapter List로 들어가서 처리할 수 있는 HandlerAdapter를 찾아서 이것을 통해 실행하도록 되어있다.
- 이제 Spring Cloud Gateway의 흐름을 보자
- HandlerMapping에서 요청을 수행할 수 있는 route를 탐색한다.
- route가 존재한다면 WebHandler에 전달한다.
- WebHandler에서 Filter를 거쳐서 요청을 대상 서비스에 전달한다.
- 응답을 받은 후 Filter를 거쳐서 클라이언트에게 전달한다.
- HandlerMapping은 RoutePredicateHandlerMapping이고(사용), WebHandler는 FilteringWebHandler(사용)이다.