본문 바로가기

개발일지/JAVA

API Gateway & Spring Cloud Gateway

📌 API Gateway

API Gateway는 API 클라이언트와 백엔드 서비스(서버에 위치) 사이의 중개자 역할을 하는 API Management 툴

클라이언트 요청을 단일 진입점(게이트웨이)에서 처리하여 마이크로서비스와의 통신을 효율적으로 관리하는 역할

-> 이를 통해 공통 로직 처리, 인증 및 인가, 라우팅, 부하 분산, 로깅, 캐싱 등의 기능을 중앙에서 관리할 수 있습니다.

API Gateway 작동방식

 

 주요기능

  • 인증 및 권한 부여
  • 서비스 검색 통합
  • 응답 캐싱
  • 정책, 회로 차단기 및 Qos 다시 시도
  • 속도 제한
  • 부하분산
  • 로깅, 추적, 상관 관계
  • 헤더, 쿼리 문자열 및 청구 변환
  • IP 허용 목록에 추가

 

 역할

API Gateway는 클라이언트와 서버 간 API 요청을 관리하는 게이트웨이 역할을 한다.

  • 클라이언트는 각 마이크로서비스의 엔드포인트 대신 API Gateway로 요청을 전달하여 관리가 용이해 진다.
  • 사용자가 설정한 라우팅 규칙에 따라 해당 마이크로서비스로 요청을 전달하고 응답을 받아 다시 클라이언트에게 반환하는 프록시(proxy) 역할을 수행한다.

이러한 방식으로 API Gateway를 사용하면, 각 마이크로서비스에서 인증/인가, 요청 변조 등의 기능을 중복 구현할 필요 없이 중앙에서 일괄 관리할 수 있어 개발 비용과 유지보수 부담을 줄일 수 있습니다.

 

 API 유형

1. HTTP API

  • 기본적인 API 프록시 기능 제공
  • 단순한 요청 라우팅이 필요할 때 적합
  • 저렴하고 빠름
  • API 프록시 기능만 필요한 API를 구축할 때 가장 적합함.

2. RESTful API

    • API 관리 기능 (요청/응답 제어, 보안, 로깅) 포함
    • 복잡한 API 관리가 필요할 때 사용
    • 기능이 많지만 상대적으로 비싸고 속도가 느릴 수 있음
    •  HTTP API를 사용하여 서버리스 워크로드 및 HTTP 벡엔드에 최적화된 RESTful API를 구축

3. WebSocket API

  • 채팅 앱 및 스트리밍 대시보드와 같은 실시간 양방향 통신 애플리케이션을 구축

 


📌 Spring Cloud Gateway (SCG)

  • Spring에서 제공하는 오픈 소스 기반의 API Gateway 서비스
  • 기존에 사용되던 Spring Cloud Zuul이 Deprecated된 후 Spring Cloud Gateway가 사용됨
     - 기반 웹 서버 : Zuul은 Tomcat, Spring Cloud Gateway(이하 SCG)는 Netty
     - 동기 / 비동기 방식 : Zuul은 동기 방식, Netty는 비동기 방식
     - 웹 프레임워크 : Zuul은 Spring WEB MVC 기반이지만 SCG는 Spring WebFlux 기반
  • Spring에서 제공하는 다양한 Component를 조합하여 효율적인 개발이 가능
  • API 라우팅, 필터링, 로드 밸런싱과 같은 역할을 효과적으로 수행한다
     - 라우팅 (Routing) : 데이터가 이동할 때 이동 경로를 정하는 프로세스
     - 로드 밸런싱 (Load Balancing) : 여러 서버에게 들어오는 트래픽을 균등하게 분배하여 부하를 분산시키는 기술
     - 필터 (Filter) : Pre-filter, Post-filter, 라우팅 필터, 에러 필터가 있으며 이들은 요청을 받아 보안이나 헤더 추가와 같은 특정 작업을 수행한다.

 

구성요소

1. 라우트 (Route)

  • 가장 기본이 되는 요소
  • 요청된 uri의 조건이 predicate와 일치하는지 확인 후, 일치하는 경우 해당 uri 경로로 요청을 매칭
  • 고유한 값인 id, 목적지 URI , Predicate, Filter로 구성되어 있음

2. Predicate

  • API Gateway로 들어온 요청이 주어진 조건을 만족하는지 확인
  • 하나 이상의 조건을 정의할 수 있으며, 만약 Predicate 조건에 맞지 않는 경우 HTTP 404 Not Found 응답을 반환

