(MSA)2.라우팅 설정

Published: by Creative Commons Licence

🌐 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 필터를 활용한 인증 방식이 좋을 것 같다.