Spring Cloud Gateway란?
개요
기존에는 AWS의 API Gateway를 주로 사용했었는데 Spring Cloud Gateway에 대해 알게 되어 정리해보고자 합니다.
API GATEWAY란?
클라이언트와 백엔드 서비스 사이에 위치하는 proxy 역할을 수행합니다.
모든 클라이언트 요청에 대한 end point를 통합하는 역할을 수행하고, 인증 및 권한, 모니터링, logging 등 추가적인 기능도 수행합니다.
Spring Cloud Gateway란?
Spring Boot 2.x, Spring WebFlux, Project Reacter 기반으로 이루어져 있으며 Netty기반으로 구성되어 있습니다.
Spring Cloud Gateway의 주 목적은 간단하면서 확실한 방법으로 요청을 다른 API로 라우팅 하고, 보안, 메트릭/모니터링과 같은 횡단 관심사를 처리합니다.
Why Netty?
Spring Cloud Gateway는 Tomcat이 아니라 Netty를 활용합니다.
아무래도 모든 요청이 통과해야 하기 때문에 성능적인 측면이 매우 중요하며 기존의 1 Thread당 1 Request인 방식을 활용하면 성능적인 문제가 발생할 수 있습니다.
반면에 Netty는 비동기 방식인 1 Thread가 Many Requests를 처리합니다.
Tomcat -> Netty는 Blocking -> Non-Blokcing을 의미합니다.
Spring Cloud Gateway의 용어집
- Route - 요청된 URI의 조건이 참인 경우 해당 경로로 매칭을 시킴
- Predicate - 자바 8에 나온 문법으로 각 요청 경로에 대해 조건을 충족하는지 확인하는 구성요소
- Filter - request 및 response에 대해 수정을 가능하게 해주는 구성 (전처리, 후처리)
Spring Cloud Gateway 동작원리
참고자료
https://cloud.spring.io/spring-cloud-gateway/reference/html/#gateway-starter
https://saramin.github.io/2022-01-20-spring-cloud-gateway-api-gateway/
https://www.slideshare.net/ifkakao/msa-api-gateway