API 게이트 웨이란
API 게이트웨이는 실제 백엔드 서비스 또는 데이터와 접속하고 API 호출에 대한 정책, 인증 및 일반 액세스 제어를 적용하여 중요한 데이터를 보호하는 트래픽 관리자입니다. API 게이트웨이는 서비스의 확장성과 고가용성을 보장합니다. 요청을 적절한 서비스로 라우팅하고 요청자에게 응답을 다시 보내는 기능을 담당합니다. API 게이트웨이는 데이터와 API 간의 보안 연결을 유지하고 회사 내부 및 외부에서 로드 밸런싱을 포함한 API 트래픽 및 요청을 관리합니다.
게이트웨이는 중요한 데이터를 보호하기 위해 API 호출에 대한 정책, 인증 및 일반 액세스 제어를 적용합니다. API 게이트웨이는 클라이언트의 모든 API 호출을 가져와 요청 라우팅, 구성 및 프로토콜 변환을 사용하여 올바른 마이크로서비스로 라우팅합니다.API 게이트웨이를 사용하는 주된 이유 중 하나는 여러 백엔드 서비스를 호출하고 결과를 집계할 수 있기 때문입니다. 고객은 각 개별 서비스에 대한 요청을 보내야 하는 대신 API 게이트웨이로 보내 거기에서 해당 요청을 관련 서비스로 전달할 수 있습니다.
API Gateway Framework Zuul, Zuul2,SCG
Zuul 1.0 구조(동기)
Zuul 2.0 구조(비동기)
Spring Cloud Gateway 구조
gradle, yml 설정
//build.gradle.kts
//알아야 할 코드만 따옴
//boot가 dependencies를 관리하는 부분
plugins {
id("org.springframework.boot") version "2.4.3"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.4.30"
kotlin("plugin.spring") version "1.4.30"
}
dependencies {
implementation("org.springframework.cloud:spring-cloud-starter-gateway")
}
//cloud가 dependencies를 관리하는 부분
dependencyManagement {
imports {
mavenBom ("org.springframework.cloud:spring-cloud-dependencies:2020.0.1")
}
}
//application.yml
spring.cloud:
gateway:
httpclient:
connect-timeout: 3000
response-timeout: 10s
default-filters:
- name: GlobalFilter
args:
defaultMessage: Api gateway
preLogger: true
postLogger: true
routes:
- id: A
uri: http://localhost:8080
predicates:
- Path=/contents/**
filters:
- name: PostFilter
args:
defaultMessage: post filter
preLogger: true
postLogger: true
- id: B
uri: http://localhost:9080
predicates:
- Path=/contents/**
- After=2022-07-14T20:00:00.126+09:00[Asia/Seoul]
filters:
- name: PostFilter
args:
defaultMessage: post filter
preLogger: true
postLogger: true
# 헤더서비스 요청응답할때
- id: header-service
uri: http://localhost:8080
predicates:
- Path=/headerservice
- Header=X-PHOTO-API-VERSION, 1.0.0
filters:
- name: PostFilter
args:
defaultMessage: post filter
preLogger: true
postLogger: true
1
2
출처 :
https://www.tibco.com/ko/reference-center/what-is-an-api-gateway
'스프링 > cloud' 카테고리의 다른 글
[스프링 클라우드] ch02 스프링 클라우드 소개 (0) | 2022.05.13 |
---|---|
[스프링클라우드] ch01. 웹 서비스 확장 전략 (0) | 2022.05.12 |