마이크로서비스 아키텍처에서 클라이언트가 수십 개의 서비스를 직접 호출하면 복잡해집니다. API 게이트웨이는 단일 진입점(Single Entry Point)으로 이 문제를 해결합니다.


API 게이트웨이란

클라이언트와 백엔드 서비스 사이의 단일 진입점 으로, 요청 라우팅, 인증, 속도 제한 등을 중앙에서 처리합니다.

PLAINTEXT
클라이언트 → [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

PLAINTEXT
버킷에 초당 N개의 토큰이 채워짐 (최대 M개)
요청마다 토큰 1개 소비
토큰이 없으면 요청 거부 (429)

→ 버스트 트래픽을 일정 수준 허용하면서 평균 속도를 제한

Sliding Window

PLAINTEXT
최근 1분간 요청 수를 추적
제한: 분당 100건

현재 윈도우의 비율을 가중 평균으로 계산
→ 윈도우 경계에서의 버스트 방지

대표 솔루션

솔루션특징
KongNginx 기반, 플러그인 생태계
AWS API Gateway서버리스, Lambda 연동
Nginx/Envoy경량, 고성능
Spring Cloud GatewayJava/Spring 생태계

API 게이트웨이 vs 로드 밸런서

항목API 게이트웨이로드 밸런서
계층L7 (애플리케이션)L4/L7
기능인증, 변환, 제한 등 다양트래픽 분산에 집중
대상API 요청일반 트래픽

면접 포인트

  • **API 게이트웨이가 단일 장애점(SPOF)이 되지 않으려면 **: 이중화 + 상태 비저장(Stateless) 설계
  • **BFF 패턴 **: Backend for Frontend — 클라이언트 유형별(웹, 모바일) 게이트웨이 분리
  • **Rate Limiting 구현 **: Redis + Token Bucket이 일반적

정리

API 게이트웨이는 마이크로서비스의 "현관문"입니다. 라우팅, 인증, 속도 제한 같은 공통 관심사를 중앙에서 처리하여 각 서비스가 비즈니스 로직에 집중할 수 있게 합니다.

댓글 로딩 중...