SCG(Spring Cloud Gateway)

백승한·2023년 2월 20일
0

SCG(Spring Cloud Gateway)

  • Spring Cloud Gateway(SCG)란 MSA 환경에서 사용하는 API Gateway 중 하나
  • API 라우팅 및 보안
  • 모니터링/메트릭 등의 기능
  • Spring WebFlux 위에서 API Gateway를 구축하기 위한 라이브러리
  • Netty를 WAS로 사용한다.

API Gateway

API Gateway는 API의 요청자(Client)와 API의 제공자인 backend service를 연결하는 중계자.
API를 사용하는 애플리케이션과 API를 제공하는 백엔드 서비스는 API Gateway를 통해 데이터를 유통한다.
API Gateway가 필요한 이유는 안전한 API 유통과 Client 요청 별로 유연하게 대처하기 위함이다.

  • 안전한 API 유통
  • Client 요청 별로 유연하게 대처
    유연하게 대처한다는 것은, Client 유형(웹브라우저, 모바일 앱 등)에 따라 맞는 API를 연결하거나,
    사용자의 권한이나 속성에 따라 적절한 결과를 리턴한다는 뜻.

API Gateway 기능 정리

  • 인증/인가 : 부적절한 요청을 차단하여 Backend Service 보호
  • L/B & Routing : Client의 요청에 따라 적절한 backend service를 로드밸런싱(L/B)하고 연결(Routing)
  • Loging : 유통되는 트래픽 로깅
  • Circuit Break : Backend Service 장애 감지 및 대처
  • 모든 frontend의 요청을 라우팅하므로 점진적으로 레거시 시스템을 신규 시스템으로 교체
  • 트래픽 일부만 새로운 서비스로 라우팅

Netty ?

API Gateway는 모든 요청이 통과하는 곳이기 때문에 성능적인 측면이 매우 중요한데, 때문에 SCG는 하나의 쓰레드에서 여러 요청을 수행할 수 있는 Netty를 사용한다.
기존의 1Thread : 1Request 방식인 Spring MVC를 사용할 경우 성능적인 이슈가 발생할 수 있다.
Netty는 비동기 WAS이고, 1Thread / Many Request 방식을 사용하기 때문에 기존 방식보다 더 많은 요청을 처리할 수 있다.

  • Netty는 비동기 네트워킹을 지원하는 애필리케이션 프레임워크

SCG(Spring Clound Gateway)

Zuul vs SCG 차이점

Zuul / Spring Cloud Gateway
동작방식 Blocking(동기) Non-Blocking(비동기)
동작원리 Filter only Predicates+Filters
사용서버 Tomcat Netty

profile
방문해주셔서 감사합니다🙂

0개의 댓글