Spring Cloud Gateway 개념

Hyunjun Jang·2021년 7월 27일
2

Spring Cloud Gateway란?

Spring Cloud Gateway는 Spring 및 Java 위에 API 게이트웨이를 빌드하기 위한 라이브러리를 제공한다. 여러 기준에 따라 요청을 라우팅하는 유연한 방법을 제공할 뿐만 아니라 보안, 탄력성 및 모니터링과 같은 교차 문제에 중점둔다.

API Gateway로써 쉽게 Endpoint의 요청을 받고 API Service에게 라우팅 해주는 서버다.

Spring Cloud Gateway는 Spring Reactive 생태계 위에 구현된 API Gateway이다. 게이트웨이 핸들러 매핑을 사용하여 들어오는 요청을 적절한 대상으로 라우팅하는 간단하고 효과적인 방법을 제공한다.
그리고 Spring Cloud Gateway는 Netty를 사용하여 non-blocking 요청 처리를 제공한다.

핵심 요소

  • 라우트(Route) : 라우트는 목적지 URI, 조건자 목록과 필터의 목록을 식별하기 위한 고유 ID로 구성된다. 라우트는 모든 조건자가 충족됐을 때만 매칭된다

    대상 URI, 조건부 집합(Predicates), 각종 필터들로 이루어진 요청을 라우팅할 대상들이라고 생각하자.

  • 조건자(Predicates) : 각 요청을 처리하기 전에 실행되는 로직, 헤더와 입력된 값 등 다양한 HTTP 요청이 정의된 기준에 맞는지를 찾는다.

    Java 8의 Function Predicate로, 라우팅에 필요한 조건이다. 예로 path = /abc 같은 조건이나, request header의 특정 키-값도 조건으로 사용할 수 있다.

  • 필터(Filters) : HTTP 요청 또는 나가는 HTTP 응답을 수정할 수 있게한다. 다운스트림 요청을 보내기전이나 후에 수정할 수 있다. 라우트 필터는 특정 라우트에 한정된다.

    Spring Framework의 WebFilter 인스턴스이다. Filter에서는 요청 전후로 요청/응답을 추가/수정 할 수 있다.

동작 원리


1. 클라이언트는 Spring Cloud Gateway에 요청한다.
2. 게이트웨이 핸들러 매핑이 요청이 경로와 일치한다고 결정하면 게이트웨이 웹 핸들러로 전송된다.
3. 이 핸들러는 요청과 관련된 필터 체인을 통해 요청을 실행한다.
필터가 점선으로 구분되는 이유는 필터가 프록시 요청을 보내기 전후에 로직을 실행할 수 있기 때문이다.
4. 모든 pre 필터 로직 실행된다.
5. 프록시 요청 실행된다.
6. post 필터 로직가 실행된다.

Reference

절대적 발전
spring-cloud-gateway-tutorial-5311ddd59816
gateway-how-it-works
msa-api-gateway

                    
profile
Let's grow together😊

0개의 댓글