¿Cómo monetizar APIs de IA con Azure API Management? | Parte II

¿Cómo monetizar APIs de Inteligencia Artificial con el Azure API Management?

El despliegue de una arquitectura apropiada es vital para administrar y rentabilizar eficazmente las APIs de Inteligencia Artificial. En este nuevo artículo, nos centraremos en el elemento esencial de esta estructura en Azure API Management. Además, abordaremos el diseño del modelo comercial y el establecimiento del proveedor de pagos, empleando Stripe como ejemplo.

Arquitectura de la solución

El componente central de la arquitectura es Azure API Management, un servicio extraordinario de Azure que permite la integración y transformación de APIs de origen heterogéneo en un único componente que centraliza su gestión y su gobierno.

Gracias al Azure API Management podremos afrontar, entre otros, los siguientes desafíos:

  • Abordar la diversidad y complejidad en las abstracciones de los *backends* (la parte que implementa la lógica de negocio de las APIs), así como la complejidad que puedan imponer los consumidores en las formas en que requieren o solicitan acceder a los APIs
  • Exponer de forma segura los servicios hospedados dentro y fuera de Azure como APIs
  • Facilitar y propiciar el descubrimiento y consumo de las APIs por parte de agentes internos y externos a la organización
  • Incrementar la protección de las APIs, acelerar significativamente su implementación y mejora, así como la «observabilidad» de su desempeño, uso y funcionamiento
  • Flexibilizar y gestionar el acceso controlado a las APIs, así como medir su consumo para acciones de monetización

En ese sentido, la forma en alto nivel que tendrá la arquitectura que implementaremos es la siguiente:

Arquitectura de la solución Azure API Management

Arquitectura en alto nivel para la monetización de APIs con el Azure API Management.

En esta arquitectura contaremos con los siguientes componentes:

  • Un Azure API Management (APIM) con el Developers Portal
  • Un Azure Container Application (ACA) con una aplicación de Docker desarrollada en .NET 6 y programada con C# para gestionar el proceso de subscripciones a las APIs y la integración con el sistema de pagos
  • El sistema de pagos representado por Stripe
  • Una Azure Function que se encargará de reportar periódicamente los consumos de APIs de tus clientes al sistema de pagos
  • Servicios generalistas de Azure tales como un Azure Container Registry (ACR) para mantener las imágenes de Docker a desplegar en el ACA, un Azure Storage Account para preservar archivos que necesitaremos en nuestra solución y una Azure Applications Insights integrado a un Azure Log Space para la conservación de trazas generadas por el APIM y el ACA

Configurando el modelo de negocio

La configuración de un modelo de negocio no es una labor fácil. Si tu equipo opera bajo un modelo de agilidad, como el Scrum, es completamente normal que la creación y el establecimiento del modelo de negocio para tus APIs consuman entre tres y cuatro ciclos de trabajo o Sprints.

Después de definir el modelo de negocio, las tareas subsiguientes probablemente consistirán en desarrollar una aplicación para su gestión que se integre con Azure API Management (APIM) utilizando su API REST para la creación y actualización de los componentes clave del modelo de negocio, como los productos y las APIs relacionadas con cada uno de ellos.

Por limitaciones de tiempo, la creación de dicha aplicación supera el objetivo de este artículo, por lo que simulará el modelo de negocio diseñado utilizando un archivo JSON que podrás encontrar en el repositorio de GitHub.

Extracto del JSON que representa el modelo de negocio.

Este archivo JSON lo mantendremos y accederemos desde un contenedor de Blobs en el Azure Storage Account.

De la misma manera, el equivalente en Azure API Management a este modelo de negocio fue creado manualmente y se ve de la siguiente forma:

Podemos ver el modelo de negocio en el Azure API Management en el apartado de «Productos»

¿Por qué Stripe?

Como hemos mencionado durante todo el artículo, usaremos Stripe como mecanismo de pagos, por las siguientes razones:

  • Es un proveedor de pagos, con lo cual no nos hace falta implementar por nuestra cuenta los sistemas que tendrían que calcular cuánto cobrar a los consumidores periódicamente, solamente tenemos que implementar el mecanismo de reportar el consumo para que le sea cobrado a los clientes
  • Permite tener una cuenta de desarrollador completamente gratis y sin restricciones, proporcionando tarjetas de crédito para pruebas
  • Tiene un API de implementación simplemente exquisito, con ejemplos muy buenos y completos para una gran variedad de lenguajes de programación como C#, TypeScript (y JavaScript), Python, Java, y más
  • Las librerías de integración se actualizan constante y regularmente.
  • Proporciona un CLI que nos permite integrar capacidades de gestión automatizadas para tares de DevOps y para integraciones necesarias durante flujos de integración y despliegue continuos
  • Permite tener una representación de nuestro modelo de negocio, con lo cual podemos definir productos que se facturen en diferentes tiempos (semanales, mensuales, trimestrales, etc)

