🌐 MSA에서 API 라우팅 방식 비교 (Spring Cloud Gateway vs ALB vs API Gateway)
MSA(Microservices Architecture) 프로젝트를 구축할 때, 외부 요청을 각 서비스로 전달하는 라우팅 방식은 시스템 전체의 구조, 보안, 운영 효율성에 큰 영향을 미칩니다. 이 글에서는 대표적인 세 가지 API 라우팅 방식에 대해 비교하고, 비용 측면에서 가장 효율적인 방법을 정리합니다.
📌 라우팅 방식 3가지
라우팅 방식 |
설명 |
🛣️ Spring Cloud Gateway |
자바 기반의 라우팅 서버 (Spring Boot로 직접 구축) |
🧭 AWS ALB (Application Load Balancer) |
AWS에서 제공하는 7계층 HTTP 로드 밸런서 |
🚪 AWS API Gateway |
완전관리형 API 라우터, 인증/트래픽 제어 기능 포함 |
🧠 비교 표: 기능 & 장단점
항목 |
Spring Cloud Gateway |
AWS ALB |
AWS API Gateway |
🔍 라우팅 방식 |
코드 기반 Path/Host 기반 라우팅 |
콘솔 기반 Path/Host 기반 라우팅 |
스테이지, 메서드별 세밀한 라우팅 |
🔐 인증/인가 |
코드로 직접 구현 |
기본 OIDC 인증 지원 (제한적) |
Cognito, JWT, IAM, API Key 등 강력한 인증 지원 |
🧰 기능 확장 |
필터, 로깅, 라우팅 로직 자유롭게 작성 |
제한적 (기본 라우팅만) |
요청/응답 매핑, Rate Limit, 캐싱 등 풍부 |
🔎 로깅/트래픽 추적 |
자체 구현 필요 (ex. Zipkin, Sleuth) |
Access Log (S3로 전송 가능) |
CloudWatch 로그/메트릭 자동 제공 |
⚙️ 운영 편의성 |
직접 운영 필요 (배포/모니터링/스케일링) |
AWS 관리형, 설정 간단 |
완전관리형, 서버 없음 |
🧱 확장성 |
직접 구성 (ECS/EKS 등) |
높은 확장성 (ALB + Target Group) |
요청 수 제한 존재 (Soft Limit: 10K rps/region) |
📎 서비스 연결 |
내부 서비스 URL 기반 연결 |
Target Group으로 EC2/ECS 연결 |
HTTP, Lambda, VPC 연결 등 다양 |
💻 개발자 경험 |
Spring 기반 개발자에 익숙 |
설정 위주, 개발 관여 적음 |
GUI 기반 or Swagger 연동 |
🧾 로컬 테스트 |
로컬에서 바로 가능 |
불가 |
로컬 테스트 어려움 |
📦 배포 구조 |
별도 인프라 구성 필요 |
AWS 내 서비스 연동 쉬움 |
API 단위로 독립 배포 가능 |
💰 비용 비교
항목 |
Spring Cloud Gateway |
AWS ALB |
AWS API Gateway |
💵 과금 기준 |
EC2/ECS 인스턴스 사용량 |
LCU(트래픽 + 요청 수 + 규칙 수) |
요청 수 (건당 과금) |
🔸 요금 예시 (2024년 기준) |
t3.small 기준 월 $15~$20 (운영 인력 포함) |
월 수천 원~수만 원 수준 |
100만 요청당 약 $3.50 |
🧩 고정 비용 |
EC2 유지 비용 있음 |
없음 (요청 없으면 과금 거의 없음) |
요청 수에 따라 계속 발생 |
📉 트래픽 많아질수록 |
서버 증설 필요 |
성능 유지 + 과금 증가 낮음 |
과금 급증 가능 (주의) |
📌 참고: API Gateway는 요청 수가 많은 서비스에선 빠르게 비용이 증가할 수 있음. ALB는 요청량에 비례하긴 하지만 단가가 훨씬 저렴함.
✅ 상황별 추천 가이드
상황 |
추천 방식 |
비용을 최대한 아끼고 싶을 때 |
✅ AWS ALB + 각 서비스에서 인증 처리 |
코드 기반으로 유연한 필터/로직 구현이 필요할 때 |
✅ Spring Cloud Gateway |
서버리스 기반 / 빠른 개발 / API 관리가 중요할 때 |
✅ AWS API Gateway |
🧾 실제 추천 아키텍처 (비용 최소화 기준)
[ ALB ]
├── /auth → Auth Service (Spring Boot)
├── /product → Product Service
└── /payment → Payment Service
📌 각 서비스에는 JwtAuthenticationFilter (Spring Security) 적용
📌 ALB Access Logs → S3 저장 (중앙화된 기본 로깅 가능)
## 🧠 마무리 정리
Spring Cloud Gateway는 유연하지만 운영 비용과 복잡성이 있다.
AWS API Gateway는 강력하지만 요청당 과금 구조라 대규모 서비스엔 부담될 수 있다.
AWS ALB는 가장 단순하고, 비용 측면에서 매우 효율적이다. 특히 트래픽이 많을 때 가성비 최고.
🔥 따라서 "비용 최소화 + 안정적 운영"이 목표인 나에게 적합한 방식은 ALB + 각 서비스에서 JWT 필터를 활용한 인증 방식이 좋을 것 같다.