Spring Cloud Gateway 알아보기(1)

광부's avatar
May 05, 2024
Spring Cloud Gateway 알아보기(1)

필요성

  • MSA 방식으로 개인 프로젝트를 진행하며, 공통된 기능(Jwt인증, API 별로 호스트 포트넘버 매핑)을 반복하다 보니 API gateway의 필요성을 느끼게 되었다.
  • 지난 학기 프로젝트에서 nginx의 리버스 프록시 기능을 활용하여 요청을 전달했었는데, 라우팅외에 더 강력한 기능이 있는 gateway를 사용해 보기로 하였다.

API 게이트웨이란?

MicroService Architecture(MSA)를 구성하는 다양한 기능 요소 중 External Gateway로 분류된 기능에 속하는 것이 API Gateway이다. MSA는 세부적인 서비스가 모듈 단위로 구성되어 있기에 Gateway를 사용하여 요청을 라우팅하여 엔드포인트를 단일화 해주는 기능을 제공한다. + 그리고 서비스의 필수 기능들을 모든 마이크로 서비스마다 구현하기에는 작업량이 늘어나기에 공통된 필수 기능 요소들을 제공해주는 역할 도 한다.
 

API 게이트웨이의 주요 기능

  1. 인증과 인가
  1. API 라우팅
  1. QoS
  1. 로깅 및 모니터링
  1. 입력 유효성 검사

Spring Cloud Gateway 란?

Spring WebFlux 혹은 WebMVC 위에서 API Gateway를 구축하기 위해 제공되는 라이브러리.

Spring Cloud Gateway의 기능

  • Able to match routes on any request attribute
    • 요청의 헤더, 쿼리 파라미터, HTTP 메서드 등에 따라 다른 경로로 라우팅
  • Predicates and filters are specific to routes
    • Predicates(선언자)와 filters(필터)는 각각의 라우트에 특정되어 있고, 라우트에 따라 서로 다른 조건과 작업을 수행할 수 있게 해준다.
  • Circuit Breaker integration
    • Circuit Breaker 패턴을 지원하여 서비스 간의 통신 중 발생하는 지연, 실패 등의 장애를 처리하고 이후 요청을 빠르게 실패하도록 설정한다.
  • Spring Cloud DiscoveryClient integration
    • Spring DiscoveryClient와 통합하여 서비스 디스커버리를 지원한다. 이를 통해 서비스의 위치를 자동으로 감지하고 요청을 라우팅할 수 있다.
  • Easy to write Predicates and Filters
    • 사용자가 쉽게 Predicates와 Filters를 작성할 수 있도록 지원함.
  • Request Rate Limiting
    • 요청 속도 제한을 설정할 수 있음. 과도한 요청으로 인한 서비스 부하를 방지하고 안정성을 유지할 수 있음.
  • Path Rewriting
    • 요청 경로를 재작성할 수 있음. 게이트웨이로 들어오는 요청의 경로를 수정하여 백엔드 서비스로 전달할 수 있음. 클라이언트에 노출되는 경로와 내부 서비스의 경로를 분리하는데 용이하며 Location transparency를 제공함. (내부 서비스의 host, port를 클라이언트가 몰라도 됨)
 
 
Share article

광부의 채광일지