API Gateway는 마이크로서비스 아키텍처에서 필수적인 구성 요소이며, 그중에서도 클라이언트 요청을 적절한 서비스로 연결하는 라우팅(Routing) 기능은 핵심 중의 핵심이다.
라우팅(Routing) 개념
📌 사전적 정의
라우팅(Rouring)이란, 네트워크 내에서 데이터가 목적지까지 도달하는 경로를 선택하는 과정을 말한다.
라우팅은 클라이언트의 요청 URL, HTTP 메서드, 헤더, 쿼리 파라미터 등을 기준으로, 적절한 백엔드 서비스로 요청을 전달하는 프로세스이다.
즉, API Gateway는 클라이언트 요청을 받아 조건에 따라 내부 마이크로서비스로 분기시킨다.
📌 API Gateway에서의 라우팅
API Gateway에서의 라우팅은 단순히 경로를 지정하는 것을 넘어서, 다음과 같은 역할을 수행한다.
- 클라이언트 요청을 적절한 백엔드 서비스로 중계
- 서비스의 위치, 구조, 구현 방식 등을 클라이언트로부터 추상화
- 서비스 간 결합도를 낮추고, 전체 시스템의 유연성과 확장성 향상
라우팅 규칙 구성 요소
라우팅을 구성할 때, 아래와 같은 요소들을 활용할 수 있다.
요소 | 설명 |
Path | URL 경로 기준 매칭 |
Method | HTTP 메서드 (GET, POST 등) |
Host | 도메인 기반 분기 |
Header | 특정 헤더가 있을 때만 분기 |
Query | 쿼리 파라미터 기반 분기 |
Weight | 가중치 기반 트래픽 분배 |
Prefix / StringPrefix | 경로 재작성 (Rewrite) |
라우팅의 주요 기능 및 역할
1️⃣ API 요청 분석 및 매핑

