API Monetization이란 무엇인가요?
Liu Wei
November 11, 2022
여러분이 도시의 모든 슈퍼마켓에서 할인 정보를 수집하는 서비스를 개발했다고 상상해보세요. 다른 개발자들이 이 데이터에 접근하고 싶다면 API를 사용하여 원하는 정보를 얻을 수 있으며, 우리는 그들의 API 사용량에 따라 요금을 청구할 수 있습니다. API를 통해 데이터를 돈으로 전환하는 것을 API 수익화라고 합니다. API 수익화는 서비스를 수익성 있게 만드는 이상적인 방법입니다.
한 회사가 API 수익화 비즈니스 모델을 채택하면, 다음으로 고려해야 할 것은 가격 정책 모델입니다. 대부분의 API 제공업체는 세 가지 표준 가격 정책 모델 중 하나를 사용합니다: 번들 접근, 호출당 지불, 월별 지불. 이 모든 가격 정책 모델에서 API 제공업체는 각 사용자의 API 호출 횟수를 계산해야 합니다. 따라서 사용자의 신원을 식별하는 것이 중요합니다. 왜냐하면 API 호출 횟수가 서비스 패키지를 초과할 경우 사용자가 제한될 수 있기 때문입니다. 그러나 단순히 개별 사용자를 식별하는 것만으로는 충분하지 않습니다. 더 자주, 서비스를 구매하는 것은 기업 사용자들입니다. 이 경우, 기업 직원들은 조직과 연결된 동일한 청구 계정을 공유합니다. 따라서 사용자가 속한 조직을 식별하는 것도 동등하게 중요합니다.
API 수익화의 응용
API 수익화의 응용은 어디에나 있습니다. SMS(Short Message/Messaging Service) 인증 코드는 API 수익화의 전형적인 예입니다. 클라우드 벤더들도 메시지 큐, 텍스트 인식 등의 서비스에 이 모델을 사용합니다. 보안 벤더들은 WAF(Web Application Firewall) 및 콘텐츠 필터링 서비스에 이를 사용합니다. 이 수익화 모델은 매우 성공적이어서 이를 지원할 적절한 기술 스택이 절실히 필요합니다. 즉, 우리의 API를 세심하게 관리할 무언가가 필요합니다.
API를 관리할 때, 누가 게시할 수 있는지, 무엇을 게시할지, 어디에 게시할지를 관리해야 하며, API가 URL 패턴, 명명 규칙, 접근 제어 규칙과 같은 조직 표준을 준수하도록 해야 합니다. 또한, 각 부서는 API 업데이트 또는 설계 개선, 트래픽 제어, 속도 제한, 보안 전략 실행 등을 포함하여 자체 API를 독립적으로 관리할 수 있어야 합니다. 또한 사용량, 성능 및 기타 지표를 실시간으로 관찰해야 합니다.
API 게이트웨이는 API를 관리하기 위해 도입된 도구입니다. API 게이트웨이는 API 처리에서 발생하는 다양한 문제를 해결할 수 있습니다. 중앙 프록시로서, API 게이트웨이는 들어오는 모든 클라이언트 요청을 의도된 목적지(백엔드 서비스)로 라우팅하여 API를 더 안전하고 관리하기 쉽게 만듭니다. 대부분의 API 게이트웨이는 다양한 인증 및 권한 부여 프로토콜을 지원하여 사용자가 복잡한 권한 제어 및 속도 제한과 같은 많은 기능을 수행할 수 있도록 합니다.
API 게이트웨이를 위한 많은 인기 있는 오픈 소스 프로젝트가 있으며, 그 중 가장 주목할 만한 것은 Apache APISIX와 그 대체 기업 SaaS 솔루션인 API7 Cloud입니다.
APISIX의 API 수익화 실습
Apache APISIX는 이러한 필수 기능을 지원하며 다양한 관찰 가능성 플랫폼(Prometheus, OpenTelemetry, Apache Skywalking 등)과 통합됩니다. 이러한 통합 플러그인은 Apache APISIX의 API 분석 능력을 강화하여 매우 포괄적인 관찰 가능성을 실현합니다. 더욱이, 사용자 식별 문제에 대해 Apache APISIX는 "소비자"라는 개념을 제안했습니다.
다른 소비자는 다른 사용자에 해당합니다. 각 소비자는 자신의 플러그인 및 업스트림 구성과 연결됩니다. 소비자는 동일한 API를 요청하는 다른 소비자가 있고 다른 플러그인 및 업스트림 구성을 실행해야 할 때 유용합니다. 이 경우, 인증 시스템은 소비자를 기반으로 식별하여 다른 규칙을 구성하므로 사용자 관리가 편리합니다.
그러나 단순히 소비자를 지원하는 것만으로는 충분하지 않습니다. 기업 사용자의 경우, 여러 소비자가 동일한 소비 할당량을 공유해야 하며, 각 소비자의 구성을 별도로 관리하면 작업이 너무 번거로워집니다. 따라서 APISIX는 "소비자 그룹"이라는 또 다른 개념을 제안했습니다. 여러 소비자가 동일한 구성 세트와 동일한 소비 할당량을 공유할 수 있습니다.
APISIX의 API 수익화 실습을 이해한 후, 구체적인 응용을 살펴보겠습니다.
- 기업에 대한 속도 제한 기능을 구성하고, 기업의 사용자들이 동일한 구성을 공유합니다.
# 소비자 그룹 생성
curl http://127.0.0.1:9180/apisix/admin/consumer_groups/company_a -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins": {
"limit-count": {
"count": 200,
"time_window": 60,
"rejected_code": 503,
"group": "$consumer_group_id"
}
}
}'
# 소비자 1 생성
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username": "jack",
"plugins": {
"key-auth": {
"key": "auth-one"
}
},
"group_id": "company_a"
}'
# 소비자 2 생성
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username": "johnson",
"plugins": {
"key-auth": {
"key": "auth-two"
}
},
"group_id": "company_a"
}'
# 경로 생성
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/get",
"plugins": {
"key-auth": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org": 1
}
}
}'
# 경로 요청
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 199
...
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-two'
...
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 198
...
# 분당 요청 수를 2로 변경
curl http://127.0.0.1:9180/apisix/admin/consumer_groups/company_a -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins": {
"limit-count": {
"count": 2,
"time_window": 60,
"rejected_code": 503,
"group": "$consumer_group_id"
}
}
}'
# 경로 요청
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-two'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
...
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 0
...
# 요청 수 초과, HTTP 503
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
HTTP/1.1 503 Service Temporarily Unavailable
# 1분 후, 요청 수 복구
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
...
# 다른 경로 생성
curl http://127.0.0.1:9180/apisix/admin/routes/2 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/anything",
"plugins": {
"key-auth": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org": 1
}
}
}'
# 두 경로가 동일한 요청 수를 공유하는 것을 확인할 수 있습니다.
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
...
curl -i http://127.0.0.1:9180/anything -H 'apikey: auth-one'
HTTP/1.1 503 Service Temporarily Unavailable
...
요약
API 수익화를 통해 서비스와 데이터를 수익으로 전환하려면 기업은 전문적인 API 관리 도구를 도입해야 합니다: API 게이트웨이. 가장 인기 있는 API 게이트웨이는 Apache APISIX이며, API 수익화에 대한 풍부한 실습을 가지고 있습니다. APISIX는 소비자 및 소비자 그룹과 같은 개념을 만들어 API 관리를 크게 용이하게 하고 기업이 API를 더 원활하게 수익화할 수 있도록 합니다.