본문 바로가기

Infra&Cloud/Infra

API Gateway Solution ( Feat. Kong, Apache, Spring Cloud Gateway)

1. 클라우드 기반 (Cloud API Gateway)

  • 정의: AWS, Azure, Google Cloud 같은 클라우드 플랫폼에서 제공하는 완전관리형 API Gateway 서비스.
  • 대표 예: Amazon API Gateway, Google의 Apigee, Azure API Management 등
  • 특징:
    • 인프라 운영이 필요 없음 (관리형 서비스)
    • IAM, Lambda, Cognito, WAF, CloudWatch 등 클라우드 서비스와 통합됨
    • Vendor lock‑in 가능성 존재
    • 확장성과 보안성은 뛰어나지만, 커스터마이즈 제한적

2. 오픈소스 기반 API Gateway

  • 정의: 누구나 소스코드를 수정하거나 확장할 수 있는 형태의 API Gateway 솔루션.
  • 대표 예: Kong Gateway, Apache APISIX, Tyk, KrakenD, Envoy, Gravitee.io
  • 특징:
    • 플러그인 구조로 높은 유연성과 확장성
    • 온프레미스, 멀티클라우드, 하이브리드 환경에 유연하게 배치 가능
    • 라이선스 비용 없음(OSS), 운영 비용과 유지보수 책임은 사용자에게 있음

 

 

🌐 NGINX 기반 API Gateway

개요

NGINX는 2004년에 출시된 이후 전 세계 웹 트래픽의 절반 이상을 처리하고 있는 고성능 리버스 프록시로, 안정성과 성능으로 유명하다. Apache APISIX, Kong 등의 게이트웨이는 NGINX 위에서 동작하며, 그 기반을 확장하고 있다.

장점

  • 검증된 안정성: 수십 년 간 프로덕션 환경에서 검증됨.
  • 고성능 이벤트 루프 구조: 비동기, 논블로킹 방식으로 동시 연결 처리에 최적화.
  • 기존 NGINX 사용자에게 자연스러운 전환 가능.
  • WASM 및 외부 플러그인 지원: Java, Python 등 다양한 언어로 확장 가능.

단점

  • Lua 기반 플러그인 개발 필요: 익숙하지 않은 개발자에겐 진입장벽.
  • 고급 설정 시 복잡도 상승: NGINX directives에 대한 깊은 이해 필요.

어떤 환경에서 써야 하는가?

  • 성능이 중요한 대규모 기업 환경
  • 기존 NGINX 인프라와 통합 필요 시
  • 고속 구성 변경이 필요한 상황 (e.g., APISIX의 핫 리로드 기능)

🚀 Envoy 기반 API Gateway

개요

Envoy는 2016년 Lyft에서 개발되었으며, Kubernetes-native 환경 및 Service Mesh 연동에 최적화되어 있다. Istio, Gateway API 등 다양한 표준 기술과도 긴밀하게 연결된다.

장점

  • 클라우드 네이티브 설계: 동적 서비스 디스커버리, gRPC, HTTP/2 완전 지원.
  • 동서(East-West) & 남북(North-South) 트래픽 통합: Gateway API 지원.
  • WASM 확장성 우수: 고급 플러그인 개발 가능.

단점

  • 확장 난이도 높음: 플러그인은 대부분 C++ 기반.
  • 리소스 사용량 많음: NGINX보다 무거운 구조.

어떤 환경에서 써야 하는가?

  • Kubernetes 환경에서 마이크로서비스 운영
  • Istio 기반 Service Mesh 구현
  • 고급 모니터링, 트레이싱, Observability가 필요한 상황

☕ Java 기반 API Gateway (Spring Cloud Gateway)

개요

Spring Cloud Gateway는 Java/Spring 진영에서 가장 널리 쓰이는 API 게이트웨이로, Spring Boot 생태계와의 통합성이 뛰어나다.

장점

  • 개발자 친화적: Spring Boot 프로젝트에 손쉽게 통합 가능.
  • 간단한 커스터마이징: Java 기반으로 커스텀 필터 구현이 쉬움.
  • Spring Cloud Config, Eureka, Security 연동 자연스러움

단점

  • JVM 기반의 오버헤드: GC 지연 및 메모리 사용량 높음.
  • 성능 문제: 고트래픽 환경에서는 리소스 비용이 증가함.

어떤 환경에서 써야 하는가?

  • Spring 기반의 마이크로서비스 아키텍처
  • 높은 생산성이 필요한 팀
  • 트래픽이 중간 정도인 환경

🐹 Go 기반 API Gateway

개요

Go 기반 게이트웨이는 성능과 개발 편의성 사이에서 균형을 추구하며, 대표적으로 KrakenD가 있다. 고성능은 물론 Java/C++보다 쉬운 확장이 가능하다.

장점

  • Java보다 좋은 성능: 컴파일 언어이며 메모리 효율이 뛰어남.
  • 확장성 용이: Lua나 C++ 없이 Go로 확장 가능.
  • 단순한 구조와 빠른 실행

단점

  • NGINX/Envoy보다는 최적화 미흡: 네트워크 레벨 튜닝 한계.
  • 플러그인 생태계 작음: 기능 확장 시 직접 구현 필요.

어떤 환경에서 써야 하는가?

  • Go 마이크로서비스 환경
  • 유연성을 희생하지 않고 Java보다 가벼운 대안을 원할 때

🔍 기술 기반별 요약 비교표

기준 NGINX 기반 (Kong, APISIX) Envoy 기반 Java 기반 (Spring GW) Go 기반 (KrakenD)

기반 언어 C + Lua C++ Java Go
성능 ✅ 최고 (이벤트 기반) ✅ 매우 높음 ❌ JVM 오버헤드 ✅ 우수
확장성 Lua 플러그인 / WASM C++ 필터 / WASM Java 필터 Go 기반 구성
Kubernetes 연동 일부 (Ingress 지원) ✅ Gateway API 완전 지원 최근 지원 시작 제한적
학습 곡선 중간 (Lua 필요) 높음 (C++ 필요) 낮음 (Spring 기반) 낮음
추천 사용처 고성능 API 게이트웨이 Service Mesh + K8s Java MSA BFF 또는 중간규모

✅ 결론

환경 조건 추천 솔루션

최대 성능, 검증된 안정성 Apache APISIX 또는 Kong (NGINX 기반)
Kubernetes 및 Service Mesh Envoy (Istio, Gateway API 표준)
Spring MSA 개발 환경 Spring Cloud Gateway
경량, 빠른 Aggregation KrakenD (Go 기반)

 

 

참고자료 : https://api7.ai/learning-center/api-gateway-guide/nginx-vs-envoy-vs-java-vs-go

 

 

'Infra&Cloud > Infra' 카테고리의 다른 글

3계층 구조 ( 3-tier Architecture ) 란?  (0) 2026.01.26
API Gateway 정리  (0) 2025.10.21