개요
API 게이트웨이는 클라이언트와 백엔드 서비스 컬렉션 사이에 위치하는 API 관리 툴입니다. 이 경우, 클라이언트는 사용자의 기기에 있는 애플리케이션이며 백엔드 서비스는 엔터프라이즈의 서버에 있는 서비스입니다. API는 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)를 뜻합니다.
API 게이트웨이는 애플리케이션 제공(사용자에게 애플리케이션을 제공하는 서비스의 조합)의 구성 요소이자 모든 애플리케이션 프로그래밍 인터페이스(API) 호출을 수락하고 호출 이행에 필요한 다양한 서비스를 집계하며 적절한 결과를 반환하는 리버스 프록시 역할을 합니다. 간단히 말하면, API 게이트웨이는 사용자의 API 호출을 가로채서 적절한 백엔드 서비스로 라우팅하는 소프트웨어입니다.
API 게이트웨이를 사용하는 이유
대부분의 엔터프라이즈 API는 API 게이트웨이를 통해 배포됩니다. API 게이트웨이의 경우 보통 사용자 인증, 속도 제한, 통계 등 API 서비스 시스템 전반에서 사용되는 일반적인 태스크를 처리합니다.
API 서비스는 기본적으로 원격 요청을 수락하고 응답을 반환합니다. 하지만 실제로는 이렇게 간단하게 실행되지 않습니다. 대규모 API를 호스팅할 때는 다양한 사항을 고려해야 합니다.
- API가 남용되거나 과도하게 사용되지 않도록 보호하기 위해 인증 서비스나 속도 제한을 사용할 수 있습니다.
- API가 어떻게 사용되고 있는지를 알고 싶은 경우 분석 및 모니터링 툴을 추가할 수 있습니다.
- 수익화 API가 있는 경우 청구 시스템에 연결할 수 있습니다.
- 단일 요청으로 서로 다른 수십 개의 애플리케이션에 대한 호출이 필요한 경우 마이크로서비스 아키텍처를 채택할 수 있습니다.
- 이렇게 시간이 지남에 따라 새로운 API 서비스를 추가하거나 사용 종료하게 되지만, 고객은 계속해서 모든 서비스를 동일한 장소에서 찾기를 원합니다.
이러한 모든 복잡성을 해결하기 위해서는 고객에게 간단하고 신뢰할 수 있는 환경을 제공하는 것이 과제라고 할 수 있습니다. API 게이트웨이는 클라이언트 인터페이스를 백엔드 구현 환경에서 분리할 수 있는 방법입니다. 클라이언트가 요청을 하면 API 게이트웨이가 클라이언트의 요청을 여러 개의 요청으로 나누어 적절한 위치로 전달하고, 응답을 생성하며, 모든 상황을 추적합니다.
Red Hat 리소스
API 관리에서 API 게이트웨이의 역할
API 게이트웨이는 API 관리 시스템의 한 부분입니다. API 게이트웨이는 수신되는 모든 요청을 가로채서 API 관리 시스템을 통해 전송하여 필요한 여러 기능을 처리합니다.
API 게이트웨이의 정확한 역할은 구현 환경마다 달라집니다. 일반적인 기능으로는 인증, 라우팅, 속도 제한, 청구, 모니터링, 분석, 정책, 알림, 보안이 있습니다. API 게이트웨이가 제공하는 혜택은 다음과 같습니다.
짧은 대기 시간
API 게이트웨이는 수신되는 요청을 분산시키고 SSL 종료 및 캐싱과 같은 일반적인 태스크 부담을 줄여 백엔드 서비스 전반에서 트래픽 라우팅과 부하 분산을 최적화함으로써 최적의 성능과 리소스 활용을 보장합니다. 이를 통해 API 게이트웨이는 서버 부하와 대역폭 사용을 최소화하여 추가적인 서버 용량과 네트워크 대역폭의 필요성을 줄이고 사용자 환경을 개선합니다.
트래픽 관리
API 게이트웨이는 수신되는 요청의 속도와 볼륨을 제어하도록 설계된 다양한 메커니즘을 통해 트래픽을 조절 및 관리하고 최적의 성능과 리소스 활용을 보장합니다.
- 속도 제한 정책은 각 클라이언트나 API 키에 일정 기간 내에 허용되는 최대 요청 수(예: 초/분/시간당 요청)를 지정하여 백엔드 서비스가 과부하되지 않도록 보호합니다.
- 요청 스로틀링(throttling) 정책은 최대 요청 속도, 버스팅 허용치, 할당량 등과 같은 요청 트래픽 조정을 위한 규칙과 한도를 정의합니다.
- 동시 실행 제어 정책은 백엔드 서버에서 동시에 처리할 수 있는 동시 실행 연결 또는 요청의 최대 수를 지정합니다.
- 회로 차단 정책은 백엔드 서버의 상태와 응답성을 모니터링하고 장애가 발생하거나 느린 서비스로부터 트래픽을 일시적으로 차단하거나 리디렉션하여 연속적인 오류를 방지하고 전반적인 시스템 안정성을 유지합니다.
- API 게이트웨이의 동적 부하 분산은 서버 상태를 지속적으로 모니터링하고 트래픽 라우팅을 실시간으로 조정하여 급증하는 수요를 처리하고, 응답 시간을 최소화하며, 처리량을 극대화합니다.
글로벌 네트워크 인프라 활용
API 게이트웨이는 변화하는 트래픽 패턴과 워크로드 수요에 대응하여 인프라 리소스를 동적으로 스케일링할 수 있습니다. 이를 통해 API 게이트웨이는 기업이 리소스 활용을 최적화하고 인프라 비용을 최소화하여 실제로 사용하는 리소스에 대해서만 비용을 지불할 수 있도록 지원합니다.
비용 효율성
API 게이트웨이는 API 트래픽을 처리하고, 보안 정책을 시행하며, 트래픽 관리 규칙을 구현하고, 백엔드 서비스와의 통합을 지원하기 위한 중앙화된 플랫폼을 제공하여 애플리케이션 제공 및 API 통합에 대한 비용 효율성을 관리하는 역할을 합니다. API 게이트웨이는 또한 비용 효율성 유지를 위해 서비스의 티어 소비를 허용합니다. 다양한 유형의 API는 여러 가지 방식으로 애플리케이션의 비용 효율성에 영향을 미칠 수 있습니다.
- 유연성. 더욱 일반적이고 모든 HTTP 메서드를 사용할 수 있는 HTTP API는 개발 과정에 단순성과 유연성을 제공하여 잠재적으로 개발 비용을 절감합니다. 특정 아키텍처 원칙과 규칙을 준수하는 REST API는 적절한 설계와 구현을 위해 추가적인 작업과 전문 지식이 필요할 수 있으며, 이로 인해 개발 비용이 증가할 수 있습니다.
- 인프라. HTTP API는 유연성 덕분에 인프라 비용이 더 낮을 수 있습니다. REST API는 기능을 지원하는 데 추가적인 인프라 구성 요소나 서비스가 필요할 수 있으며, 이로 인해 인프라 비용이 증가할 수 있습니다.
- 확장성. 더 많은 서버나 인스턴스를 추가하여 수평적으로 확장할 수 있는 HTTP API는 특히 자동 스케일링(auto-scaling) 기능을 갖춘 클라우드 환경에서 더욱 비용 효율적인 확장성 옵션을 제공할 수 있습니다. REST API는 스테이트리스(Stateless), 캐싱, 분산된 아키텍처 고려 사항으로 인해 확장 요구 사항이 더 복잡할 수 있고 수평 확장 달성을 위해 인프라 리소스나 서비스가 추가로 필요할 수 있으며, 이로 인해 비용이 증가할 수 있습니다.
API 게이트웨이가 쿠버네티스와 함께 작동되는 방식
Red Hat OpenShift와 같은 쿠버네티스 기반 솔루션은 애플리케이션을 컨테이너화하고 오케스트레이션하는 가장 효율적인 방식이기 때문에, API 게이트웨이는 쿠버네티스 클러스터에서 서비스에 대한 트래픽을 관리하고 라우팅하기 위한 주요 구성 요소가 될 수 있습니다. API 게이트웨이는 이를 위해 다음과 같은 태스크를 수행합니다.
- 인그레스 컨트롤러 역할을 하며, 클러스터에 들어오는 HTTP 트래픽을 가로채 정의된 규칙과 구성에 따라 적절한 서비스로 라우팅합니다.
- 쿠버네티스의 DNS 기반 서비스 검색을 활용하여 수동 구성 없이 백엔드 서비스에 대한 트래픽을 검색하고 라우팅합니다. 이를 통해 쿠버네티스 네이티브 서비스와 원활하게 통합하고 클러스터 내에서 동적 스케일링, 서비스 검색, 페일오버 처리를 용이하게 합니다.
- 쿠버네티스에 배포된 서비스에 대한 트래픽 흐름을 제어하는 고급 트래픽 관리 정책을 구현합니다.
- 인증, 액세스 제어, 권한 부여, 암호화와 같은 보안 정책을 시행하여 쿠버네티스에 배포된 서비스를 무단 액세스와 사이버 위협으로부터 보호합니다.
- 요청 로깅, 메트릭 수집, 분산 추적과 같은 쿠버네티스에 배포된 서비스에 대한 트래픽 패턴, 성능 메트릭, 오류 발생율에 대한 가시성을 확보하여 관측성과 모니터링 기능을 제공합니다.
- Istio, Linkerd와 같은 서비스 메시와 통합하여 기능을 확장하고 외부 인그레스, 엣지 보안, 글로벌 트래픽 관리와 같은 추가 기능을 제공하여 쿠버네티스 서비스와 외부 클라이언트 간의 원활한 상호 운용성을 보장합니다.
API 게이트웨이가 DevOps 및 서버리스 환경을 지원하는 방법
DevOps 접근 방식을 따르는 조직에서 개발자는 마이크로서비스를 사용해 빠르고 반복적인 방식으로 애플리케이션을 빌드하고 배포합니다. API는 마이크로서비스가 통신하는 가장 일반적인 방식 중 하나입니다.
또한 서버리스 모델을 비롯한 현대적인 클라우드 개발은 API를 사용해 인프라 프로비저닝을 수행합니다. API 게이트웨이를 사용해 서버리스 기능을 배포하고 관리할 수 있습니다.
일반적으로 통합과 상호 연결성이 더욱 중요해짐에 따라 API의 중요성도 커지고 있습니다. 또한 API 복잡성이 증가하고 사용량이 많아짐에 따라 API 게이트웨이의 가치도 높아집니다.
Red Hat의 API 관리
Red Hat의 포괄적인 모듈식 경량 API 관리 솔루션은 독보적인 오픈소스이며, 오픈 표준을 사용하고 온프레미스, 클라우드 또는 하이브리드 환경에서 사용 가능합니다. Red Hat은 오픈소스 기술을 위해 노력하고 고유한 개발 모델을 갖추고 있기 때문에, Red Hat 포트폴리오는 Red Hat 엔지니어, 고객, 독립 소프트웨어 및 하드웨어 벤더, 파트너 등 다양한 커뮤니티에서 광범위한 테스트를 거칩니다. Red Hat은 두 가지 API 관리 솔루션을 제공합니다.
- Red Hat OpenShift API Management는 호스팅 및 관리형 API 관리 서비스로서, 엔터프라이즈급 쿠버네티스 애플리케이션 플랫폼인 Red Hat OpenShift의 전체 관리형 서비스인 Red Hat OpenShift Dedicated에 애드온(add-on) 제품으로 제공됩니다.
- Red Hat® 3scale API Management는 API를 손쉽게 공유, 보안, 배포, 제어, 수익화할 수 있게 해 주는 API 관리 플랫폼입니다. 3scale API Management는 하이브리드 아키텍처(온프레미스, 클라우드 또는 이 둘의 조합)의 확장 및 지원을 위해 설계되었습니다.
레드햇 공식 블로그
레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.