Spring Cloud Gateway란?
- Spring Cloud Gateway는 Spring 프로젝트의 일환으로 개발된 API 게이트웨이로, 클라이언트 요청을 적절한 서비스로 라우팅하고 다양한 필터링 기능을 제공한다.
- Spring Cloud Netflix 패키지의 일부로, MSA에서 널리 사용된다.
특징
- 동적 라우팅 : 요청의 URL 패턴에 따라 동적으로 라우팅
- 필터링 : 요청 전후에 다양한 작업을 수행할 수 있는 필터 체인 제공
- 모니터링 : 요청 로그 및 메트릭을 통해 서비스 상태 모니터링
- 보안 : 요청의 인증 및 권한 검증
사용 사례
- API 집합 관리 : 여러 마이크로서비스의 엔드포인트를 단일 진입점으로 통합하여 관리
- 보안 강화 : 인증 및 인가를 중앙 집중화하여 각 마이크로서비스의 보안 부담을 줄임
- 트래픽 제어 : 요청률 제한, 회로 차단기 등의 기능을 통해 시스템 안정성 유지
- 모니터링 및 로깅 : 통합된 로깅 및 모니터링을 통해 시스템 상태를 실시간으로 파악
Spring Cloud Gateway vs Netflix Zuul
- 성능 : Spring Cloud Gateway는 비동기적이고 논블로킹 방식으로 설계되어 Zuul1보다 더 높은 성능을 제공한다.
- 기능 : Spring Gateway는 WebFlux를 기반으로 하여 리액티브 스트림을 지원하며, Zuul 2는 아직 널리 사용되지 않는다.
- 커뮤니티 및 지원 : Spring Cloud Gateway는 Spring 생태계와 긴밀하게 통합되어 있어 Spring 개발자에게 친숙한다.
Spring Cloud Gateway vs Kong, NGINX 등
- 통합성 : Spring Cloud Gateway는 Spring 생태계와의 통합성이 뛰어나지만, Kong이나 NGINX 는 독립적인 API 게이트웨이 솔루션으로 더 다양한 언어와 프레임워크와의 호환성을 가진다.
- 확장성 : Kong과 NGINX는 고성능의 트래픽 처리를 위해 최적화되어 있으며, 대규모 분산 환경에서 유리할 수 있다.
주요 구성 요소
- Route
- 특정 조건에 맞는 요청을 지정된 목적지로 전달하는 규칙
- 각 라우트는 ID, 대상 URI, 필터 등의 속성을 가진다.
- Filter
- 요청 또는 응답을 가로채 처리하는 컴포넌트
- Pre-filter와 Post-filter로 나뉜다.
- Predicate
- 라우팅 조건을 정의하는 논리
- 예) 특정 경로, 헤더 값, 쿼리 파라미터 등이 일치하는지 검사
결론
Spring Cloud Gateway는 MSA에서 유연하고 강력한 API 게이트웨이를 구축할 수 있는 도구로, Spring 생태계와의 뛰어난 통합성을 바탕으로 다양한 기능을 제공한다. 비동기적이고 논블로킹 방식의 처리 모델을 통해 높은 성능과 확장성을 제공하며, 라우팅, 필터링, 보안, 부하 분산 등 API 게이트웨이에 필요한 핵심 기능을 손쉽게 구현할 수 있다.