2026. 1. 7. 17:13ㆍSpring Microservice/API Gateway
🚪 Spring Cloud Gateway
― MSA 시대의 관문, API Gateway의 정석
마이크로서비스 아키텍처(MSA)에서 클라이언트 요청을 어떻게 제어하고, 어떻게 흘려보낼 것인가는 시스템 전체의 안정성과 성능을 좌우하는 핵심 포인트입니다.
이 문제를 해결하기 위해 등장한 것이 바로 Spring Cloud Gateway(SCG) 입니다.
SCG는 모든 외부 요청의 단일 진입점(Single Entry Point) 으로서,
라우팅 · 인증 · 로깅 · 회로 차단 · 속도 제한과 같은 공통 관심사(Cross-Cutting Concern) 를 중앙에서 처리하는 API Gateway 역할을 수행합니다. 🔐⚡



🌱 Spring Cloud Gateway란?
Spring Cloud Gateway는
기존의 Netflix Zuul 1.x를 대체하기 위해 Spring 팀이 직접 개발한 차세대 API Gateway입니다.
🔑 핵심 특징 요약
| 항목 | 설명 |
|---|---|
| ⚙️ 기반 기술 | Spring WebFlux + Netty |
| 🔄 처리 방식 | 비동기 / 논블로킹 (Non-blocking) |
| 🚀 성능 | 적은 스레드로 대량 트래픽 처리 |
| 🔗 통합성 | Spring Security, Eureka, Resilience4j |
👉 즉, 고성능 + 현대적 MSA 구조에 최적화된 Gateway라고 보시면 됩니다.
🧩 1. 핵심 구성 요소 (Key Components)
Spring Cloud Gateway는 다음 3가지 핵심 개념으로 이해하시면 됩니다.
1️⃣ Route (라우트) 🛣️
“어디로 보낼 것인가?”
Gateway의 최소 단위
다음 요소들의 묶음입니다.
- Route ID
- Destination URI
- Predicate
- Filter
📌 하나의 마이크로서비스 = 하나 이상의 Route
2️⃣ Predicate (조건자) 🔍
“이 요청이 이 Route에 해당하는가?”
요청을 라우트에 매칭할지 판단하는 조건
주로 다음 정보를 사용합니다.
- Path
- Method
- Header
- Cookie
- Query Parameter
predicates:
- Path=/api/user/**
✔️ 조건이 true일 때만 해당 Route로 이동합니다.
3️⃣ Filter (필터) 🧪
“요청과 응답을 어떻게 가공할 것인가?”
Filter는 Gateway의 진짜 힘입니다.
| 종류 | 설명 |
|---|---|
| 🌍 Global Filter | 모든 요청에 적용 |
| 🎯 Gateway Filter | 특정 Route에만 적용 |
Pre / Post Filter 구조로 동작하며 다음 작업을 담당합니다.
- 인증·인가 🔐
- 요청/응답 로깅 📝
- 헤더 추가/수정 🧾
- 응답 시간 측정 ⏱️
🔄 2. 요청 처리 흐름 (How it Works)
클라이언트 요청이 들어오면 SCG 내부에서는 다음 순서로 동작합니다.
📌 전체 흐름 요약
1️⃣ Gateway Handler Mapping
→ 요청이 어떤 Route의 Predicate와 일치하는지 검사
2️⃣ Gateway Web Handler
→ 매칭된 Route의 Filter Chain 구성
3️⃣ Pre Filter 실행
→ 인증, 로깅, 헤더 가공 등
4️⃣ 실제 서비스 호출 (Proxy)
→ Order / User / License 서비스 등
5️⃣ Post Filter 실행
→ 응답 헤더 수정, 응답 시간 기록
📌 모든 과정이 논블로킹으로 동작합니다 ⚡
🚀 3. Spring Cloud Gateway의 주요 기능
⚡ 비동기 · 논블로킹 처리
- Netty 기반
- Thread-per-request ❌
- Event Loop 기반 처리 ⭕
👉 대규모 트래픽에 매우 강함
🔀 동적 라우팅 (Dynamic Routing)
- Eureka, Consul과 연동
- 인스턴스 IP 몰라도 OK
uri: lb://USER-SERVICE
➡️ 서비스 이름 기반 라우팅
🔐 보안 중앙화 (Security)
- Spring Security와 자연스럽게 통합
- JWT 인증을 Gateway에서 단 한 번 수행
👉 각 서비스는 인증 로직 제거 가능 👍
🔥 회로 차단 (Circuit Breaker)
- Resilience4j 연동
- 장애 전파 차단
서비스 장애 → Gateway에서 차단 → 전체 장애 방지
🚦 속도 제한 (Rate Limiting)
- Redis 기반 토큰 버킷
- IP / 사용자 / API 단위 제어
👉 API 남용 방지 필수 기능
🧾 4. YAML 기반 라우팅 설정 예시
spring:
cloud:
gateway:
routes:
- id: user-service-route
uri: lb://USER-SERVICE
predicates:
- Path=/api/user/**
filters:
- AddRequestHeader=X-Gateway-Token, MySecretToken
- RewritePath=/api/(?<segment>.*), /${segment}
📌 해석 포인트
| 설정 | 의미 |
|---|---|
lb:// |
LoadBalancer 연동 |
Path |
요청 경로 조건 |
AddRequestHeader |
공통 헤더 주입 |
RewritePath |
내부 API 경로 단순화 |
⚔️ 5. 왜 Zuul이 아닌 SCG인가?
| 항목 | Zuul 1.x | Spring Cloud Gateway |
|---|---|---|
| 처리 방식 | 동기 / 블로킹 | 비동기 / 논블로킹 |
| 기반 | Servlet | WebFlux |
| 성능 | 보통 | 매우 우수 🚀 |
| 확장성 | 제한적 | Predicate / Filter |
| 유지보수 | 사실상 종료 | 활발함 ✅ |
👉 MSA + 대규모 트래픽 환경에서는 SCG가 정답입니다.
🎯 마무리 정리
Spring Cloud Gateway는 단순한 라우터가 아닙니다.
✅ MSA의 관문
✅ 보안과 복원력의 중심
✅ 트래픽 제어의 최전선
'Spring Microservice > API Gateway' 카테고리의 다른 글
| Filter (0) | 2026.01.07 |
|---|---|
| Route vs Microservice (0) | 2026.01.07 |
| Predicate (0) | 2026.01.07 |
| Load Balancer 스키마 (0) | 2026.01.07 |
| Route (0) | 2026.01.07 |