¿Qué es la monetización de API?
Liu Wei
November 11, 2022
Imagina que has desarrollado un servicio que recopila información de descuentos de todos los supermercados de tu ciudad. Si otros desarrolladores quieren acceder a estos datos, pueden usar la API para obtener la información que desean, y nosotros podemos cobrar una tarifa según su uso de la API. Convertir datos en dinero a través de APIs se conoce como monetización de APIs. La monetización de APIs es una forma ideal de hacer que tus servicios sean rentables.
Una vez que una empresa adopta el modelo de negocio de monetización de APIs, lo siguiente que debe considerar es el modelo de precios. La mayoría de los proveedores de APIs utilizan uno de los tres modelos de precios estándar: acceso agrupado, pago por llamada y pago mensual. En todos estos modelos de precios, los proveedores de APIs necesitan contar el número de llamadas a la API de cada usuario. Por lo tanto, identificar la identidad del usuario es crucial, ya que el usuario puede ser limitado si el número de llamadas a la API excede el paquete de servicio. Sin embargo, simplemente identificar al usuario individual no es suficiente. A menudo, son los usuarios corporativos quienes compran los servicios. En este caso, los empleados de la empresa comparten la misma cuenta de facturación cuando están asociados con su organización. Por lo tanto, es igualmente importante identificar la organización a la que pertenece el usuario.
Aplicaciones de la Monetización de APIs
Las aplicaciones de la monetización de APIs están en todas partes. El código de verificación por SMS (Servicio de Mensajes Cortos) es un ejemplo típico de monetización de APIs. Los proveedores de la nube también utilizan este modelo para servicios como colas de mensajes, reconocimiento de texto, etc. Los proveedores de seguridad lo utilizan para servicios como WAF (Firewall de Aplicaciones Web) y filtrado de contenido. Este modelo de monetización es tan exitoso que necesitamos desesperadamente una pila tecnológica adecuada para respaldarlo. Es decir, necesitamos algo que gestione nuestras APIs de manera delicada.
Al gestionar APIs, necesitamos administrar quién puede publicar, qué publicar y dónde publicar, asegurando que las APIs cumplan con los estándares organizacionales, como patrones de URL, convenciones de nomenclatura y reglas de control de acceso. Además, cada departamento necesita poder gestionar sus propias APIs de manera independiente, incluyendo actualizaciones de APIs o mejoras de diseño, ejecutando control de tráfico, limitación de tasa y estrategias de seguridad. También debemos observar el uso, el rendimiento y otras métricas en tiempo real.
El gateway de API es la herramienta introducida para gestionar las APIs. Los gateways de API pueden resolver varios problemas en el manejo de la API. Como un proxy central, el gateway de API enruta todas las solicitudes entrantes de los clientes al destino previsto (servicio backend), haciendo que tu API sea más segura y fácil de gestionar. La mayoría de los gateways de API también admiten varios protocolos de autorización y autenticación para que los usuarios puedan realizar controles de permisos complejos y muchas otras funciones, como la limitación de tasa.
Hay muchos proyectos populares de código abierto para gateways de API, siendo los más destacados Apache APISIX y su solución alternativa empresarial SaaS, API7 Cloud.
Práctica de Monetización de APIs en APISIX
Apache APISIX admite estas funciones esenciales y se integra con varias plataformas de observabilidad (Prometheus, OpenTelemetry, Apache Skywalking, etc.). Estos plugins integrados mejoran la capacidad de Apache APISIX para analizar APIs, logrando así una observabilidad increíblemente completa. Además, para el problema de identificación del usuario, Apache APISIX propuso un concepto de "consumidor".
Diferentes consumidores corresponden a diferentes usuarios. Cada consumidor se vincula con sus plugins y configuraciones de upstream. Los consumidores son útiles cuando tienes diferentes consumidores solicitando la misma API y necesitas ejecutar diferentes configuraciones de plugins y upstream. En este caso, el sistema de autenticación identificará basándose en el consumidor para configurar diferentes reglas, lo que facilita la gestión de usuarios.
Pero solo admitir consumidores no es suficiente. Para los usuarios empresariales, varios consumidores necesitan compartir la misma cuota de consumo, y si gestionamos la configuración de cada consumidor por separado, la operación será demasiado engorrosa. Por lo tanto, APISIX propuso otro concepto de "grupo de consumidores". Varios consumidores pueden compartir el mismo conjunto de configuraciones y la misma cuota de consumo.
Después de comprender la práctica de APISIX en la monetización de APIs, veamos una aplicación específica.
- Configurar la función de limitación de tasa para la empresa, y los usuarios de la empresa comparten la misma configuración
# crear grupo de consumidores
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"
}
}
}'
# crear consumidor 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"
}'
# crear consumidor 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"
}'
# crear ruta
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
}
}
}'
# acceder a la ruta
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
...
# cambiar el valor de count a 2 solicitudes por minuto
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"
}
}
}'
# acceder a la ruta
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
...
# sin count, HTTP 503
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
HTTP/1.1 503 Service Temporarily Unavailable
# después de un minuto, count se recupera
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
...
# crear otra ruta
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
}
}
}'
# puedes ver que ambas rutas comparten el mismo count
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
...
Resumen
Para convertir servicios y datos en ingresos a través de la monetización de APIs, las empresas necesitan introducir herramientas profesionales de gestión de APIs: gateway de API. El gateway de API más popular es Apache APISIX, que tiene ricas prácticas en la monetización de APIs. APISIX crea conceptos como consumidor y grupos de consumidores para facilitar enormemente la gestión de APIs y permite a las empresas monetizar APIs de manera más fluida.