API Gateway (Spring Cloud Gateway) 알아보기
API Gateway란?
마이크로서비스 아키텍처에서 API 게이트웨이는 클라이언트 요청을 각 마이크로서비스로 라우팅하고, 인증/인가, 로드 밸런싱, 요청 변환, 로깅 등의 공통 기능을 중앙 집중적으로 처리하는 중요한 역할을 맡습니다. Spring Boot 기반 마이크로서비스 환경에서는 Spring Cloud Gateway를 주로 활용하며, 이는 비동기 논리에 특화되어 있어 대규모 트래픽 처리에 유리합니다.
API Gateway의 필요성
단일 진입점 제공: 여러 마이크로서비스에 직접 요청을 보내는 대신 Gateway를 통해 통합된 엔드포인트로 접근합니다.
보안 및 인증/인가: Gateway 레벨에서 JWT나 OAuth2.0, SSO 등의 인증/인가 로직을 처리할 수 있어 보안 모델을 단순화합니다.
로드 밸런싱 및 라우팅: 동적으로 백엔드 서비스로 트래픽을 라우팅하고 로드 밸런싱을 수행하여 시스템 안정성을 향상시킵니다.
모니터링 및 로깅: 요청 단위로 로깅, 트레이싱, 모니터링을 수행하여 장애 대응과 성능 분석을 용이하게 합니다.
요청/응답 변화: 요청 헤더, 바디 변환, 응답 캐싱 등 공통적인 API 처리 로직을 집중화함으로써 서비스 단의 중복 코드를 최소화한다.
Spring Cloud Gateway 특징 및 아키텍처
비동기 논리를 지원하고, 대규모 트래픽 환경에 유연하게 대응한다.
특정 경로 기반, 호스트 기반, 헤더 기반 등 다양한 조건으로 라우트 매핑 가능
Filter 체인: 요청/응답 처리 과정에서 인증, 로깅, 변환 등의 정책 적용
Gateway 보안 및 인증/인가 활동
JWT 토큰 검증: Gateway Filter에서 JWT 토큰 검증을 수행해 유효하지 않은 요청을 서비스로 전달하기 전 차단.
OAuth2 연계: OAuth2 인증 서버와 연계해 Access Token 검증, Refresh 토큰 발급 등을 Gateway 레벨에서 처리 가능
로깅, 모니터링 및 트레이싱
Gateway 비롯해 모든 마이크로서비스 트랜잭션 트레이싱 가능
클라이언트 요청부터 응답까지 Gateway단에서 로깅을 수행하면 문제 발생 시 원인 파악이 용이