Что такое 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.
Практика монетизации API в APISIX
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 ... # изменение значения count на 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 # через минуту лимит восстанавливается 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.