API 게이트웨이 — 라우팅, 인증, 속도 제한 통합
마이크로서비스 아키텍처에서 클라이언트가 수십 개의 서비스를 직접 호출하면 복잡해집니다. API 게이트웨이는 단일 진입점(Single Entry Point)으로 이 문제를 해결합니다.
API 게이트웨이란
클라이언트와 백엔드 서비스 사이의 단일 진입점 으로, 요청 라우팅, 인증, 속도 제한 등을 중앙에서 처리합니다.
클라이언트 → [API 게이트웨이] → 서비스 A (/users)
→ 서비스 B (/orders)
→ 서비스 C (/products)
주요 기능
| 기능 | 설명 |
|---|---|
| 요청 라우팅 | URL 패턴으로 적절한 서비스로 전달 |
| 인증/인가 | JWT 검증, API 키 확인 |
| Rate Limiting | 초당 요청 수 제한 (429 Too Many Requests) |
| 로드 밸런싱 | 서비스 인스턴스 간 부하 분산 |
| 응답 캐싱 | 자주 요청되는 응답 캐싱 |
| 프로토콜 변환 | REST ↔ gRPC, HTTP ↔ WebSocket |
| 로깅/모니터링 | 요청 로그, 메트릭 수집 |
| Circuit Breaker | 장애 서비스 차단 |
Rate Limiting 알고리즘
Token Bucket
버킷에 초당 N개의 토큰이 채워짐 (최대 M개)
요청마다 토큰 1개 소비
토큰이 없으면 요청 거부 (429)
→ 버스트 트래픽을 일정 수준 허용하면서 평균 속도를 제한
Sliding Window
최근 1분간 요청 수를 추적
제한: 분당 100건
현재 윈도우의 비율을 가중 평균으로 계산
→ 윈도우 경계에서의 버스트 방지
대표 솔루션
| 솔루션 | 특징 |
|---|---|
| Kong | Nginx 기반, 플러그인 생태계 |
| AWS API Gateway | 서버리스, Lambda 연동 |
| Nginx/Envoy | 경량, 고성능 |
| Spring Cloud Gateway | Java/Spring 생태계 |
API 게이트웨이 vs 로드 밸런서
| 항목 | API 게이트웨이 | 로드 밸런서 |
|---|---|---|
| 계층 | L7 (애플리케이션) | L4/L7 |
| 기능 | 인증, 변환, 제한 등 다양 | 트래픽 분산에 집중 |
| 대상 | API 요청 | 일반 트래픽 |
면접 포인트
- **API 게이트웨이가 단일 장애점(SPOF)이 되지 않으려면 **: 이중화 + 상태 비저장(Stateless) 설계
- **BFF 패턴 **: Backend for Frontend — 클라이언트 유형별(웹, 모바일) 게이트웨이 분리
- **Rate Limiting 구현 **: Redis + Token Bucket이 일반적
정리
API 게이트웨이는 마이크로서비스의 "현관문"입니다. 라우팅, 인증, 속도 제한 같은 공통 관심사를 중앙에서 처리하여 각 서비스가 비즈니스 로직에 집중할 수 있게 합니다.
댓글 로딩 중...