y1551463

API Gateway(Spring Cloud Gateway)

APIGateway
a month ago
·
5 min read

API Gateway란

  • 클라이언트와 백엔드 서비스 사이에 위치한 진입점(중간계층)이다

  • 클라이언트가 개별 서비스와 직접 통신하지 않고 API 게이트웨이를 통해 요청을 전송한다

  • 게이트웨이가 요청을 적절한 서비스로 전달하거나 추가 작업(필터링, 인증 등)을 진행한다

API Gateway 주요 기능

  1. 라우팅 : 클라이언트 요청을 적절한 마이크로 서비스로 전달한다

  2. 필터링 : 요청 및 응답을 변환하거나 검사하는 기능이다

  3. 보안 : 인증, 권한 부여, 요청 검증 등을 수행한다

  4. 로드밸런싱 : 여러 인스턴스에 요청을 분산시킨다

  5. 모니터링 및 로깅 : 요청 / 응답 데이터를 로깅하고 모니터링할 수 있다

  6. 속도제한 및 트래픽 제어 : 특정 클라이언트 또는 IP의 요청을 제한할 수 있다

Spring Cloud Gateway란

  • Spring Frame work 기반으로 개발된 API 게이트웨이 솔루션

    • API 게이트웨이를 구현하기 위한 프레임워크

  • 스프링의 유연성과 생산성을 활용하여 API 게이트웨이의 주요 기능을 쉽게 구현할 수 있도록 돕는다

특징

  • 비동기 네트워크 처리 : Netty와 Reactor 기반으로 고성능 비동기 요청 처리가 가능하다

  • Spring Boot 통합 : 간단한 설정으로 API 게이트웨이를 구축할 수 있다

  • 유연한 요청 필터링 및 라우팅 : Filter와 Predicate를 사용하여 세부 동작을 설정할 수 있다

  • Spring Cloud 생태계와의 통합 : Eureka, Config Server, Resilience4j 등과 쉽게 연동할 수 있다

Spring Cloud Gateway의 주요 구성 요소

  1. Routes (라우트)

    • 요청이 전달되는 경로를 정의한다

    • 각 라우트는 Predicate (조건) 와 Filter (처리) 로 구성된다

    • 구성

      • id : 라우트 식별자

      • uri : 요청이 전달될 백엔드 서비스 주소

      • predicates : 라우팅 조건

      • filters : 요청 / 응답을 반환하거나 수정하는 로직

  2. Predicates (조건)

    • 요청을 특정 서비스로 라우팅할지 여부를 결정하는 조건

  3. Filters (필터)

    • 요청이나 응답을 수정하거나 추가 동작을 수행

  4. Global Filters

    • 모든 요청에 공통으로 적용되는 필터

Spring Cloud Gateway 동작 흐름

  1. 클라이언트 요청 : 클라이언트가 API 게이트웨이로 요청을 보낸다

  2. Predicate : 요청이 특정 라우트와 일치하는지 조건을 확인한다

  3. Filter 처리 : 요청 / 응답에 대한 추가 작업을 진행한다

  4. 백엔드 호출 : 필터링 후 해당 요청을 적절한 백엔드로 전달한다

  5. 응답 반환 : 백엔드에서 응답을 받아 클라이언트로 반환한다

Spring Cloud Gateway 필터

  1. yml에 설정하는 필터

    • Spring Cloud Gateway의 라우트 설정에 사용하는 필터

    • 간단한 사전 정의 필터를 조합해서 사용

      • ex: AddRequestHeader (응답 헤더 추가), RewritePath (요청 경로 재작성), StripPrefix(경로의 일부 제거) 등

    • 특정 라우트에만 적용된다

  2. Java 코드로 구현하는 필터 (커스텀 필터)

    • GlobalFilter 또는 GateWayFilter 인터페이스를 구현한다

    • 모든 라우트에 적용하거나 특정 조건에서 동작한다

    • Pre / Post 필터로 나눠 요청과 응답에 대한 맞춤형 처리가 가능하다

    • @Component로 스프링 빈 등록 필요


- 컬렉션 아티클