Qu'est-ce que la monétisation des API ?

Liu Wei

November 11, 2022

Technology

Imaginez que vous avez développé un service qui collecte des informations sur les réductions dans tous les supermarchés de votre ville. Si d'autres développeurs souhaitent accéder à ces données, ils peuvent utiliser l'API pour obtenir les informations qu'ils désirent, et nous pouvons facturer des frais en fonction de leur utilisation de l'API. Convertir des données en argent via des API s'appelle la monétisation des API. La monétisation des API est un moyen idéal de rendre vos services rentables.

Monétisation des API

Une fois qu'une entreprise adopte le modèle commercial de la monétisation des API, la prochaine étape consiste à envisager le modèle de tarification. La plupart des fournisseurs d'API utilisent l'un des trois modèles de tarification standard : l'accès groupé, le paiement par appel et le paiement mensuel. Dans tous ces modèles de tarification, les fournisseurs d'API doivent compter le nombre d'appels d'API de chaque utilisateur. Par conséquent, identifier l'identité de l'utilisateur est crucial, car celui-ci peut être limité si le nombre d'appels d'API dépasse le forfait de service. Cependant, identifier simplement l'utilisateur individuel ne suffit pas. Souvent, ce sont des utilisateurs professionnels qui achètent les services. Dans ce cas, les employés de l'entreprise partagent le même compte de facturation lorsqu'ils sont associés à leur organisation. Il est donc tout aussi important d'identifier l'organisation à laquelle appartient l'utilisateur.

Applications de la monétisation des API

Les applications de la monétisation des API sont omniprésentes. Le code de vérification par SMS (Short Message/Messaging Service) est un exemple typique de monétisation des API. Les fournisseurs de cloud utilisent également ce modèle pour des services tels que les files d'attente de messages, la reconnaissance de texte, etc. Les fournisseurs de sécurité l'utilisent pour les services de pare-feu d'application web (WAF) et de filtrage de contenu. Ce modèle de monétisation est si réussi que nous avons désespérément besoin d'une pile technologique appropriée pour le soutenir. C'est-à-dire que nous avons besoin de quelque chose pour gérer nos API de manière délicate.

Lors de la gestion des API, nous devons administrer qui peut publier, quoi publier et où publier, en veillant à ce que les API respectent les normes organisationnelles telles que les modèles d'URL, les conventions de dénomination et les règles de contrôle d'accès. De plus, chaque département doit être capable de gérer indépendamment ses propres API, y compris les mises à jour des API ou les améliorations de conception, en exécutant le contrôle du trafic, la limitation de débit et les stratégies de sécurité. Nous devons également observer en temps réel l'utilisation, les performances et d'autres métriques.

La passerelle API est l'outil introduit pour gérer les API. Les passerelles API peuvent résoudre divers problèmes dans la gestion des API. En tant que proxy central, la passerelle API achemine toutes les demandes client entrantes vers la destination prévue (service backend), rendant votre API plus sécurisée et plus facile à gérer. La plupart des passerelles API prennent également en charge divers protocoles d'autorisation et d'authentification, permettant aux utilisateurs d'effectuer un contrôle d'autorisation complexe et de nombreuses autres fonctions, telles que la limitation de débit.

Il existe de nombreux projets open-source populaires pour les passerelles API, notamment Apache APISIX et sa solution SaaS d'entreprise alternative, API7 Cloud.

Pratique de la monétisation des API avec APISIX

Apache APISIX prend en charge ces fonctions essentielles et s'intègre à diverses plateformes d'observabilité (Prometheus, OpenTelemetry, Apache Skywalking, etc.). Ces plugins intégrés ont renforcé la capacité d'Apache APISIX à analyser les API, permettant ainsi une observabilité incroyablement complète. De plus, pour le problème de l'identification des utilisateurs, Apache APISIX a proposé un concept de "consommateur".

Consommateur APISIX

Différents consommateurs correspondent à différents utilisateurs. Chaque consommateur est lié à ses plugins et configurations en amont. Les consommateurs sont utiles lorsque vous avez différents consommateurs demandant la même API, et que vous devez exécuter différentes configurations de plugins et en amont. Dans ce cas, le système d'authentification identifiera en fonction du consommateur pour configurer différentes règles, facilitant ainsi la gestion des utilisateurs.

Consommateur APISIX

Mais simplement prendre en charge les consommateurs ne suffit pas. Pour les utilisateurs professionnels, plusieurs consommateurs doivent partager le même quota de consommation, et si nous gérons la configuration de chaque consommateur séparément, l'opération sera trop fastidieuse. Par conséquent, APISIX a proposé un autre concept de "groupe de consommateurs". Plusieurs consommateurs peuvent partager le même ensemble de configurations et le même quota de consommation.

Groupe de consommateurs APISIX

Après avoir compris la pratique d'APISIX en matière de monétisation des API, examinons une application spécifique.

  • Configurer la fonction de limitation de débit pour l'entreprise, et les utilisateurs de l'entreprise partagent la même configuration
# créer un groupe de consommateurs
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"
        }
    }
}'

# créer le consommateur 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"
}'

# créer le consommateur 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"
}'

# créer une route
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
        }
    }
}'

# accéder à la route
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
...

# changer la valeur de count à 2 requêtes par minute
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"
        }
    }
}'

# accéder à la route
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
...


# pas de quota, HTTP 503
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
HTTP/1.1 503 Service Temporarily Unavailable


# après une minute, le quota est rétabli
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
...


# créer une autre route
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
        }
    }
}'

# vous pouvez voir que les deux routes partagent le même quota
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
...

Résumé

Pour convertir des services et des données en revenus grâce à la monétisation des API, les entreprises doivent introduire des outils professionnels de gestion des API : passerelle API. La passerelle API la plus populaire est Apache APISIX, qui possède une riche expérience en matière de monétisation des API. APISIX crée des concepts tels que consommateur et groupe de consommateurs pour faciliter grandement la gestion des API et permettre aux entreprises de monétiser les API plus facilement.

Tags: