까다로운 'API 관리' 도우미··· 추천 도구 10종

InfoWorld
현대 비즈니스 세계의 엔진 중 하나는 소프트웨어와 AI다. 퍼블릭과 프라이빗 클라우드를 아울러 모든 애플리케이션에는 유용하고 강력하며, 편리한 API가 필요하다. 하지만 API를 빌드하고 유지관리 하는 것은 쉬운 일이 아니다. 오늘날 소프트웨어 분야 전체가 API 관리를 중심으로 움직이고 있는 이유 중 하나다.

대부분의 API 관리 제품은 공통된 기능 세트를 제공한다. 라우팅(Routing), 프록싱(Proxying), 데이터 및 URL 변환, 대시보드와 분석, 정책과 제한, 도큐멘테이션 생성기 같은 개발자 도구가 여기에 해당된다. 

이에 API를 위한 풀 서비스 스윗부터 특정 시나리오를 위한 전문 도구까지, 오픈소스 프로젝트, 상용 제품, 클라우드 서비스, 이런 것들이 섞인 형태 등 인기 있는 10종의 API 관리 도구를 소개한다.
 
ⓒ Image Credit : Getty Images Bank



3스케일(3scale)
원래 폐쇄형 제품이었던 ‘3scale’은 레드햇이 인수하고 2년을 투자한 후 오픈소스 제품으로 다시 태어났다. 오픈소스 프로젝트는 아파치 라이선스 아래 무료로 사용할 수 있다. 레드햇은 상용(유료) SaaS 임플리멘테이션도 공급한다.

3스케일은 여기에서 소개하는 다른 상품과 유사한 기능들을 갖췄다. API 버저닝, 액세스 제어(관리), 속도 제한, 보안 제어, 분석 기능 등을 제공한다. 또 개발자에게 도움이 되는 개발자 포털, API에 대한 도큐먼테이션 생성용 CM 같은 기능과 특징들을 지원한다. 그리고 인보이스 처리, 결제 서비스 통합 등 API 수익화 도구를 기본 제공한다.

3스케일을 프로덕션용으로 설치하려면 오라클 데이터베이스(Oracle Database)와 오픈시프트(OpenShift)가 필요하다. 테스트 목적에서 최소한으로 3스케일을 설치하는 경우에도 싱글 노드 오픈시프트 클러스터인 미니시프트(Minishift)가 필요하다. 이를 감안했을 때, 가능한 빨리 시작하고 싶다면 90일 동안 무료로 사용할 수 있는 3스케일 트라이얼 버전을 사용하는 것이 가장 좋다.

프로 버전 이용 요금은 월 750달러부터 시작된다. 5,000명의 개발자 계정, 50만 API 호출(일일), 최대 3개의 API를 지원한다. 요청하는 경우에만 요금을 공개하는 엔터프라이즈 버전은 이런 제약 대부분을 없앤 버전이다.

앰버서더(Ambassador)
Ambassador는 쿠버네티스와 함께 이용할 수 있도록 설계한 오픈소스 API 관리 시스템이다. 엔보이(Envoy) 프록시 위에 구현되며, 마이크로서비스를 위한 네트워크 추상화를 처리한다. 즉 대부분의 획일적인 작업을 엔보이와 쿠버네티스가 처리한다.

앰버서더의 기능 세트 또한 여기 소개한 다른 API 관리 도구 대부분과 유사하다. URL 리라이팅 및 요청 라우팅, 필터링, 인증 및 액세스 제어, 속도 제한과 타임아웃, 로깅 및 문제해결, 가시성 도구와의 통합 기능을 갖추고 있다.

그러나 앰버서터 기능 대부분은 런타임 관리, 쿠버네티스 및 다른 쿠버네티스 도구(예, Prometheus)와의 통합에 바탕을 두고 있다. 앰버서더는 API 디자인과 서술적 구성(Declarative configuration)을 전적으로 사용자에게 일임한다. API 버저닝 같은 기능을 기본 지원하지 않기 때문에, 독자적으로 처리해야 한다. 일반적인 API 관리 솔루션보다, 쿠버네티스 배포의 일부로 API를 사용할 때 앰버서더가 유독 적합한 이유가 여기에 있다.

