728x90
Spring Cloud Gateway는 마이크로서비스 아키텍처에서 API 게이트웨이 역할을 수행하는 프로젝트로 Spring Cloud의 일부이다. 클라우드 네이티브 애플리케이션에서 요청 라우팅, 보안, 부하 분산, 모니터링, API 관리를 효율적으로 처리하기 위해 설계되었다. Spring Cloud Gateway는 Spring Framework와 Spring Boot의 생태계에 통합되어 있어 유연하고 강력한 API 게이트웨이 솔루션을 제공하고있다.
주요 특징
- 라우팅 (Routing)
Spring Cloud Gateway의 핵심 기능으로 클라이언트 요청을 적절한 백엔드 서비스로 전달한다.- 경로 기반 라우팅 : URL 경로나 패턴에 따라 요청을 라우팅
- 헤더, 쿼리 매개변수 기반 라우팅 : HTTP 헤더나 쿼리 매개변수 조건에 따른 라우팅
- 정적 및 동적 라우팅 : 미리 정의된 라우팅 규칙이나 조건에 따라 동적으로 라우트를 결정
- 필터 (Filters)
요청과 응답을 처리하면서 추가 기능을 수행하는 데 사용된다.- 프리 필터 : 요청을 처리하기 전에 실행
- 포스트 필터 : 응답을 처리한 후 실행
- 사용 사례 : 인증, 로깅, 요청 변환, 응답 캐싱, CORS 설정 등
- 비동기 및 반응형 (Reactive)
Spring WebFlux 기반으로 구축되어 비동기적이며 반응형 프로그래밍 모델을 채택하고 있다. 이는 높은 처리량과 낮은 대기 시간을 제공한다. - 통합 및 확장성
- Spring Security와 통합 : 인증 및 권한 부여를 쉽게 설정
- Spring Boot Actuator와 통합 : 게이트웨이 상태 및 모니터링 메트릭 제공
- 커스텀 필터, 라우트, 프레디케이트 등을 구현하여 확장 가능
- 부하 분산 및 장애 허용성
- 여러 인스턴스로 요청을 분산
- 백엔드 서비스 장애 시 대체 경로로 라우팅하거나 Circuit Breaker를 통한 처리
Spring Cloud Gateway 구성 요소
- Route (라우트)
클라이언트 요청을 처리할 경로를 정의하는 단위. 각 라우트는 다음과 같은 속성으로 구성된다.- ID : 라우트를 식별하는 고유 값
- Predicate : 요청 경로를 결정하는 조건
- Filter : 요청/응답을 처리하는 추가 작업
- Predicate (프레디케이트)
라우트를 트리거하기 위한 조건을 정의한다.
예) Path=/api/**, Method=GET, Header=X-Request-ID - Filter (필터)
요청 또는 응답을 수정하거나 추가 작업을 수행한다.
예)- AddRequestHeader : 요청 헤더 추가
- RewritePath : 요청 경로 재작성
- Hystrix : Circuit Breaker 적용
Spring Cloud Gateway의 주요 장점
- Spring 생태계와의 강력한 통합
Spring Cloud와 Spring Boot 기반의 프로젝트와 자연스럽게 연동되며 개발 경험을 일관되게 제공한다. - 반응형 아키텍처
WebFlux 기반으로 성능 최적화에 유리하며 고성능 애플리케이션 구축에 적합 - 유연한 커스터마이징
필요에 따라 Predicate, Filter, Error Handling 등을 확장 가능 - 간단한 설정
YAML이나 Java Config를 사용하여 쉽게 설정 가능
간단한 예제 (YAML 설정)
spring:
cloud:
gateway:
routes:
- id: example_route
uri: http://example.com
predicates:
- Path=/api/**
filters:
- AddRequestHeader=X-Example-Header, MyHeaderValue
반응형
'Spring' 카테고리의 다른 글
Resilience4j 개요 (0) | 2024.12.21 |
---|---|
Spring Cloud Gateway에서 Custom Filter, Global Filter, Logging Filter 예제 (0) | 2024.11.28 |
분산 락(Distributed Lock) (0) | 2024.11.21 |
AOP - Advice, Target, Pointcut (0) | 2024.11.18 |
Spring Cloud Config (1) | 2024.11.12 |