3. Filter & Filter Chain

  • 요청이나 응답에 대해 전처리(Pre) / 후처리(Post)를 제공
  • 이 중에서 Proxy Filter는 프록시 요청이 처리될 떄 수행되는 필터
  • Filter Chain은 각각 하나의 서비스를 제공하는 Filter를 등록하고 사슬과 같이 이어져서 연쇄적으로 Filter가 실행하는 방법

 

 

기본 동작 구조

  • client가 SCG로 요청을 보낸다.
  •  Gateway Handler Mapping에서 라우팅 기능을 사용하여 이 요청을 어떤 라우트로 보낼지 결정한다.
  • 해당 라우트에 대응하는 Web Handler가 실행된다. 이는 필터 체인을 실행하여 요청 전송, 응답 생성 등의 작업을 수행하도록 한다.
  • Predicate는 요청 받은 API가 지정된 Route경로에 포함되는지 식별 후 Filter Chain으로 요청을 전달한다.
  • 응답 후 Post Filter 처리 및 client 반환

 

장점

  • Spring 기반 오픈 소스로 초기 라이선스 투자 비용 없음
  • WebFlux 기반의 Non-Blocking 방식 채용으로 빠른 응답 속도
  • Spring에서 제공하는 다양한 서비스(Spring Boot, Spring Security, OAuth2 Client, Redis 등)와 조합하여 서비스 가능
  • 오픈소스 커뮤니티에서 개발자 경험 공유 및 노하우 획득 가능
  • 요청을 다른 서버로 라우팅시키는 부분을 간단한 yml파일로 완성할 수 있음

 

 단점

  • 다양한 필수 기본 서비스가 제공되지만 적절한 기능을 선택이 어려움
  • 서비스 구현에서 다양한 테스트 및 문제 해결을 통한 최적화가 필요
  • GUI 기반 관리 기능 없음(필요 시 자체 구축 필요)
  • 라우팅 대상 서버가 많아진다면 관리가 어려울 수 있음

 

 

 

 

 

 

 

 

 

 

📚 참고자료
https://www.ibm.com/kr-ko/think/topics/api-gateway

 

API Gateway란 무엇인가요? | IBM

API Gateway는 API 클라이언트와 백엔드 서비스 간의 중개자 역할을 하는 API Management 툴입니다.

www.ibm.com

https://aws.amazon.com/ko/api-gateway/

 

Amazon API Gateway | API 관리 | Amazon Web Services

Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API는 애플리케이션이 백엔드 서비스의 데이

aws.amazon.com

https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-API-Gateway-%EA%B0%9C%EB%85%90-%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC

 

[AWS] 📚 API Gateway 개념 & 기본 사용법 정리

API Gateway 서비스 API Gateway란 규모에 상관없이 API 생성, 유지 관리, 모니터링과 보호를 할 수 있게 해주는 서비스이다. 말 그대로 Client에서 server로 통신할 때 사용하는 많은 api들의 대문(게이트웨

inpa.tistory.com

https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/welcome.html#api-gateway-overview-aws-backbone

 

Amazon API Gateway란 무엇입니까? - Amazon API Gateway

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

https://spring.io/projects/spring-cloud-gateway#overview

 

Spring Cloud Gateway

This project provides a library for building an API Gateway on top of Spring WebFlux. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to them such as: security, monitoring/metrics, and re

spring.io

https://s-core.co.kr/insight/view/spring-cloud-gateway-%EA%B8%B0%EB%B0%98%EC%9D%98-api-

%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-%EA%B5%AC%EC%B6%95/

 

에스코어

에스코어는 디지털 혁신을 위한 고급 프로페셔널 서비스를 제공합니다. 매니지먼트 컨설팅과 소프트웨어 테크놀로지 서비스 오퍼링을 살펴보세요.

s-core.co.kr

 

https://velog.io/@black_han26/Spring-Cloud-Gateway-%EA%B5%AC%ED%98%84

 

API Gateway, MSA의 출입구 ( Spring Cloud Gateway )

저번 시간에 API Gateway와 Spring Cloud를 알아보았다. 이번엔 Spring Cloud Gateway에 대해서 좀 더 자세하게 알아보자

velog.io

 

https://velog.io/@mrcocoball2/Spring-Cloud-Spring-Cloud-Gateway-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90

 

[Spring Cloud] Spring Cloud Gateway - 기본 개념

API 게이트웨이(패턴) 는 마이크로서비스 관리 / 운영을 위한 플랫폼 패턴이며 해당 패턴에 필요한 기능들을 제공하는 서버를 일컫습니다. API 게이트웨이는 개별 서비스의 앞 단에서 모든 서비스

velog.io