📌 API Gateway
API Gateway는 API 클라이언트와 백엔드 서비스(서버에 위치) 사이의 중개자 역할을 하는 API Management 툴
클라이언트 요청을 단일 진입점(게이트웨이)에서 처리하여 마이크로서비스와의 통신을 효율적으로 관리하는 역할
-> 이를 통해 공통 로직 처리, 인증 및 인가, 라우팅, 부하 분산, 로깅, 캐싱 등의 기능을 중앙에서 관리할 수 있습니다.

✔ 주요기능
- 인증 및 권한 부여
- 서비스 검색 통합
- 응답 캐싱
- 정책, 회로 차단기 및 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
[AWS] 📚 API Gateway 개념 & 기본 사용법 정리
API Gateway 서비스 API Gateway란 규모에 상관없이 API 생성, 유지 관리, 모니터링과 보호를 할 수 있게 해주는 서비스이다. 말 그대로 Client에서 server로 통신할 때 사용하는 많은 api들의 대문(게이트웨
inpa.tistory.com
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
[Spring Cloud] Spring Cloud Gateway - 기본 개념
API 게이트웨이(패턴) 는 마이크로서비스 관리 / 운영을 위한 플랫폼 패턴이며 해당 패턴에 필요한 기능들을 제공하는 서버를 일컫습니다. API 게이트웨이는 개별 서비스의 앞 단에서 모든 서비스
velog.io
'개발일지 > JAVA' 카테고리의 다른 글
Spring Cloud Netflix Eureka 적용 (1) | 2025.02.04 |
---|---|
(항해99) Java 문법 종합반 5주차 정리 (0) | 2023.06.15 |
(항해99) Java 문법 종합반 4주차 정리 (0) | 2023.06.12 |
(항해99) Java 문법 종합반 3주차 정리(1) (0) | 2023.05.30 |
(항해99)Java 문법 종합반 2주차 정리(2) (0) | 2023.05.24 |