Api맨(Apiman)
Apiman(기존 Boss Apiman)는 자바에 기반을 둔 레드햇 오픈소스 프로젝트이다. 여전히 레드햇이 관리하고 있지만, 이 회사의 API 관리 도구가 발전 노력은 3스케일 관련 제품에 집중되고 있다.

Api맨은 API 퍼블리싱 및 관리라는 ‘기본’에 초점이 맞춰져 있다. 이러한 기능에 대해 롤 기반 액세스를 제공하고, API 사용에 대한 정책을 설정하고, 런타임과 빌링 매트릭스를 수집하고, 모든 요소들에 대해 톱다운(하향식) 조직 구조를 생성한다.

Api맨은 보안, 리소스(속도 제한), 데이터 변환, 캐싱, 로깅과 관련, API에 대한 정책을 설정할 수 있다. 정책은 JSON을 통해 구성되기 때문에, 사람은 물론 머신도 정책을 읽고 편집할 수 있다. 사용자 ID나 역할로 보안 정책을 적용할 수 있으며, API를 느슨하게, 또는 엄격하게 통제할 수 있다. URL에서 리비전(Revision) ID로 API를 발행할 수 있다(사용과 연결된 약정 없이), 또는 API 키를 요청해서, 버저닝 방법을 세밀히 관리할 수 있다.

기본 기능을 넘는 기능은 각자 알아서 해야 한다. 예를 들어, Api맨에 여러 플러그인을 사용할 수 있지만, 이들 대부분은 핵심 프로젝트 유지관리자가 제공하는 Api맨 기능성의 작은 익스텐션이다.

드림팩토리(DreamFactory)
DreamFactory API 관리 플랫폼는 PHP에서 라라벨(Laravel) 프레임워크로 구현한 도구이다. DreamFactory는 무료 오픈소스 상품이다. 상업용 버전은 종류가 다양하다(요금 미공개). 이미 PHP에 투자한 개발자, 오픈소스 임플리멘테이션을 깊이 다루기 원하는 개발자에게 적합하다. 드림팩토리는 또 서버 측면에서 Node.js와 파이써과의 스크립팅 통합을 지원한다.

드림팩토리는 모든 제품에서 기본으로 데이터메시(Datamesh)라는 기능을 제공하고 있다. 다양한 데이터베이스 제품을 포함, 여러 이질적인 데이터베이스 호출 결과를 결합, 하나의 API 호출로 결과를 반환할 수 있는 기능이다. 유사하게 여러 데이터베이스의 테이블 업데이트를 하나의 API 호출로 병합할 수도 있다.

드림팩토리 도큐멘테이션은 모든 가용한 서비스를 단 하나의 검색 가능한 일반 목록으로 제공하지 않는다. 카테고리 별로 정보가 분류된다. 따라서 가용한 서비스를 찾기 위해 직접 발품을 팔아야 한다. 

장점도 있다. 특정 유즈 케이스에 대한 ‘하우 투(사용 방법) 비디오가 많이 포함되어 있다. 단순한 애플리케이션을 셋업하는 방법, 여러 데이터 소스에 연결하는 방법 등을 알려주는 비디오이다.

콩(Kong)
Kong은 가장 잘 알려진 API 관리 도구 중 하나이다. 원래 매셰이프 (Mashape ; Kong의 과거 이름)가 자신의 API 마켓 플레이스 제품을 지원하기 위해 개발했던 도구이다. 콩은 오픈소스 에디션, 추가 관리, 모니터링, 개발자 기능이 지원되는 상용 에디션(요금 미공개), 엔터프라이즈급 에디션이 있다. 엔터프라이즈 에디션의 경우, 온프레미스(내부)나 선택한 클라우드 서비스에서 운영할 수 있다. 오픈소스와 엔터프라이즈 제품 모두 많은 정보를 상세히 제공하는 도큐멘테이션을 지원한다.

콩은 쿠버네티스 통합을 위해 인그레스(Ingress) 컨트롤러를 제공한다. 또 서비스 메시를 이용, 기존 서비스에 콩의 기능을 집어 넣을 수 있다. 엔터프라이즈 에디션은 쉽게 새로운 API를 개발하도록 도움을 주고, 개발자들이 API 코드 기반에 익숙해질 수 있는 개발자 포털을 제공한다.

