API Gateway는 클라이언트로부터 API 요청을 받아 정의된 정책에 따라 처리한 후 적절한 서비스로 전달하고 응답을 통합하여 사용자 경험을 간소화합니다. 일반적으로 여러 마이크로서비스를 호출하고 결과를 집계하여 요청을 처리하며, 레거시 배포에서 프로토콜 간에 변환할 수도 있습니다.
API Gateway는 클라이언트로부터 API 요청을 받아 정의된 정책에 따라 처리한 후 적절한 서비스로 전달하고 응답을 통합하여 사용자 경험을 간소화합니다. 일반적으로 여러 마이크로서비스를 호출하고 결과를 집계하여 요청을 처리하며, 레거시 배포에서 프로토콜 간에 변환할 수도 있습니다.
API Gateway는 일반적으로 다음과 같은 기능을 구현합니다.
추가적인 앱 및 API 수준 보안의 경우 Web Application Firewall(WAF) 및 서비스 거부(DoS) 보호를 통해 API Gateway를 보강할 수 있습니다.
앱 딜리버리를 위해 API Gateway를 배포하면 다음과 같이 도움이 될 수 있습니다.
마이크로서비스 기반 애플리케이션의 경우 API Gateway는 시스템에 대한 단일 진입점 역할을 하며, 마이크로서비스 전면에 위치하여 앱의 복잡성을 클라이언트로부터 분리함으로써 클라이언트 구현과 마이크로서비스 앱을 모두 간소화합니다.
마이크로서비스 아키텍처에서 API Gateway는 요청 라우팅, 구성 및 정책 시행을 담당합니다. 일부 요청은 단순히 적절한 백엔드 서비스로 라우팅하여 처리하고, 다른 요청은 여러 백엔드 서비스를 호출하고 결과를 집계하여 처리합니다.
API Gateway는 인증, 권한 부여, 모니터링, 로드 밸런싱 및 응답 처리와 같은 마이크로서비스를 위한 다른 기능을 제공하여 비기능적 요구 사항의 구현을 인프라 계층으로 오프로드하고 개발자가 핵심 비즈니스 로직에 집중하여 앱 출시 속도를 높일 수 있도록 지원할 수 있습니다.
블로그에서 API Gateway를 사용한 마이크로서비스 구축에 대해 자세히 알아보십시오.
컨테이너는 마이크로서비스를 실행하는 가장 효율적인 방법이고, Kubernetes는 컨테이너화된 애플리케이션과 워크로드를 배포하고 관리하기 위한 사실상의 표준입니다.
시스템 아키텍처와 앱 딜리버리 요구 사항에 따라, API Gateway는 로드 밸런서(멀티 클러스터 수준)로 Kubernetes 클러스터 앞에 배포하거나, 인그레스 컨트롤러(클러스터 수준)로 엣지에 배포하거나, 서비스 메시(서비스 수준)로 내부에 배포할 수 있습니다.
엣지 및 Kubernetes 클러스터 내에서 API Gateway를 배포하는 경우, Kubernetes 네이티브 도구를 API Gateway로 사용하는 것이 가장 좋습니다. 이러한 도구는 Kubernetes API와 긴밀하게 통합되고, YAML을 지원하며, 표준 Kubernetes CLI(예: NGINX Ingress Controller 및 NGINX Service Mesh 포함)를 통해 구성할 수 있습니다.
API Gateway, 인그레스 컨트롤러, 서비스 메시 비교 블로그에서 API Gateway와 Kubernetes에 대해 자세히 알아보십시오.
인그레스 게이트웨이와 인그레스 컨트롤러는 Kubernetes Ingress API의 일부인 인그레스 개체를 구현하여 Kubernetes에서 실행 중인 애플리케이션을 외부 클라이언트에 노출하는 도구로, 사용자와 애플리케이션 간의 통신(사용자와 서비스 간 또는 남북 연결)을 관리합니다. 그러나 인그레스 개체 자체는 기능이 매우 제한적입니다. 예를 들어, 인그레스 개체에 연결된 보안 정책 정의를 지원하지 않습니다. 따라서 많은 공급업체는 인그레스 컨트롤러의 기능을 확장하고 인그레스 컨트롤러를 API Gateway로 사용하는 등 진화하는 고객의 요구와 필요 사항을 충족하기 위해 CRD(사용자 정의 리소스 정의)를 생성합니다.
예를 들어, NGINX Ingress Controller는 VirtualServer 및 VirtualServerRoute, TransportServer, 정책 사용자 정의 리소스와 함께 Kubernetes 클러스터의 엣지에서 모든 기능을 갖춘 API Gateway로 사용할 수 있습니다.
이름은 비슷하지만, API Gateway는 Kubernetes 게이트웨이 API와 다릅니다. Kubernetes 게이트웨이 API는 Kubernetes의 서비스 네트워킹을 개선하고 표준화하기 위해 Kubernetes 커뮤니티에서 관리하는 오픈 소스 프로젝트입니다. 게이트웨이 API 사양은 요청 처리를 위한 세분화된 정책을 정의하고 여러 팀과 역할에 걸쳐 구성 제어를 위임하는 기능을 포함하여, 프로덕션 단계에서 Kubernetes 앱을 노출하기 위해 인그레스 리소스를 배포하는 것과 관련된 다양한 문제를 해결하기 위해 Kubernetes Ingress API에서 발전한 것입니다.
특정 마이크로서비스로 요청 라우팅, 트래픽 정책 구현, 카나리아 및 블루-그린 배포 활성화를 포함한 사용 사례를 위한 API Gateway로 NGINX Kubernetes 게이트웨이 등과 같은 게이트웨이 API 사양을 기반으로 구축된 도구를 사용할 수 있습니다.
이 짧은 동영상에서 NGINX의 Jenn Gile이 API Gateway와 Kubernetes 게이트웨이 API의 차이점을 설명합니다.
서비스 메시는 Kubernetes 클러스터에서 서비스 간 통신(서비스 간 또는 동서 연결)을 제어하는 인프라 계층입니다. 서비스 메시는 로드 밸런싱, 인증, 권한 부여, 액세스 제어, 암호화, 관찰 가능성 및 연결 관리를 위한 고급 패턴(회로 차단기, A/B 테스트, 블루-그린 및 카나리아 배포)을 포함하여 Kubernetes에서 실행되는 서비스에 대한 핵심 기능을 제공하여 통신이 빠르고 안정적이며 안전하게 수행되도록 보장합니다.
앱과 서비스에 더 가깝게 배포되는 서비스 메시는 Kubernetes에서 서비스 간 통신을 위한 경량형이지만 포괄적인 분산 API Gateway로 사용할 수 있습니다.
서비스 메시 선택 방법 블로그에서 서비스 메시에 대해 자세히 알아보십시오.
API Gateway와 API 관리라는 용어는 종종 동일한 기능을 설명하는 데 사용되지만 잘못 사용되기도 합니다.
API Gateway는 대상 애플리케이션 및 서비스에 대한 클라이언트 요청을 나타내는 API 호출을 위한 데이터 평면 진입점입니다. 일반적으로 인증, 권한 부여, 액세스 제어, SSL/TLS 오프로딩, 라우팅 및 로드 밸런싱을 포함하여 정의된 정책을 기반으로 요청 처리를 수행합니다.
API 관리는 개별 API를 배포, 문서화, 운영 및 모니터링하는 프로세스입니다. 일반적으로 정책을 정의하고 API Gateway 및 개발자 포털에 적용하는 관리 평면 소프트웨어(예: API 관리자)를 통해 수행됩니다.
비즈니스 및 기능적 요구 사항에 따라 API Gateway는 데이터 평면의 독립형 구성 요소로 배포하거나 F5 NGINX Management Suite API 연결 관리자와 같은 통합 API 관리 솔루션의 일부로 배포할 수 있습니다.
API Gateway에 대한 요구 사항을 결정할 때 고려해야 할 몇 가지 주요 요소가 있습니다.
NGINX는 사용 사례와 배포 패턴에 따라 API Gateway를 배포하고 운영하기 위한 몇 가지 옵션을 제공합니다.
Kubernetes 네이티브 도구:
NGINX App Protect WAF 및 DoS가 포함된 NGINX Ingress Controller의 30일 무료 체험판을 요청하여 시작하고, 항상 무료로 제공되는 NGINX Service Mesh를 다운로드하십시오.
범용 도구:
NGINX Plus를 API Gateway로 사용하는 방법에 대해 자세히 알아보려면 30일 무료 체험판을 요청하고 블로그에서 NGINX를 API Gateway로 배포를 참조하십시오. NGINX Management Suite를 사용해 보려면 30일 무료 체험판을 요청하십시오.