본문 바로가기

빗썸 테크코스 아카데미/2주차(WebFlux)

API Gateway

Api Gateway Service

역할

사용자 라우팅 설정에 따라 각각 end point로 클라이언트 대신해서 요청하고 응답받으면 전달해주는 일종의 proxy기능을 수행한다.

사용 이유

MSA Architecture 구조내에서 Micro service들이 변경을 했을 경우

마이크로 서비스들은 독립적인 빌드, 배포 되는 구조이고 AWS를 사용할 경우, Scale Up이나 Scale Out을 할 경우 IP주소 나 도메인 주소 변경의 우려가 존재한다.

따라서 Micro Service의 주소에다 직접 요청을 하는 클라이언트 입장에서는 변경이 필요하다.

 

상기의 이유들로 인해서 하나의 진입점을 가진 Gateway가 필요하게 되고, 이 Gateway는 Micro Service에 요청되는 모든 정보들을 일괄적으로 처리 해준다.

 

주요 기능

주요기능으로는 인증 및 권한, 부하 분산, 속도제한 등이 존재한다.

유레카 서버

API Gateway에 client는 request를 하게 되면, API Gateway는 이를 처리할 필요가 있습니다. 

이를 위해서 API Gateway는 각 Micro App들의 주소, 포트와 같은 접근 내역들을 알 필요가 있으며 이를 해결해주는 것이 Eureka Server입니다.

 

유레카 서버는 각 MIcro App들이 자신의 정보를 저장하는 곳이고 해당 저장된 정보를 통해서 API Gateway는 Client요청을 처리할수 있습니다.

Gateway Filter란?

위의 내용을 종합적으로 따져보면 Gateway는 다음과 같은 일을 수행합니다.

1. Client가 Spring Cloud Gateway로 요청을 하게 되면 Gateway는 해당되는 서비스로 요청을 분기하여줍니다.

Gateway는 요청을 분기 시켜주기 전과 서비스에게 요청에 대한 응답을 받은 후에 각각 Filter 처리를 해 줄 수 있습니다.이를 pre filter와 post filter라고 합니다.

동작 방식

Cilent Request -> Gateway Handler -> predicate 영역에서의 분기 -> pre-filter 처리 -> 서비스에서의 요청 처리 -> post- filter -> Gateway Handler -> Client

Custom Filter

1. Componet annotation을 통해 Spring bean으로 등록

2. AbstractGatewayFilterFactory를 상속 받고, apply메소드를 override함으로써, gatewayFiler를 반환시킨다.

3. (exchange,chain) 형태로 반환

Global Filter

1. Custom Filter의 경우, 개별적으로 서비스마다 등록을 해야 하는데 반해 Global Filter은 공통적으로 실행될수 있는 FIlter

2. config라는 클래스에 configuration의 정보를 담을 수 있음. configuration의 정보는 위의 gateway-service에서의 환경설정을 참조한다.

Logging Filter

1. Logging Filter의 우선 순위를 정해주고 있다.

실행 순서

  1. Client Request
  2. Gateway Handler
  3. pre-filter 처리(Global Filter -> Custom Filter -> Logging Filter 순으로 처리)
  4. Request 실행
  5. post-filter 처리(Logging Filter -> Custom Filter -> Global Filter 순으로 처리)
  6. Gateway Handler
  7. Client

'빗썸 테크코스 아카데미 > 2주차(WebFlux)' 카테고리의 다른 글

Circuit Breaker - resilience4j  (0) 2022.07.31
WebFlux(User service 구현)  (0) 2022.05.09
Eureka Server  (0) 2022.05.09