SCG(Spring Clound Gateway)

종원유·2022년 7월 19일
0

MSA

목록 보기
4/5
post-thumbnail

SCG(Spring Cloud Gateway)

Spring Cloud Gateway ?
Spring Cloud Gateway(SCG)란 MSA 환경에서 사용하는 API Gateway 중 하나로 Spring 5, Spring Boot2, Project Reactor로 구축된 API Gateway다. Spring Cloud Gateway눈 API 라우팅 및 보안, 모니터링/메트릭 등의 기능을 간단하고 효과적인 방법으로 제공한다.
Spring WebFlux 위에서 API Gateway를 구축하기 위한 라이브러리이다.
SCG는 클라이언트의 모든 요청이 지나가는 곳이기 때문에 성능이 굉장히 중요한데, 때문에 하나의 쓰레드에서 여러 요청을 수행할 수 있는 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는 비동기 네트워킹을 지원하는 애필리케이션 프레임워크
profile
개발자 호소인

0개의 댓글