API Gateway
인증 / 모니터링 / 오케스트레이션 등과 같은 기능을 포함한 향상도니 Reverse Proxy
API Gateway가 필요한 이유는 안전한 API유통과 Client 요청별로 유연하게 댗하기 위함.
MSA에서 언급되는 컴포넌트 중 하나이며 모든 클라이언트 요청에 대한 endpoint를 통합하는 서버
마치 프록시 서버처럼 동작함
인증 및 권한 모니터링, loggin 등 추가적인 기능이 있음
모든 비즈니스 로직이 하나의 서버에 존재하는 Monolithic Architecture과 달리 MSA는 도메인별 데이터를 저장하고 도메인별로 하나 이상의 서버가 따로 존재함.
한 서비스에 한개 이상의 서버가 존재하기 때문에 이 서비스를 사용하는 클라이언트 입장에서는 다수의 endpoint가 생기게 되며, endpoint 변경이 일어났을때 관리하기 힘듦.
그래서 MSA환경에서 서비스에 대한 도메인인 하나로 통합할 수 있는 API GATEWAY가 필요함
SCG(Spring Cloud Gateway)
Spring Reactive 생태계에 구현된 API Gateway.
Gateway Handler Mapping으로 들어오는 요청들을 적절한 대상으로 라우팅하는 간단하고 효과적인 방법을 제공
SCG는 non-blocking,, asynchronous 방식의 Netty Serer를 사용
➡️ 서블릿 컨테이너나 WAR로 빌드하면 동작하지 않음.
SCG의 라우팅이 작동하는 방식에 대한 흐름도
SCG는 3가지 핵심으로 이뤄짐
- Route
대상 URI, 조건부 집합(Predicates), 각종 필터들로 이루어진 요청을 라우팅할 대상들이라고 생각 - Predicate
Java 8의 function predicate로, 라우팅에 필요한 조건
ex) path = /abc 같은 조건이나, request header의 특정 키-값도 조건으로 사용할 수 있음 - Filter
Spring Framework의 WebFilter 인스턴스임.
Filter에서는 요청 전후로 요청 / 응답을 추가/수정 할 수 있음
클라이언트는 SCG로 요청을 함.
Gateway Handler Mapping이 Route에 일치하는 요청이라고 판단하면, Gateway Web Handler로 보냄.
핸들러는 요청과 관련된 filter chain을 통해 요청을 보냄.
필터가 점선으로 구분된 이유는, 필터는 proxy 요청이 보내지기 전 / 후 로 로직을 실행하기 떄문
모든 “사전”필터 로직이 실행 된 후, 프록시 요청이 만들어짐.
프록시 요청이 만들어지면 “사후” 필터 로직이 실핻 됨.
라우트 조건부 팩토리 (Route Predicate Facotires)
SCG는 Spring Webflulx HandlerMapping 기반 구조의 일부로서 경로를 매치함.
SCG는 다양한 라우트 조건부 팩토리를 내장하고 있음.
모든 조건(predicates)은 HTTP 요청의 다른 속성들과 매치됨.
복수의 라우트 조건부 팩토리들을 결합할 수 있으며 논리적 and 조건으로 조합됨.
GatewayFilter Factories
라우트 필터는 들어오는 HTTP 요청이나 나가는 HTTP 응답을 어떤 식으로는 수정할 수 있게 함
라우트 필터는 특정 route 범위
SCG는 다양한 GatewayFilter Factory를 내장하고 있음
출처 :
'Dev > Spring' 카테고리의 다른 글
Bean & Component (0) | 2021.09.27 |
---|---|
JPA CascadeType (0) | 2021.09.27 |
Spring Security (0) | 2021.09.24 |
Spring Batch - JobParameter & Scope (0) | 2021.09.24 |
Spring Batch - BatchStatus & ExitStatus (0) | 2021.09.24 |