콩은 통상 데이터베이스를 사용하지만, JSON/YAML 구성 파일과 인메모리 스토리지를 사용해 데이터베이스가 없는 모드에서도 실행시킬 수 있다. 단 하나의 최소 노드를 최대 성능으로 운영하고 싶은 사람에게 적합한 도구이다.


크라켄D(KrakenD)
고(Go)로 작성된 KrakenD는 필수 기능만 제공하지만, 이런 핵심 기능의 성능이 아주 높다. 크라켄D는 고에 기반을 둔 대부분의 애플리케이션처럼, 단일 독립(Self-contained) 바이너리로 제공된다. 대안으로 소스에서 컴파일링을 할 수 있다. 또 Go 라이브러리를 바탕으로 자신의 애플리케이션을 만들 수도 있다.

크라켄D는 구성 파일을 사용하는 데, 이는 핸드 롤링되거나 머신 생성된 파일이다 속도 제한, 응답 조정, 포워딩, 엔드포인트 디버깅, 프로토콜 보안 대책(예, 클릭재킹 방어), 프록싱, 스터빙, 인메모리 응답 캐싱을 기본 제공한다.

크라켄D 인스턴스를 클러스트화, 높은 가용성을 구현할 수 있다. 별도 소프트웨어 없이 크라켄D 만으로 이렇게 할 수 있다. 또 많은 추가 노력 없이 쿠버네티스 클러스터에 크라켄D를 배포할 수 있다. 또 크라켄D 기트허브 레포지토리에서 써드파티 미들웨어 요소를 가져올 수 있다.

컨설팅과 트레이닝 등이 포함된 엔터프라이즈 지원 서비스도 제공한다(요금 미공개).

뮬소프트 애니포인트 플랫폼(MuleSoft Anypoint Platform)
MuleSoft의 Anypoint Platform은 ‘완전함’을 지향하는 제품이다. API 디자인, 구축, 호스팅, 관리, 통합, 개발자 지원을 단 하나의 상용 제품에서 지원한다. 

애니포인트 를 사용, 아무 것도 없는 상태에서 API를 개발하거나, 다른 뮬소프트 고객이 만들어 애니포인트 익스체인지(Anypoint Exchange)에 공유하고 있는 기존 커넥터와 통합을 재사용할 수 있다. 제네릭 프로토콜(파일 액세스, HTTP, 이메일), 데이터 변환용 언어 모듈(Java 및 JavaScript), 클라우드 서비스(아마존 AWS), 상용 애플리케이션(세일즈포스, SAP), 오픈소스 애플리케이션(몽고DB)에 커넥터를 사용할 수 있다.

파트너나 일반이 사용할 API를 만들고 싶은 사람들을 위해, 애니포인트는 API용 웹 UI를 만들 수 있는 API 커뮤니티 매니저를 제공한다. 뮬소프트는 이를 ‘포털’이라고 부른다. 인터랙티브 도큐멘테이션, 개인화(사용자의 지리적 위치를 토대로 아웃풋을 맞춤화 하는 기능 등), API 사용량 분석 등도 모두 포함되어 있다.

애니포인트는 3가지 요금제로 Gold, Platinum, Titanium 상품을 공급하고 있다. 각각 고객 지원 수준, 엔터프라이즈 기능의 종류가 다르다. 3가지 요금제 모두 무제한 API가 포함되어 있으며, ‘프리미엄’ 커넥터에는 추가 요금이 부과된다(예, IBM AS/400 메인프레임 커넥터).

넷플릭스 줄(Netflix Zuul)
Zuul은 Netflix 엔지니어가 만든 오픈소스 프로젝트이다. 넷플릭스 비디오 스트리밍 서비스에 대한 라우팅 요청을 처리하기 위한 내부용 도구로 개발했다. 상용 버전은 없다. 최소한 넷플릭스는 상용 제품을 공급하지 않는다. 따라서 줄을 각자 배포해 관리해야 한다.

줄은 자바에 기반을 두고 있으며, 공통된 자바 도구들인 그레이들(Gradle), 아이비(Ivy), 메이븐(Maven)을 설정과 운영에 사용한다. 줄은 다른 API 관리 시스템보다 기능의 수가 많지 않다. 서비스의 인바운드 요청 필터링과 디스패칭에 초점이 맞춰져 있다. 줄은 서비스 검색, 로드 밸런싱, 연결 풀링, 디버깅 기능(”request passport”)을 지원한다. 그러나 개발자 온보딩 및 자동 도큐멘테이션 같은 고급 기능이 없다.

