본문 바로가기
카테고리 없음

SpringCloudGateway 동작원리

by sujupark54 2026. 2. 4.

스프링 클라우드 게이트웨이 이미지

마이크로서비스 아키텍처가 보편화되면서 API Gateway의 역할은 점점 더 중요해지고 있다. 여러 개의 서비스로 분리된 구조에서는 클라이언트 요청을 적절한 서비스로 전달하고, 인증·인가·로깅·모니터링과 같은 공통 관심사를 한 곳에서 처리할 필요가 있다. 이 역할을 수행하는 대표적인 솔루션이 바로 SpringCloudGateway다.

SpringCloudGateway는 고성능 비동기 API 게이트웨이를 구축하기 위한 Spring 생태계의 공식 솔루션이다. 기존 서블릿 기반의 동기 방식과는 달리, 리액티브 프로그래밍 모델을 기반으로 높은 처리량과 확장성을 제공한다. 이 글에서는 SpringCloudGateway의 개념부터 내부 동작원리, 그리고 필터가 어떤 순서로 실행되는지까지 흐름 중심으로 정리해본다.


SpringCloudGateway 개념 이해

SpringCloudGateway는 Spring Boot와 Spring WebFlux, 그리고 Project Reactor를 기반으로 동작한다. 이 조합은 논블로킹 I/O와 비동기 이벤트 처리에 최적화된 구조를 만든다.

전통적인 Spring MVC 기반 애플리케이션은 요청 하나당 스레드 하나를 점유하는 구조를 가진다. 반면 SpringCloudGateway는 이벤트 루프 기반의 처리 모델을 사용해 적은 수의 스레드로도 많은 요청을 동시에 처리할 수 있다.

이러한 구조 덕분에 SpringCloudGateway는 트래픽이 많은 API 게이트웨이 계층에서 특히 강점을 가진다. 단, 이 특성 때문에 기존 동기식 라이브러리나 서블릿 컨테이너 기반의 WAR 배포 방식은 사용할 수 없다.


SpringCloudGateway 기반 기술

SpringCloudGateway는 단독으로 존재하는 프레임워크가 아니다. 아래 세 가지 핵심 기술 위에서 동작한다.

Spring Boot는 빠른 설정과 자동 구성을 제공해 게이트웨이 서버를 손쉽게 띄울 수 있게 해준다. Spring WebFlux는 비동기·논블로킹 웹 프레임워크로, 리액티브 HTTP 요청 처리를 담당한다. Project Reactor는 이러한 비동기 흐름을 구성하는 리액티브 스트림 라이브러리다.

또한 런타임으로 Netty를 사용한다. Netty는 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크로, 높은 성능과 확장성을 제공한다. 이 때문에 전통적인 톰캣 기반 환경에서는 SpringCloudGateway가 정상적으로 동작하지 않는다.


SpringCloudGateway 핵심 구성요소

SpringCloudGateway는 Route, Predicate, Filter라는 세 가지 핵심 개념으로 구성된다. 이 세 요소가 결합되어 요청 라우팅과 필터링을 수행한다.

Route는 게이트웨이의 기본 단위다. 각 Route는 고유한 ID, 목적지 URI, 하나 이상의 Predicate와 Filter로 구성된다. 모든 Predicate 조건이 참일 때 해당 Route는 매칭된다.

Predicate는 요청을 라우트에 매칭하기 위한 조건이다. 요청 경로, 헤더, 파라미터, 메서드 등을 기준으로 판단할 수 있다. Filter는 요청과 응답을 가공하는 역할을 수행하며, 프록시 요청 전과 후에 각각 동작할 수 있다.


SpringCloudGateway 동작원리 흐름

SpringCloudGateway의 요청 처리 흐름은 단계적으로 이루어진다. 클라이언트 요청은 가장 먼저 Gateway 서버로 전달된다.

이후 GatewayHandlerMapping이 요청을 검사해 미리 정의된 Route 중 어떤 Route와 매칭되는지 확인한다. 이 역할을 수행하는 핵심 구현체가 RoutePredicateHandlerMapping 클래스다.

라우트가 매칭되면 GatewayWebHandler로 요청이 전달되고, 해당 라우트에 정의된 필터 체인이 실행된다. 이 과정에서 요청은 다운스트림 서비스로 프록시되고, 응답이 반환되면 다시 필터 체인을 거쳐 클라이언트로 전달된다.


SpringCloudGateway 필터 실행순서

SpringCloudGateway에서 필터의 실행 순서는 매우 중요하다. 요청 흐름에서 필터들은 정해진 순서에 따라 실행된다.

가장 먼저 Route Predicate Factory가 실행되어 요청이 특정 라우트와 매칭되는지 판단한다. 이후 Global Filter가 실행되며, 모든 요청과 응답에 공통으로 적용될 로직을 처리한다.

그 다음 GatewayFilterFactory를 통해 라우트별로 정의된 필터들이 실행된다. 마지막으로 HttpHeadersFilter가 실행되어 요청과 응답 헤더를 정리한다.

필터는 pre와 post 단계로 나뉘어 실행된다. 모든 pre 필터가 실행된 후 실제 서비스로 요청이 전달되고, 응답이 반환된 이후 post 필터가 역순으로 실행된다.


SpringCloudGateway 로깅과 확인

SpringCloudGateway의 동작을 이해하기 위해서는 로그를 통해 흐름을 확인하는 것이 매우 중요하다.

GatewayHandlerMapping은 요청이 어떤 Route에 매핑되었는지 상세 로그를 출력한다. 이를 통해 요청 경로가 어떤 라우트와 매칭되었고, 어떤 필터 체인이 실행되었는지 확인할 수 있다.

보안이나 모니터링 관점에서 필터 실행 순서를 명확히 이해하고 로그로 검증하는 과정은 운영 환경에서 특히 중요한 작업이다.


SpringCloudGateway 정리

SpringCloudGateway는 단순한 라우팅 도구가 아니다. 비동기·리액티브 기반의 고성능 API 게이트웨이로, 마이크로서비스 환경에서 핵심적인 역할을 수행한다.

Route, Predicate, Filter라는 명확한 개념 분리를 통해 요청 흐름을 구조적으로 관리할 수 있으며, 필터 체인을 활용해 다양한 공통 기능을 구현할 수 있다.

SpringCloudGateway의 동작원리를 이해하면 단순 설정을 넘어서 아키텍처 관점에서 게이트웨이를 설계할 수 있는 시야를 갖게 된다. 이는 확장성과 안정성이 중요한 시스템에서 큰 차이를 만들어낸다.