Spring Cloud Gateway (SCG)

Sean·2025년 5월 17일

API Gateway

마이크로서비스를 관리,운영하기 위한 플랫폼 패턴. 해당 패턴에 필요한 기능들 제공하는 서버.
개별 서비스 앞 단에서 모든 서비스들의 엔드포인트를 단일화 해주며, 몇몇 필수 기능 제공.

제공 기능

  1. 인증 과 인가 :
  • 인증(Authentication) : 사용자의 신원을 검증.
  • 인가(Authorization) : 사용자에게 요청을 실행할 수 있는 권한 부여.
  • 인증, 인가는 필수적으로 제공되어야한다.
  • 인증,인가 서비스 제공 위해, 자체 기능 구현 or 외부 서비스 연계 가능.
  1. API 라우팅 : API 요청 식별해서 적절한 서비스로 전달.

  2. QoS (Quality of Service) : 안정적인 서비스 제공 및 네트워크 품질 관리 위하여 사용자, 클라이언트, API 단위로 접속 제어.

  3. 로깅 및 네트워킹 : API 요청 대한 로깅 지원 및 모니터링 기능

  4. 입력 유효성 검사 : API 요청이 적절한 형식과 필수 데이터를 포함하는지 식별 및 관리 기능 제공

로깅(Logging), 모니터링(Monitoring)

로깅 : API Gateway 거친 요청,응답 정보를 기록하는 것.
모니터링 : API Gateway를 통해 들어오는 트래픽, 성능, 실패율, 응답 속도 등을 실시간으로 추적하고 시각화하는 기능.

API Gateway 장점과 단점

장점 :

  • 클라이언트가 직접 서비스 호출 안하고, 단순히 gateway와 통신함으로서 클라이언트 코드 단순화.

단점 :

  • 개발, 배포 및 관리해야할 지점 증가
  • gateway에 라우팅 설정 미뤄질 시, 병목 현상 발생 가능성 존재.

Spring Cloud Gateway (SCG)

Spring에서 제공하는 오픈 소스 기반 서비스

SCG 이전에 Zuul 있었으나, 패치 중단됨에 따라 SCG로 이전.
차이점 :

  • 기반 웹 서버 : Zull - Tomcat, SCG - Netty
  • 동기 비동기 : Zuul - 동기, SCG - 비동기
  • 웹 프레임워크 : Zuul - WEB MVC, SCG - WebFlux

SCG 장점과 단점

장점 :

  • 오픈소스 기반 -> 초기 라이선스 투자 비용 없음
  • WebFlux 기반의 Non-Blocking 방식 사용으로, 빠른 응답 속도 가능. I/O작업 많은 프로젝트에서 유리.
  • Spring에서 제공하는 다양한 서비스 조합하여 사용 가능
  • 라우팅을 간단한 yaml 파일로 완성 가능.

단점 :

  • 다양한 기본 서비스 제공하나, 적절한 기능 선택 어려움
  • 라우팅 대상 서버 많아지면 관리 어려울 수 있음.
  • 추가적 오버헤드 갖게 되어, 간단한 요청의 경우에 비효율.

SCG 아키텍처

Route

  • 고유 ID, 목적지 URI, Predicate, Filter로 구성.
  • Predicate + Filter의 묶음.

Predicate

  • 받은 요청이 주어진 조건 만족하는지 식별함.
  • 식별 후 Filter Chain으로 요청 전달.
  • 만약 조건 만족 못하면, HTTP 404 Not Found 응답.

카테고리별 조건들

시간 : Before, After, Between
URI : Path, Query
요청 : Cookie, Header, Method, Weight
네트워크 : Host, RemoteAddr

Filter Chain

  • 요청,응답에 대한 전후처리 담당.
  • 각각 하나의 서비스를 제공하는 Filter를 등록하고, 이어져서 연쇄적으로 Filter 실행.
  • 백엔드 서비스에 요청 처리 시점 기준으로 요청 전(Pre Filter), 요청 후(Post Filter) 구분.
  • 이 중 Proxy Filter는 프록시 요청 처리될 때 수행됨.

SCG 동작 과정

  1. client가 SCG 서버로 요청
  2. Handler Mapping에서 요청이 매핑 판단 & 라우팅 경로 결정.
  3. 해당 라우팅 대응되는 Web Handler 실행됨. 이는 Filter Chain 실행시켜 요청 전송, 응답 생성 작업 수행토록 함.
  4. 필터 완료 후 서비스로 요청 보내짐.
  5. 서비스가 응답 생성 후 다시 역순으로 돌아가, 클라이언트에게 응답 전달됨.

참고 :
https://s-core.co.kr/insight/view/spring-cloud-gateway-%EA%B8%B0%EB%B0%98%EC%9D%98-api-%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-%EA%B5%AC%EC%B6%95/

profile
저스트두잇

0개의 댓글