Network
[Network] API 게이트웨이, NAT 게이트웨이
차가운개발
2024. 12. 7. 22:10
API 게이트웨이
개념
API 게이트웨이는 클라이언트(모바일 앱, 웹, 다른 서비스 등)가 내부의 다양한 백엔드 서비스나 마이크로서비스의 API에 접근할 때, 중앙 집중적인 진입점(Entry Point) 역할을 하는 서비스다. 즉 여러 개의 분산된 서비스 및 API 엔드포인트를 한 곳에서 통합하고 관리하며, 외부 요청을 내부 서비스로 라우팅해주는 **프록시**나 **프런트 도어** 같은 역할을 한다.
기능 및 특징
- 엔드포인트 관리 및 라우팅
각기 다른 서비스로 분산된 API들을 단일 도메인 및 엔드포인트로 노출함으로써 클라이언트는 복잡한 내부 구조를 알 필요 없이 간단한 URL하나로 접근 가능하다. - 인증/인가 및 보안
토큰 검증, OAuth, JWT 등의 인증/인가 로직을 게이트웨이 레벨에서 처리할 수 있어 각 서비스 별로 인증 로직을 구현할 필요를 줄인다. - 부하분산(Load Balancing) 및 트래픽 관리
API 게이트웨이를 통해 들어오는 트래픽을 여러 백엔드 서비스로 적절히 분배하거나 특정 요청에 대해 rate limithing(요청 빈도 제한), throtting(속도 조절) 같은 정책을 적용할 수 있다. - 데이터 변환 및 요청/응답 변형
요청이나 응답의 포맷 (JSON >> XML 변환 등)을 표준화하거나 필요에 따라 변환할 수 있다.
구현예시
AWS API Gateway, Kong, Nginx API Gateway 등
NAT 게이트웨이
개념
NAT (Network Address Translation) 게이트웨이는 사설 망(Private Subnet)에 위치한 인스턴스들이 인터넷에 접근할 수 있도록 하는 네트워크 구성 요소이다. 내부 서버들이 보유한 사설 IP 주소를 공인 IP로 변환해 외부로 요청을 보낼 수 있게 하되, 외부에서는 해당 사설 인스턴스에 직접적으로 접근할 수 없도록 한다
특징 및 동작 방식
- 사설 >> 공인 IP 변환
내부 서비스 (ex : DB 서버나 내부 애플리케이션 서버)는 사설망에 위치하며 직접 인터넷에 노출 되지 않는다. 이 때 NAT 게이트웨이를 통해 외부로 나가는 트래픽은 NAT 게이트웨이의 공인 IP를 통해 나가며, 이를 이용해 외부 리소스(소프트웨어 패치 서버, 외부 API)에 접근이 가능하다 - 외부로부터의 직접 접근 차단
외부의 요청은 NAT 게이트웨이를 통해 사설 인스턴스에 직접 도달할 수 없다. NAT는 일방향 통신에 초점을 맞추며 이는 보안적인 이점을 가져온다 - AWS 예시
AWS VPC 환경에서 NAT 게이트웨이를 사용하면 Private Subnet에 있는 EC2인스턴스들이 외부 인터넷에 나갈 수는 있지만, 외부에서 바로 내부로 진입할 수는 없다. 이를 통해 네트워크 보안성을 유지하며 소프트웨어 업데이트, 외부 API 호출 등이 가능하다.