Closed SongGwanSeok closed 3 months ago
Reverse Proxy
Spring Reactive 환경에 구현된 API Gateway
📌 Route 응답을 보낼 목적지 uri와 필터 항목을 식별하기 위한 ID로 구성되어 있고 라우팅 목적지를 의미한다. 📌 Predicate 요청을 처리하기 전 HTTP 요청이 정의된 조건에 부합하는지 검사하며 Java 8의 Function Predicate 이다. 📌 Filter 게이트웨이에서 받은 요청과 응답을 수정하는 역할로 Spring Framework의 WebFilter 인스턴스이다.
# application.yml 예시
spring:
cloud:
gateway:
default-filters:
- name: GlobalFilter
agrs:
preLogger: true
postLogger: true
routes:
- id: product-service
uri: lb://PRODUCT-SERVICE
predicates:
- Path=/product/**
filters:
- name: UserFilter
args:
baseMessage: productFilter
preLogger: true
postLogger: true
구성이 디폴트로 적용되는 GlobalFilter와 각 서비스에 적용할 수 있는 내부 ServiceFilter로 구성
장점
단점
⠀출처: ~https://mangkyu.tistory.com/230~ [MangKyu's Diary:티스토리]
API Gateway에서 제공하는 API는 대표적으로 3종류가 있다.
API Gateway 실전 사용 (HTTP API) 출처: ~https://inpa.tistory.com/entry/AWS-📚-API-Gateway-개념-기본-사용법-정리~ [Inpa Dev 👨💻:티스토리]
AWS API Gateway 장점
⠀Spring Cloud Function 장점
⠀API Gateway 사용의 단점:
⠀Spring Cloud Function을 사용하는 단점:
정답은 없다. 사용자가 상황에 맞게 각 기술 문서들을 보고 결정해야한다.
마이크로 서비스로 구성된 시스템에서 통합된 접점을 제공한다. 여러 마이크로 서비스에 대한 요청을 하나의 엔드포인트로 보낼 수 있다. 이를 통해 시스템의 복잡성을 줄이고, 클라이언트와 서버간의 통신을 간소화하는데 도움을 준다.
또한, API 게이트웨이는 인증 및 권한 부여, 요청 및 응답의 변환, 로깅과 같은 크로스 커팅 관심사를 처리함으로써 각 마이크로서비스가 비즈니스 로직에만 집중할 수 있도록 지원합니다.
API 게이트웨이는 크게 오픈 소스와 상용 제품으로 나눌 수 있습니다. 오픈 소스 게이트웨이로는 Kong, Tyk, Zuul 등이 있으며, 상용 제품으로는 AWS API Gateway, Azure API Management 등이 있습니다.
모든 종류의 API Gateway가 인증 및 권한 부여, 요청 변환, 로깅 등 필요한 기능을 지원하는 것은 아니기 때문에 지원하는지 확인이 필요하다.
스프링 클라우드 게이트웨이는 자바 개발자들 사이에서 인기 있는 솔루션 중 하나다.
스프링 클라우드 게이트웨이는 비동기 I/O를 기반으로 하며, Netty 서버를 사용합니다. 이는 고성능을 제공하며, 리액티브 프로그래밍 모델을 지원합니다.
자바 네트워크 애플리케이션 프레임워크.
비동기 이벤트 기반 네트워크 응용프로그램 프레임워크
간단한 예제
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/get")
.uri("http://httpbin.org"))
.build();
}
}
동작 원리 ![[스크린샷 2024-07-25 오전 11.07.27.png]]
HTTP API : API 프록시 기능정도만 필요할 때 적합. 단순 / 저렴하고 빠르다. ![[스크린샷 2024-07-25 오전 11.01.01.png]]
REST API : API 관리 기능, 요청/응답에 대한 제어가 필요할 경우 적합, 복잡 / 비싸고 느리다. ![[스크린샷 2024-07-25 오전 11.02.20.png]]
WebSocket API : 웹소켓 용도. 실시간 애플리케이션에서 주로 사용한다.
아마 Spring Cloud Gateway를 사용하지 않을까?
📝 Description
무엇을?
왜? -Gateway를 이용한 로그인 구현
❗️Todo
ETC
기타사항