API Gateway는 클라이언트 앱의 다양하고 많은 요구사항을 기반으로 API가 추가되기 때문에 단일 API Gateway가 처리하는 API가 많아지면 사실상 기존 모놀리식 어플리케이션 아키텍처와 상당히 비슷하게 변모할 가능성이 있습니다.
그렇기 때문에 API Gateway를 나누어서 클라이언트 앱당 하나씩 분할하는 것도 좋은 방법입니다.
단일 API Gateway가 어플리케이션의 모든 내부 마이크로서비스를 호출 하는 경우, API Gateway는 거대해지게 되고, 모놀리틱 아키텍처에서 발생했던 문제점이 또 다시 발생한 가능성이 존재합니다. 그렇기 떄문에 API Gateway는 비즈니스 또는 클라이언트 앱 기준으로 분리되어야 하며, 모든 내부 마이크로서비스에 대해 단일 API Gateway가 사용되는 것은 지양되어야 합니다.
API Gateway 계층에서 API Gateway를 여러 개로 분할하면 서로 다른 이 기종의 클라이언트 앱 또는 상이한 비즈니스 로직의 요청에 대해 다른 응답을 처리할 수 있습니다. 이러한 패턴을 BFF(Backend for Frontend) 패턴이라 합니다.
API Gateway 주요 기능
API Gateway는 여러 기능을 제공할 수 있지만, API Gateway의 가장 중요하고 기본적인 기능은 다음과 같습니다.
1. 역방향 프록시, 게이트웨이 라우팅
API Gateway는 요청(일반적으로 HTTP요청)을 내부 마이크로서비스의 엔드 포인트로 리디렉션 또는 라우팅하는 역방향 프록시를 제공합니다. Gateway는 클라이언트 앱에 대한 단일 엔드포인트 또는 URL을 제공한 후, 내부적으로 요청을 내부 마이크로서비스 그룹에 매핑합니다.
이 라우팅 기능은 마이크로서비스에서 클라이언트 앱을 분리하는데 도움이 될 뿐만 아니라, 모놀리식 API와 클라이언트 앱 사이에 API Gateway를 배치하여 모놀리식 API를 MSA로 전환 적용이 가능해집니다.
API Gateway 때문에 클라이언트앱은 사용 중인 API가 내부 마이크로서비스 또는 모놀리식 API로 구현되어 있는지 여부가 상관이 없어집니다. 또한, 모놀리식 API를 마이크로서비스로 개선하고 리팩토링할 경우, API Gateway 라우팅 기능 덕분에 클라이언트 앱은 URI 변경 내용에 영향을 받지 않게 됩니다.
2. 다수의 개별 요청을 단일 요청으로 집계
여러 내부 마이크로서비스를 대상으로하는 여러 클라이언트의 요청(Http요청)을 단일 클라이언트 요청으로 집계할 수 있습니다. 이 패턴은 클라이언트 페이지/화면에 여러 마이크로서비스의 정보가 필요할 때 편리합니다.
이 방법을 사용하면 클라이언트앱은 여러 요청을 내부 마이크로서비스에 디스패치한 다음, 결과를 집계하고 모든 것을 다시 클라이언트앱에 보내는 API Gateway에 단일 요청을 보냅니다.
이 기능의 주요 이점과 목표는 클라이언트앱과 백엔드 API간에 통신량을 줄임으로서 대기시간을 줄여 성능상의 효율성을 가져가는데 있습니다.
3. 공통 서비스 오프로딩
클라우드 벤더에서 제공하는 특수 기능을 Gateway에 오프로드할 수 있습니다. 일부 특수 서비스 기능은 여러 서비스에서 공통적으로 사용되며, 이러한 기능은 구성, 관리 및 유지 관리가 필요합니다.
모든 애플리케이션 배포에서 분산되는 공유 또는 특수 서비스는 관리 오버헤드를 높이고, 배포 오류가 발생할 가능성이 높습니다. 이러한 공통적인 기능은 해당 기능을 공유하는 모든 서비스에 배포해야 합니다.
예를 들어 보안서비스(토큰 유효성 검사, 암호화, SSL인증서 관리)및 기타 복잡한 작업을 처리하려면 어플리케이션에 필요한 인증서를 모든 애플리케이션 인스턴스에서 구성 및 배포해야 합니다.
또한 각각의 새로운 배포에서 인증서가 만료되지 않도록 관리해야 합니다. 하지만 마이크로서비스와 같이 많은 수의 배포를 구현하고 관리하는 환경에서 인증, 권한부여, 로깅, 모니터링, 접근제한과 같은 기타 공통서비스를 구현하고 관리하는 것은 어려울 수 있습니다.
이러한 이유로 인증서 관리, 인증, SSL, 모니터링, 프로토콜 변환과 같은 교차 적용 되는 기능을 API Gateway에 오프로드함으로써 서비스 구성을 단순화 시키고, 관리 및 확장, 업그레이드를 간단하게 처리 할 수 있습니다.
API Gateway 종류
Amazon API Gateway
Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안할 수 있게 해주는 완전 관리형 서비스입니다.
AWS Management Console에서 클릭 몇 번 만으로 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있는 REST 및 WebSocket API를 생성할 수 있습니다.
API 게이트웨이는 트래픽 관리, 권한 부여 및 액세스 제어, 모니터링 및 API 버전 관리 등 최대 수십만 개의 동시 API 호출을 수신 및 처리하는 데 관계된 모든 작업을 처리하며 수신한 API 호출과 전송한 데이터 양에 대한 요금만 결제되고 API 게이트웨이 계층화 요금 모델을 사용하는 경우 API 사용량 증가에 따라 비용을 절감할 수 있습니다.
Amazon API 게이트웨이 강점
Amazon API 게이트웨이는 AWS에서 제공하는 서비스를 배포하는 AWS 고객에게 유용합니다.
Amazon API 게이트웨이는 프로그래밍 가능하고 자동화가 가능하여 DevSecOps 원칙을 적용하는 조직에 적합하며, 게이트웨이 구성을 자동화하고 AWS 서비스와 효과적으로 통합하려면 이러한 조직에 필요한 엔지니어링 리소스가 있어야 합니다.
AWS와 Amazon API 게이트웨이가 활용하는 다른 서비스를 이미 사용하고 있는 조직에서는 친숙한 서비스를 이용할 수 있습니다. Amazon API 게이트웨이는 Red Hat 3scale API Management와 통합되어 Amazon 및 Red Hat 게이트웨이에서 정책 집행 및 모니터링이 가능합니다.
Amazon API 게이트웨이 약점
Amazon API 게이트웨이는 클라우드 서비스로만 사용할 수 있어서 사용자와 API가 On-premise 인 환경에서 사용할 수 없습니다.
조직에서 Amazon API 게이트웨이가 동작하는 AWS 환경에 익숙하지 않은 경우 여러 구성 인터페이스를 사용하는 것이 어려울 수 있습니다.
AWS는 기본적으로 OAuth를 지원하지 않습니다. OAuth는 Cognito를 사용하여 구성 할 수 있지만, 이 프로세스는 IaaS API 액세스를 위해 기본적으로 OAuth를 지원하는 서비스 (IaaS) 플랫폼으로 다른 인프라와 연계하여 구축 가능합니다.
Amazon API 게이트웨이의 기본 보안은 특정 트래픽 관리 기능으로 제한되며, 다른 보안 기능을 사용하려면 AWS 서비스 또는 외부 기능을 사용해야 합니다.
Apigee Edge
Apigee는 구글이 2016년 인수한 API관리 플랫폼으로 API 런타임/ 게이트웨이와 개발자 포탈이 포함되어 있으며, API 제공업체에서 API를 설계, 배포, 모니터링, 확장하고 보안을 적용할 수 있는 전체 수명 주기를 관리합니다.
Apigee는 런타임 API 트래픽에 맞게 배치되며 키 유효성 검사, 할당량 관리, 변환, 승인, 액세스 제어 등 즉시 사용할 수 있는 API 정책을 제공하며, API 제공업체가 사용하는 맞춤형 개발자 포털을 통해 개발자가 쉽고 안전하게 API를 사용하고 API 성능과 사용량을 측정할 수 있습니다.
Apigee Edge 게이트웨이 강점
Apigee 관리 클라우드 서비스 배포를 통해 조직은 선택한 여러 지리적 클라우드 지역에서 API 런타임 구성 요소를 사용할 수 있습니다.
Apigee Edge 플랫폼의 API 게이트웨이는 보안 영역에서 가장 높은 점수를 받는 솔루션 중 하나로 Apigee Sense와 함께 다양한 기능을 제공합니다.
Apigee는 컨테이너 배포를 포함하여 소프트웨어 및 클라우드 서비스 옵션을 모두 제공합니다.
Apigee Edge 게이트웨이 약점
Bot mitigation 및 행동 분석을 위해서는 추가 Apigee Sense 라이선스가 필요하며, 사설 클라우드 구축을 위한 Apigee Edge에는 Apigee Sense를 추가 할 수 없습니다.
IBM DataPower
IBM DataPower Gateway를 통해 기업은 단일 멀티채널 게이트웨이를 활용한 디지털 비즈니스 보안 및 통합 요구사항을 충족할 수 있으며, 모바일, 웹, API(Application Programming Interface), SOA(Service-oriented Architecture), B2B 및 클라우드 워크로드에 대해 보안, 제어, 통합 및 최적화된 액세스를 가능하게 합니다.
IBM DataPower 게이트웨이 강점
IBM DataPower Gateway는 IAM 영역에서 가장 높은 점수를 마크하는 제품 중 하나로 광범위한 토큰 유형과 독점적인 세션 쿠키를 지원합니다.
XSS (cross-site scripting) 및 SQL 주입에 대한 사전 구축 된 보호 기능과 함께 사용자 정의 가능한 JSON 및 XML 위협 보호 기능을 제공합니다.
IBM DataPower Gateway는 하드웨어, OS 및 API 런타임 처리 스택이 처음부터 보안에 중점을 두고 구축된 특수 목적의 물리적 네트워크 어플라이언스 폼 팩터를 제공하는 유일한 제품입니다.
Kong API 게이트웨이
Kong (이전 Mashape)은 NGINX를 기반으로 오픈 소스 API 및 마이크로 서비스 관리 솔루션을 제공합니다.
Kong은 API 게이트웨이, Kong Dev Portal 및 Kong Vitals (분석 및 모니터링용)가 포함되며, 다른 공급 업체와 달리 이러한 기능은 별도로 판매되지 않으며 독립적인 설치가 필요하지 않습니다.
Kong Community Edition(CE)은 무료 오픈 소스 소프트웨어이지만 Kong EE의 모든 기능을 포함하지는 않습니다. 예를 들어 Kong CE에는 웹 기반 관리 UI와 역할 기반 관리 기능이 없습니다.
Kong API 게이트웨이 강점
Kong은 API 게이트웨이 또는 마이크로 서비스 게이트웨이로 배포 할 수 있는 게이트웨이용 단일 코드 기반을 내장하고 있습니다.
Kong은 최신 OAuth / OIDC 확장의 대부분을 지원하며 OAuth / OIDC 흐름을 가장 광범위하게 지원합니다.
Kong API 게이트웨이 약점
Kong은 SAML, XML과 JSON 간 변환 또는 SOAP와 REST 간의 변환을 지원하지 않아, 전통적인 IAM 인프라가 있는 조직에는 적합하지 않습니다.
Kong은 기본적으로 DDoS 보호를 제공하지 않습니다.
API Gateway 고려사항
-
가장 큰 단점은 API Gateway를 구현할 때, 해당 계층을 내부 마이크로서비스와 결합한다는 것입니다. 이러한 결합은 애플리케이션에 심각한 문제가 발생할 수 있으며, 기존 ESB(Enterprise Service Bus)에서 발생했던 문제점들이 다시 발생할 수 있습니다.
-
마이크로서비스 API Gateway를 사용하게 되면, 추가 단일 실패 지점이 생성됩니다.
-
API Gateway는 추가 네트워크 호출로 인해 응답 시간 증가로 이어질 수 있습니다.
-
Scale-Out 기능이 적절하게 적용되지 않을 경우, API Gateway는 병목 상태가 될 수 있습니다.