줄은 현재 활발하게 개발되고 있는 프로젝트이다. 따라서 향후 새로운 기능이 많이 추가될 예정이다. 활동이 많은 기간, 특정 기능을 비활성화 시켜 CPU 성능을 높일 수 있는 ‘브라운아웃 필터’를 예로 들 수 있다.

타이크(Tyk)
Tyk는 API 게이트웨이, 분석 도구, 개발자 포털, 관리 대시보드 등 많은 기능을 기본 제공한다. 또 API를 공식 배포하기 전 API를 시뮬레이션하는 기능, 요청 캐싱 기능(API 정의에 직접 포함시킬 수 있음), 여러 HTTP 오류 코드에 대한 응답 템플릿 등을 제공한다.

각각 유즈 케이스가 다른 4가지 에디션을 공급하고 있다. 타이크의 오픈소스 릴리스인 커뮤니티 에디션에는 프록싱과 액세스 제어, 변환, 로깅만 처리하는 게이트웨이만 포함되어 있다. 직접 기능을 구현해 배포하거나, 타이크의 플러그인 생태계를 사용할 수 있다. 여러 수 많은 언어를 지원하는 것도 특징이다.

온프레미스 에디션은 방화벽 안에서 완전한 기능을 갖춘 상용 제품을 이용할 수 있다. 단 하나의 개발자 라이선스를 제공하는 개발자 에디션은 무료로 사용할 수 있다. AIP를 상용 환경에 사용할 수 없지만, API 호출에 제한이 없다. 상용 목적의 라이선스는 연간 3,000달러부터 시작된다.

다양한 인기 클라우드 서비스에 사용할 수 있는 호스티드 서비스인 클라우드 및 멀티 클라우드 에디션도 있다. 매일 1,000개의 API 호출을 지원하는 기본적인 단일 클라우드 버전은 무료로 사용할 수 있다(공급자가 부과하는 클라우드 서비스 요금은 제외). 프로(Pro)급 버전은 월 450달러부터이다.

WSO2 API 매니저
WSO2 API Manager는 Java에 기반을 둔 오픈소스 제품이라고 말할 수 있다. 온프레미스나 클라우드 호스팅 배포에 사용할 수 있다. 상용(유료) 지원과 클라우드 관리 서비스가 있다.

여러 다양한 관리 상황에 맞게 다양한 배포 옵션을 제공하고 있다. 예를 들어, 온프레미스 WSO2 배포의 경우, 클라우드에 호스팅된 개발자 포털을 통해 정책이나 구성을 적용할 수 있다. 클라우드와 온프레미스 간 동기화로 변경을 하거나, 클라우드에서 정기적으로 푸시 처리할 수 있다(잠글 필요가 있는 환경).

WSO2에는 외부 서비스를 연결할 수 있는 200여 커넥터가 있다. 개발자들이 많이 사용하는 것과 관련이 있다. 슬랙(Slack), 스플렁크(Splunk), 카프카(Kafka), 레디스(Redis), 아마존 S3 등이 여기에 해당된다.

또 특정 종류의 호출에 추가적인 보안, 더 낮은 레이턴시를 적용할 수 있는 API 마이크로게이트웨이라는 기능도 있다. 예를 들어, 게이트웨이를 관리하는 호출, 마이크로서비스 간 라우팅 되는 호출을 이런 식으로 처리할 수 있다.

WSO2의 새로운 애드-온은 쿠버네티스용 이스티오(Istio) 서비스 메시와의 통합을 지원한다. 이스티오는 자신이 관리하는 마이크로서비스가 노출시키는 API를 관리하지 않는다. 따라서 이스티오가 사용하는 엔보이 프록시와 WSO2를 통합해야 한다.

WSO2의 상용 제품에는 2주간 무료로 사용할 수 있는 트라이얼 버전이 있다. 최대 100만 개의 API 호출을 지원한다. 2,000만 호출은 월 550달러이다. 이런 상품부터 맞춤형(Bespoke) 구성 상품까지 다양한 상품을 공급하고 있다. ciokr@idg.co.kr
https://wso2.com/api-management/cloud/#pricing