클라이언트 요청의 URL, HTTP Method, 헤더, 쿼리 파라미터 등을 기준으로 분석하여 적절한 서비스로 매핑한다.
📌 예시: Spring Cloud Gateway
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/api/users/**
- Method=GET
- /api/users/** 경로로 들어온 GET 요청은 user-service로 전달된다.
2️⃣ API 동적 라우팅
서비스 디스커버리와 연동하여 동적으로 서비스 인스턴스를 탐색하고 연결한다.
✔ 서비스 디스커버리 연동
Eureka,Consul과 같은 디스커버리 시스템과 연결해 현재 실행 중인 인스턴스와 IP와 포트를 실시간으로 확인한다.
✔ 요청의 정확한 라우팅
최신 인스턴스 정보에 따라 가장 적절한 서버로 요청을 전달한다.
✔ 로드 밸런싱
트래픽이 한 서비스에 몰리지 않도록, 여러 인스턴스에 트래픽을 고르게 분산시켜 시스템 안전성을 확보한다.
📌 예시
- id: product-service
uri: lb://PRODUCT-SERVICE
predicates:
- Path=/api/products/**
- 'lb://' 접두사는 로드 밸런서를 통해 동적으로 인스턴스를 선택한다.
3️⃣ API 버전 관리 및 단계적 배포
📍 버전 관리
API Gateway는 클라이언트가 요청한 버전에 따라 다른 서비스로 라우팅할 수 있다.
- id: user-v1
uri: http://localhost:8081
predicates:
- Header=X-API-VERSION, v1
- id: user-v2
uri: http://localhost:8082
predicates:
- Header=X-API-VERSION, v2
- 클라이언트가 X-API-VERSION: v1 헤더를 보내면 v1으로, v2를 보내면 v2로 라우팅된다.
📍 단계적 배포 (Canary Release)
트래픽을 일정 비율로 나눠서 새로운 버전으로 전달하여 위험을 줄이는 방식이다.
- id: user-v1
uri: http://localhost:8081
weight: group, 80
- id: user-v2
uri: http://localhost:8082
weight: group, 20
- 사용자 중 80%는 v1, 20%는 v2로 접속하게 된다.
4️⃣ 에러 처리 및 통합 응답 포맷팅

API Gateway는 다양한 서비스에서 발생한 응답을 일관된 포맷으로 클라이언트에게 반환된다.
📌 예시: JSON 통일 응답
{
"status": "error",
"message": "서비스를 처리할 수 없습니다. 관리자에게 문의해주세요.",
"code": "SERVICE_UNAVAILABLE"
}
📌 예시: Gateway Filter 적용
filters:
- name: CircuitBreaker
args:
name: fallback
fallbackUri: forward:/fallback
- 백엔드 서비스에 장애가 발생하면 /fallback 경로로 자동 전환하여 에러 메시지를 통제한다.
'아키텍처 & 설계(Architecture & Design) > MSA' 카테고리의 다른 글
[API Gateway] API Gateway에서의 트래픽 제어 (0) | 2025.04.08 |
---|---|
[API Gateway] API Gateway에서 인증과 인가 처리 방법 (0) | 2025.04.02 |
[API Gateway] API Gateway 프록시 서버 개념과 역할 (0) | 2025.03.31 |
[API Gateway] API Gateway 개념 (0) | 2025.03.30 |
MSA 멀티 모듈 설정 (0) | 2024.04.24 |
API Gateway는 마이크로서비스 아키텍처에서 필수적인 구성 요소이며, 그중에서도 클라이언트 요청을 적절한 서비스로 연결하는 라우팅(Routing) 기능은 핵심 중의 핵심이다.
라우팅(Routing) 개념
📌 사전적 정의
라우팅(Rouring)이란, 네트워크 내에서 데이터가 목적지까지 도달하는 경로를 선택하는 과정을 말한다.
라우팅은 클라이언트의 요청 URL, HTTP 메서드, 헤더, 쿼리 파라미터 등을 기준으로, 적절한 백엔드 서비스로 요청을 전달하는 프로세스이다.
즉, API Gateway는 클라이언트 요청을 받아 조건에 따라 내부 마이크로서비스로 분기시킨다.
📌 API Gateway에서의 라우팅
API Gateway에서의 라우팅은 단순히 경로를 지정하는 것을 넘어서, 다음과 같은 역할을 수행한다.
- 클라이언트 요청을 적절한 백엔드 서비스로 중계
- 서비스의 위치, 구조, 구현 방식 등을 클라이언트로부터 추상화
- 서비스 간 결합도를 낮추고, 전체 시스템의 유연성과 확장성 향상
라우팅 규칙 구성 요소
라우팅을 구성할 때, 아래와 같은 요소들을 활용할 수 있다.
요소 | 설명 |
Path | URL 경로 기준 매칭 |
Method | HTTP 메서드 (GET, POST 등) |
Host | 도메인 기반 분기 |
Header | 특정 헤더가 있을 때만 분기 |
Query | 쿼리 파라미터 기반 분기 |
Weight | 가중치 기반 트래픽 분배 |
Prefix / StringPrefix | 경로 재작성 (Rewrite) |
라우팅의 주요 기능 및 역할
1️⃣ API 요청 분석 및 매핑

클라이언트 요청의 URL, HTTP Method, 헤더, 쿼리 파라미터 등을 기준으로 분석하여 적절한 서비스로 매핑한다.
📌 예시: Spring Cloud Gateway
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/api/users/**
- Method=GET
- /api/users/** 경로로 들어온 GET 요청은 user-service로 전달된다.
2️⃣ API 동적 라우팅
서비스 디스커버리와 연동하여 동적으로 서비스 인스턴스를 탐색하고 연결한다.
✔ 서비스 디스커버리 연동
Eureka,Consul과 같은 디스커버리 시스템과 연결해 현재 실행 중인 인스턴스와 IP와 포트를 실시간으로 확인한다.
✔ 요청의 정확한 라우팅
최신 인스턴스 정보에 따라 가장 적절한 서버로 요청을 전달한다.
✔ 로드 밸런싱
트래픽이 한 서비스에 몰리지 않도록, 여러 인스턴스에 트래픽을 고르게 분산시켜 시스템 안전성을 확보한다.
📌 예시
- id: product-service
uri: lb://PRODUCT-SERVICE
predicates:
- Path=/api/products/**
- 'lb://' 접두사는 로드 밸런서를 통해 동적으로 인스턴스를 선택한다.
3️⃣ API 버전 관리 및 단계적 배포
📍 버전 관리
API Gateway는 클라이언트가 요청한 버전에 따라 다른 서비스로 라우팅할 수 있다.
- id: user-v1
uri: http://localhost:8081
predicates:
- Header=X-API-VERSION, v1
- id: user-v2
uri: http://localhost:8082
predicates:
- Header=X-API-VERSION, v2
- 클라이언트가 X-API-VERSION: v1 헤더를 보내면 v1으로, v2를 보내면 v2로 라우팅된다.
📍 단계적 배포 (Canary Release)
트래픽을 일정 비율로 나눠서 새로운 버전으로 전달하여 위험을 줄이는 방식이다.
- id: user-v1
uri: http://localhost:8081
weight: group, 80
- id: user-v2
uri: http://localhost:8082
weight: group, 20
- 사용자 중 80%는 v1, 20%는 v2로 접속하게 된다.
4️⃣ 에러 처리 및 통합 응답 포맷팅

API Gateway는 다양한 서비스에서 발생한 응답을 일관된 포맷으로 클라이언트에게 반환된다.
📌 예시: JSON 통일 응답
{
"status": "error",
"message": "서비스를 처리할 수 없습니다. 관리자에게 문의해주세요.",
"code": "SERVICE_UNAVAILABLE"
}
📌 예시: Gateway Filter 적용
filters:
- name: CircuitBreaker
args:
name: fallback
fallbackUri: forward:/fallback
- 백엔드 서비스에 장애가 발생하면 /fallback 경로로 자동 전환하여 에러 메시지를 통제한다.
'아키텍처 & 설계(Architecture & Design) > MSA' 카테고리의 다른 글
[API Gateway] API Gateway에서의 트래픽 제어 (0) | 2025.04.08 |
---|---|
[API Gateway] API Gateway에서 인증과 인가 처리 방법 (0) | 2025.04.02 |
[API Gateway] API Gateway 프록시 서버 개념과 역할 (0) | 2025.03.31 |
[API Gateway] API Gateway 개념 (0) | 2025.03.30 |
MSA 멀티 모듈 설정 (0) | 2024.04.24 |