
Nginx vs AWS API Gateway vs GCP API Gateway — 우리 팀이 Nginx를 선택한 이유
최근 물류 센터 자동화 프로젝트를 진행하면서, AI 추론(Inference) 서버와 일반 백엔드(Data Ops/Orchestrator) 서버를 물리적으로 분리하는 작업을 진행했습니다. GPU가 필요한 무거운 작업과 일반적인 CPU 작업을 나누어 자원 효율을 극대화하기 위함입니다.
하지만 이렇게 서버를 분리하고 나니 진입점(Entry Point) 문제가 발생했습니다.
서버를 기능별로 분리하니 네트워크 구성이 아래와 같이 되었습니다.
| 서버 | 역할 | 주소 |
|---|---|---|
| GPU 서버 | Inference | 192.168.1.101:8001 |
| CPU 서버 | Data Ops | 192.168.1.100:8002 |
| CPU 서버 | Orchestrator | 192.168.1.100:8003 |
이 상태로 백엔드(WMS)나 프론트엔드가 각 서버에 직접 요청을 보내게 되면 다음과 같은 문제들이 생깁니다.
결국 단일 진입점(Single Entry Point) 이 필요했습니다. 이때 고민하게 되는 것이 "Nginx로 직접 구축할 것이냐, 클라우드 벤더의 API Gateway를 쓸 것이냐" 입니다.
단일 진입점 역할을 수행할 수 있는 대표적인 3가지 방법을 비교해 보았습니다.
가장 전통적이고 강력한 웹 서버이자 프록시 서버입니다.
nginx.conf) 하나로 라우팅, 로드밸런싱, SSL 종료 처리가 가능합니다.AWS의 완전 관리형 서비스입니다.
구글 클라우드의 관리형 서비스입니다. 내부적으로는 Envoy Proxy 기반입니다.
| 특징 | Nginx | AWS API Gateway | GCP API Gateway |
|---|---|---|---|
| 유형 | Self-Hosted (직접 설치) | Fully Managed (완전 관리형) | Fully Managed (완전 관리형) |
| 주요 역할 | Reverse Proxy, Load Balancer | API 관리, 인증, 트래픽 제어 | API 관리, Serverless 게이트웨이 |
| 비용 | 무료 (기존 서버 자원 사용) | 호출 횟수당 과금 (은근 비쌈) | 호출 횟수당 과금 |
| 인증 처리 | 직접 구현 필요 | Cognito, Lambda Authorizer 연동 | Firebase Auth, Service Account 연동 |
| 설정 방식 | conf 파일 수정 | AWS 콘솔 / Terraform | OpenAPI Spec (YAML) |
| 추천 대상 | 초기 스타트업, 비용 민감, 단순 라우팅 | Serverless 중심, 복잡한 API 관리 | GCP 생태계, Cloud Run 중심 |
저희 팀은 현재 단계에서 Nginx를 선택했습니다. 이유는 명확합니다.
경로(Path) 기반 라우팅을 아래와 같이 구성했습니다.
https://api.xxx.com/api/v1/inspection/* → GPU 서버 (8001)
https://api.xxx.com/api/v1/images/* → Data Ops (8002)
https://api.xxx.com/api/v1/jobs/* → Orchestrator (8003)
server {
listen 443 ssl;
server_name api.cv-inspection.example.com;
# SSL 설정 생략...
# 1. AI 추론 요청 → GPU 서버
location /api/v1/inspection {
proxy_pass http://192.168.1.101:8001;
proxy_read_timeout 300s; # AI 모델 추론 시간 고려
}
# 2. 이미지 데이터 조회 → Data Ops 서버
location /api/v1/images {
proxy_pass http://127.0.0.1:8002;
}
# 3. 작업 상태 관리 → Orchestrator 서버
location /api/v1/jobs {
proxy_pass http://127.0.0.1:8003;
}
}
"AWS나 GCP의 API Gateway가 더 최신 기술 아니야?" 라고 생각할 수 있지만, 기술 선택의 기준은 언제나 "현재 우리의 문제 해결에 적합한가?" 여야 합니다.
| 상황 | 추천 |
|---|---|
| 서버리스(Lambda/Cloud Functions)를 적극적으로 쓴다면 | ☁️ Cloud API Gateway |
| 외부 파트너에게 API를 유료로 제공하고 트래픽 제한이 필요하다면 | ☁️ Cloud API Gateway |
| 내부 서비스 간 라우팅과 단일 진입점이 목적이라면 | 🟢 Nginx |
기술 부채는 나쁜 코드를 짤 때만 쌓이는 게 아닙니다. 필요 이상으로 복잡한 인프라를 도입하는 것 또한 미래의 부채가 될 수 있습니다. 우리는 가장 심플하고 확실한 방법인 Nginx로 이 문제를 해결했습니다.