El único defecto que encuentro en Stripe es que, de la variedad de sistemas ofrecidos en el mercado, está entre los más costosos.

Inicializando el proveedor de pagos

Partiendo de que ya contamos con una cuenta de desarrollador de Stripe, lo que haremos es ejecutar un script de PowerShell para inicializar el modelo de negocio dentro de Stripe. También la usaremos para inicializar un webhook que necesitaremos para la comunicación asíncrona entre Stripe y Azure API Management.

Para que podamos ejecutar este script, necesitamos crear una API Key en Stripe con permisos específicos para la personalización de productos y servicios.

¿Cómo crear un API Key en Stripe?

  1. Vamos a nuestra cuenta de Stripe y accedemos al dashboard de desarrolladores
  2. Elegimos la opción de «API Keys» del menú superior
  3. En la sección de «Restricted Keys» le damos al botón de «Create restricted key»
  4. Le ponemos un nombre a la API Key que estamos creando, por ejemplo «Init Stripe»
  5. En los permisos, otorgamos permisos de lectura y escritura a los aspectos de Prices, Products y Webhook Endpoints

Una vez que tenemos este API Key creado, vamos a ver qué hace este script, el cual puedes encontrar completo en el siguiente repositorio de GitHub.

Lo primero que debemos saber, es que el script necesita cinco parámetros:

  • Un Stripe API Key que creamos anteriormente llamado «Init Stripe»
  • La URL para el webhook. Esta URL debe ser la URL del Azure Applicacion Container (ACA) donde desplegaremos la aplicación de gestión de las subscripciones, seguido del valor webhook/stripe
  • La URL al archivo JSON con el modelo de monetización. Al estar desplegado en un contenedor de Blobs, podemos obtener una URL pública para acceder a este recurso directamente
  • La URL del gateway del Azure API Management (APIM)

Ubicación de la URL del Azure API Management Gateway

  • Una de las claves de subscripción del APIM, siendo la recomendada la que ya trae definida al provisionarse el recurso:

Ubicación de las claves de subscripción en el Azure API Management

Llamada al Script

Por lo que la llamada al script se ve de la siguiente forma:

La primera parte del script se encarga de instalar la versión más reciente del CLI de Stripe:

Primera parte del script de PowerShell de configuración de Stripe que se encarga de capturar los parámetros y de instalar el CLI de Stripe

La siguiente parte del Script hace dos cosas:

  • Por un lado, descarga el JSON con la definición del modelo de negocio desde el contenedor de Blobs en el Azure Storage Account
  • Y por otro, se trae los productos definidos en el Azure API Management a través del API REST de gestión

Debemos hacer esto para poder asegurarnos de que el producto que voy a crear en Stripe efectivamente existe configurado en el Azure API Management y que concuerden los IDs de los mismos entre ambas plataformas, ya que será a través de dichos identificadores que, como veremos más adelante, se identificarán los consumos para generar la facturación y efectivamente monetizar nuestras APIs.

La siguiente parte del código es un poco más larga y os invito a leerla directamente del repositorio de GitHub, y es la que se encarga de usar el CLI de Stripe para de forma recursiva hacer llamadas para crear los productos, sus características, sus precios y su frecuencia de facturación.

En este punto es donde podremos definir que un producto sea facturado semanal, mensual, trimestral, semestral o anualmente.

Por último, creamos el webhook y recuperamos su secreto para poder emplearlo como parámetro de configuración en la aplicación que desplegaremos en el Azure Container Application (ACA).

Tras ejecutar este Script, si entramos en nuestra cuenta de Stripe veremos como los productos estarán configurados:

En el próximo artículo

En la Parte III, abordaremos la delegación de capacidades en Azure API Management, incluyendo la gestión de subscripciones y la integración con Stripe para la facturación

¡No te pierdas la tercera y última parte de esta sección y descubre cómo monetizar tus APIs de forma eficiente en el entorno de la nube!

Artículo escrito por Rodrigo Liberoff, Project Manager en ENCAMINA.

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

Relacionados

Tendencias

Más leídos

Se habla de..

0
Would love your thoughts, please comment.x
()
x