SMALL

Spring Cloud Gateway란 

API Gateway이다

    (사용자의 요청을 받고 적절한 MicroService에게 라우팅 해주는 서버)

    (API Gateway는 Reverse Proxy 기능을 향상한 것이다)

        (Reverse Proxy : 클라이언트의 요청을 받고 이 요청을 적절한 Backend 서버로 라우팅 해주는 서버) 

라우팅 이외에도 보안, 모니터링/메트릭 등의 기능을 간단하고 효과적인 방법으로 제공한다.

API Gateway 특성상 모든 요청이 거쳐가는 곳이기 때문에 성능이 매우 중요하다.

- 비동기식 이벤트 기반의 WAS인 Netty를 사용

Spring5, SpringBoot2, ProjectReactor로 구축되었다

 

Spring Cloud Gateway 주요 특징

Route

클라이언트의 요청을 어느 서버로 라우팅 할 것인지를 나타내는 내용

목적지 URI, Predicates, Filter로 이루어져 있다.

 

Predicate

요청이 어떤 Path인지 또는 어떤 헤더를 가지고 있는지에 대한 조건 

 

Filter

Spring WebFilter 인스턴스, Filter를 통해서 요청 또는 응답을 변경할 수 있다

 

사용 예시 - application.yml

spring:
  cloud:
    gateway:
      routes:
        - id: product-service
          uri: http://localhost:8045
          predicates:
            - Path=/product/**
        - id: cartservice
          uri: http://localhost:8050
          predicates:
            - Path=/cart/**

 

Microservice를 구축할 경우

다양한 서비스들이 존재할 텐데 사용자가 각각의 서비스들의 주소를 모두 알 수도 없고 알아서도 안된다.

이런 경우에는 사용자의 요청을 API Gateway에서 받고

해당 요청을 받은 API Gateway가 각각의 요청을 적당한 microservice로 라우팅 해주어야 한다

 

위의 시나리오를 구현한 설정값들을 알아보도록 하자

 

 

API Gateway 설정

 

spring:
  cloud:
    gateway:
      routes:
        - id: product-service
          uri: http://localhost:8045
          predicates:
            - Path=/product/**
        - id: cartservice
          uri: http://localhost:8050
          predicates:
            - Path=/cart/**

 

Dependency 추가 ( gradle )

dependencies {
	implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
}
LIST

+ Recent posts