Spring Cloud Gateway

2026. 1. 7. 17:13Spring Microservice/API Gateway

🚪 Spring Cloud Gateway

― MSA 시대의 관문, API Gateway의 정석

마이크로서비스 아키텍처(MSA)에서 클라이언트 요청을 어떻게 제어하고, 어떻게 흘려보낼 것인가는 시스템 전체의 안정성과 성능을 좌우하는 핵심 포인트입니다.

이 문제를 해결하기 위해 등장한 것이 바로 Spring Cloud Gateway(SCG) 입니다.
SCG는 모든 외부 요청의 단일 진입점(Single Entry Point) 으로서,
라우팅 · 인증 · 로깅 · 회로 차단 · 속도 제한과 같은 공통 관심사(Cross-Cutting Concern) 를 중앙에서 처리하는 API Gateway 역할을 수행합니다. 🔐⚡

Image

Image

Image

🌱 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