APIモネタイゼーションとは何か?
Liu Wei
November 11, 2022
あなたが、市内のすべてのスーパーマーケットから割引情報を収集するサービスを開発したと想像してください。他の開発者がこのデータにアクセスしたい場合、APIを使用して必要な情報を取得できます。そして、APIの使用に対して料金を請求することができます。データをAPIを通じてお金に変換することを、APIモネタイゼーションと呼びます。APIモネタイゼーションは、サービスを収益化するための理想的な方法です。
企業がAPIモネタイゼーションのビジネスモデルを採用すると、次に考慮すべきは価格設定モデルです。ほとんどのAPIプロバイダーは、3つの標準的な価格設定モデルのいずれかを使用します。バンドルアクセス、呼び出しごとの支払い、月額制です。これらの価格設定モデルでは、APIプロバイダーは各ユーザーのAPI呼び出し回数をカウントする必要があります。そのため、ユーザーの識別が重要です。なぜなら、API呼び出し回数がサービスパッケージの上限を超えた場合、ユーザーはスロットリングされる可能性があるからです。しかし、単に個々のユーザーを識別するだけでは不十分です。多くの場合、サービスを購入するのは企業ユーザーです。この場合、企業の従業員は組織に関連付けられた同じ請求アカウントを共有します。したがって、ユーザーが属する組織を識別することも同様に重要です。
APIモネタイゼーションの応用例
APIモネタイゼーションの応用例は至る所にあります。SMS(ショートメッセージサービス)認証コードは、APIモネタイゼーションの典型的な例です。クラウドベンダーも、メッセージキューやテキスト認識などのサービスでこのモデルを使用しています。セキュリティベンダーは、WAF(Webアプリケーションファイアウォール)やコンテンツフィルタリングサービスでこのモデルを採用しています。このモネタイゼーションモデルは非常に成功しているため、それをサポートする適切な技術スタックが求められています。つまり、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
...
# 1分あたりのリクエスト数を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をよりスムーズに収益化できるようにします。