Exploitez Amazon pour l'écosystème et la croissance d'Apache APISIX

Chao Zhang

Chao Zhang

October 26, 2022

Ecosystem

L'auteur Chao Zhang est un membre du PMC d'Apache APISIX ainsi qu'un expert technique chez API7.ai. Il est le responsable produit d'API7 Cloud et un passionné d'open source. Cet article compile les contenus partagés par Chao lors du "AWS Summit Greater China 2022".

Apache APISIX

En 2019, deux ingénieurs logiciels ont loué un petit bureau, créé un projet de passerelle API de 0 à 1, l'ont open-sourcé et l'ont ensuite donné à la Apache Software Foundation. Le projet, APISIX, est devenu par la suite un projet de niveau supérieur d'Apache et le projet de passerelle API open source le plus populaire avec une communauté active et une croissance rapide. Les deux ingénieurs, qui ont fondé API7.ai, sont maintenant rejoints par de nombreuses personnes partageant les mêmes idées à travers le monde, continuant à contribuer à Apache APISIX, en faisant une étoile brillante dans le domaine de la gestion des API.

Performance Ultime & Extensions Riches

APISIX a toujours eu une exigence de haute performance en tant que passerelle API cloud-native depuis sa création. Par conséquent, lors de l'utilisation d'Apache APISIX, les expressions les plus directes des utilisateurs sont sa haute performance et sa faible latence. Parallèlement, en termes de fonctionnalités, APISIX possède une capacité étendue à gérer le trafic. Ainsi, APISIX est souvent utilisé pour les déploiements en canary et les déploiements blue-green. En outre, APISIX dispose également d'une fonction d'authentification en ce qui concerne la sécurité des API, et il prend en charge différentes méthodes d'authentification, telles que JWT Auth, HMAC Auth, le protocole Open ID Connect, etc.

De plus, APISIX est convivial pour les développeurs qui travaillent sur des extensions et des développements personnalisés. En plus de prendre en charge Lua, vous pouvez également utiliser APISIX Plugin Runner pour étendre APISIX avec des langages de haut niveau, tels que Java, Go, Python et WebAssembly. Avec le support des plugins multi-langages, vous pouvez effectuer des développements personnalisés sans aucun coût d'apprentissage supplémentaire.

Écosystème Diversifié & Communauté Open Source Active

APISIX a de nombreuses actions concernant l'écosystème et a réalisé des développements intégrés basés sur de nombreux types de projets différents. Le dépôt principal d'APISIX possède plus de 70 plugins différents.

Vous pouvez réaliser une intégration et un déploiement rapides avec des plateformes comme AWS en utilisant ces plugins, et ils peuvent également aider à réduire les coûts de développement supplémentaires des utilisateurs pendant l'utilisation.

Parallèlement, le nombre de contributeurs mensuels de la communauté APISIX se maintient généralement à environ 30, ce qui est un nombre très actif. Dans les dépôts GitHub d'APISIX, vous pouvez également voir de nombreux utilisateurs de la communauté aider à répondre et à résoudre des problèmes, des PR et des questions dans la section Discussion. L'environnement communautaire positif contribue également à accélérer les mises à niveau du produit et à enrichir l'écosystème.

Par conséquent, APISIX a commencé à avoir des clients d'entreprise dans le monde entier, tels qu'Airwallex, Sina Weibo, European Factory Platform, NASA et Nayuki, etc. De plus, grâce à l'utilisation et aux contributions de plus en plus d'entreprises, APISIX est devenu plus connu du public. Actuellement, les contributeurs d'APISIX ont dépassé 300, et le nombre total de contributeurs des projets open source liés à APISIX a dépassé 500.

github_contributors.PNG

Mise à Niveau de l'Architecture

Revenons au niveau de l'architecture du produit, l'architecture d'APISIX utilise un mode plan de données + plan de contrôle comme l'image suivante.

apisix_architecture.PNG

Le côté gauche est APISIX lui-même, qui est également le plan de données de toute la passerelle API, et il traite principalement le trafic métier des utilisateurs. En outre, APISIX fournit des fonctions de gestion de service telles que la limitation de débit, l'équilibrage de charge, etc. Le côté droit est le plan de contrôle de la passerelle API, qui contrôle les composants opérationnels d'APISIX, y compris les composants de journalisation liés à l'observabilité pour collecter les données d'état opérationnel. Parallèlement, avec etcd et l'API Admin, APISIX peut aider les utilisateurs à configurer les règles associées afin qu'APISIX fonctionne comme prévu.

multi_language_plugin_architecture.PNG

Comme mentionné précédemment, les plugins multi-langages peuvent être intégrés dans l'architecture du plan de données du côté gauche. Par exemple, il permet aux utilisateurs d'utiliser des langages de programmation comme C++ ou Rust pour étendre APISIX via le module wasm plugin à l'intérieur d'APISIX. Parallèlement, le côté droit montre comment étendre APISIX basé sur Plugin Runner en utilisant plusieurs langages. Il appellera le Plugin Runner spécifique au langage (comme Java Plugin Runner) pour recevoir les demandes d'APISIX via le socket de domaine Unix traditionnel de manière RPC et aidera APISIX à gérer ce trafic.

Exploration d'APISIX sur Amazon

Actuellement, APISIX a quelques explorations concernant les produits et les performances basées sur Amazon.

Amazon Marketplace

apisix_amazon_market.PNG Note : API7.ai est également connu sous le nom de Zhiliu Technology

Si vous recherchez APISIX dans l'Amazon Marketplace, vous verrez les résultats ci-dessus. Il est listé sur la plateforme depuis 2021. En utilisant le logiciel ci-dessus, vous pouvez déployer rapidement APISIX sur toutes les instances Amazon EC2. De plus, ce logiciel est gratuit, donc vous ne payez que les frais d'instance EC2.

Ce logiciel exécutera une instance APISIX et une instance etcd dans l'instance EC2. Par conséquent, il est plus adapté aux utilisateurs actuels d'Amazon lorsque vous souhaitez utiliser directement APISIX, ou utiliser POC (Proof of Concept) pour justifier si APISIX répond aux exigences de vos scénarios cibles.

CDK APISIX

CDK est un framework de développement logiciel open source fourni par Amazon qui vise à aider les utilisateurs à manipuler l'infrastructure cloud via le codage.

Le contributeur de la communauté APISIX, Pahud Hsieh a développé cdk-apisix basé sur CDK. Ce projet permet aux utilisateurs de créer des instances APISIX via des méthodes de codage et d'automatisation. Contrairement à ce que nous avons mentionné ci-dessus, il peut déployer directement APISIX sur AWS Fargate. Par conséquent, nous pouvons réaliser un déploiement et une destruction automatiques dans certains scénarios nécessitant des déclencheurs d'événements. L'ensemble du processus ne nécessite aucune opération manuelle et devient également plus réactif.

aws-cdk.PNG

Basé sur l'architecture ci-dessus, le trafic du client sera dirigé vers APISIX via le cloud ELB, et APISIX effectuera ensuite un traitement de base, tel que l'authentification, la limitation de débit, etc. Enfin, le trafic sera envoyé aux instances d'application réelles à l'arrière-plan.

En utilisant la méthode CDK, les utilisateurs peuvent déployer Apache APISIX en utilisant leurs langages de codage familiers, et cela peut exploiter les attributs de ces langages de haut niveau pour déployer APISIX sur Amazon plus commodément. Parallèlement, en termes d'utilisation, lorsque vous accomplissez une configuration de modèle de déploiement, elle peut être copiée et personnalisée. Par conséquent, vous pouvez directement utiliser cette configuration de modèle chaque fois que vous en avez besoin à l'avenir, ce qui facilite le processus de déploiement.

Plugin Amazon-Lambda

Lorsque vous utilisez Lambda ou Serverless pour déployer des applications, il existe un moyen extrêmement économique d'exécuter les projets associés, et il peut également réaliser une mise à l'échelle instantanée ainsi que d'autres scénarios métier. En utilisant cette méthode pour déployer des applications, nous avons généralement besoin d'un déclencheur d'événement afin que la passerelle API puisse devenir un chemin pour le déclencheur d'événement.

Lorsque l'utilisateur configure le plugin amazon-lambda d'APISIX dans le routage, il peut rediriger tout le trafic vers les adresses de fonction Lambda configurées par l'utilisateur. La fonction Lambda traitera ces demandes et renverra les résultats au client via APISIX.

Ce plugin prend également en charge l'identification Amazon IAM et Key Auth. Dans ce cas, la fonction Lambda déployée à l'arrière-plan peut mieux s'intégrer avec APISIX sans sacrifier la sécurité.

Tests de Performance Associés

En mai 2022, les processeurs AWS Graviton 3 ont été officiellement lancés. Grâce à la mémoire DDR5, les processeurs Graviton3 offrent jusqu'à 25 % de meilleures performances de calcul, jusqu'à 2 fois plus de performances en virgule flottante et 50 % de bande passante mémoire en plus par rapport aux processeurs AWS Graviton2 ; les instances basées sur Graviton3 utilisent jusqu'à 60 % d'énergie en moins pour les mêmes performances que les instances EC2 comparables.

Peu de temps après la sortie des processeurs AWS Graviton3, APISIX a effectué un test de régression complet basé sur les processeurs AWS Graviton3, ce qui signifie que les utilisateurs peuvent utiliser APISIX en toute confiance sur les instances EC2 Graviton3. Il n'y aura aucun problème de compatibilité. Parallèlement, nous avons également effectué des tests de performance sur la famille des processeurs AWS Graviton. En référence aux deux scénarios suivants, nous avons effectué les tests de performance sur les processeurs AWS Graviton2 et AWS Graviton3.

  • Single upstream : Nous n'utilisons qu'un seul upstream dans ce scénario (sans aucun plugin), et nous testons principalement les performances d'APISIX en mode proxy pur de retour à la source.
  • Single upstream + multiple plugins : Nous utilisons un seul upstream et deux plugins dans ce scénario, et nous testons principalement les performances d'APISIX lorsque nous activons limit-count et prometheus, qui sont deux plugins consommateurs de performances.

aws-graviton.PNG aws-graviton-plugin.PNG

À partir des images ci-dessus, nous pouvons constater qu'APISIX a une performance exceptionnelle en termes de stabilité ou de capacité de gestion du trafic. Les processeurs AWS Graviton3 offrent jusqu'à 76 % de meilleures performances dans les scénarios de calcul intensif en IO comme la passerelle API et réduisent jusqu'à 38 % de latence. Ces données ont une performance encore meilleure que les données officielles mentionnées ci-dessus fournies par AWS (25 % d'augmentation des performances).

performance-comparison.PNG

En général, ses performances sont remarquablement exceptionnelles lors de l'utilisation d'APISIX sur Grafana 3. Basé sur des processeurs hautes performances comme AWS Graviton3, APISIX peut aider à augmenter l'efficacité et à réduire les ressources et les coûts dans les affaires réelles.

Comment API7 Cloud exploite Amazon pour réaliser une croissance rapide du produit ?

Avec la croissance rapide du Cloud Native, de plus en plus d'entreprises ont déplacé leurs activités vers le cloud (elles choisissent généralement plusieurs plateformes de cloud public). Par conséquent, la manière de gérer et de déployer efficacement les API cloud est devenue un problème urgent.

API7 Cloud est un service SaaS basé sur APISIX et aide les utilisateurs à connecter tous les produits SaaS déployés sur n'importe quelle plateforme cloud. API7 Cloud a été lancé pour la première fois en mars 2022 et fournit aux utilisateurs une fonction de gestion d'API facile à utiliser, des métriques d'observabilité flexibles et riches, et la sécurité des API, ce qui permet à la connexion API de devenir plus efficace, plus sûre et plus fiable.

Ce produit facture les utilisateurs sur le nombre d'appels d'API, et actuellement, il prend en charge deux façons de déployer le plan de données. La première est l'auto-hébergement, ce qui signifie que les utilisateurs préparent leur infrastructure et déploient APISIX sur l'infrastructure afin qu'APISIX puisse communiquer avec API7 Cloud. L'autre manière est appelée semi-gérée, également appelée semi-hébergée. Tout d'abord, les utilisateurs doivent autoriser API7 Cloud à gérer leur compte cloud (comme un compte Amazon). Ensuite, ils peuvent déployer APISIX sur toutes ses infrastructures sous leurs comptes avec un seul clic sur le panneau de configuration d'API7 Cloud.

Actuellement, l'ensemble des composants d'API7 Cloud est hébergé sur AWS et utilise les services AWS ; l'architecture du produit est illustrée ci-dessous : api7_cloud.png

À partir de l'image ci-dessus, le plan de données avec APISIX peut être déployé sur différentes plateformes cloud, et il peut même être déployé sur l'infrastructure ou le centre de données de l'utilisateur. Du côté d'API7 Cloud, il fournit principalement des attributs essentiels comme l'observabilité, la gestion de base des API et les sécurités.

En exploitant les services d'Amazon, API7 Cloud a une meilleure performance produit.

Tout d'abord, APISIX s'appuie sur le service Amazon EKS. En tant que nouveau produit SaaS, API7 Cloud a été déployé sur K8s dès le début. Par conséquent, nous déployons tous les composants sur les clusters EKS ; ainsi, nous pouvons utiliser certaines capacités fournies par le cloud. Parallèlement, chaque utilisateur aurait des composants différents, et tout composant individuel pourrait fonctionner à l'intérieur du cluster. Ainsi, nous avons fait un certain isolement réseau en utilisant la méthode d'isolation des locataires développée sur NetworkPolicy, pour s'assurer que ces espaces de noms des locataires ne pourront pas accéder les uns aux autres. Dans ce service, nous utilisons également APISIX Ingress Controller comme passerelle pour faire fonctionner l'ensemble de l'opération en douceur.

APISIX Ingress Controller est une implémentation du contrôleur Ingress, qui permet aux utilisateurs de convertir les règles configurées en règles APISIX afin qu'APISIX puisse gérer le trafic réel.

Deuxièmement, en tant que composant le plus critique du produit, API7 Cloud choisit Amazon RDS (Postgre SQL) comme base de données. Nous stockons les métadonnées des utilisateurs dans RDS, telles que les données sources de l'API et les actions des utilisateurs. En tant que produit SaaS, nous devons savoir comment un utilisateur utilise notre produit et déterminer si nous avons des problèmes avec la disposition et les expériences des utilisateurs développeurs pour déterminer la direction future de notre produit.

Nous utilisons également le composant Amazon ElasticCache dans API7 Cloud et choisissons Redis en mode maître-esclave. Redis est principalement utilisé pour stocker l'état des instances du plan de données, qui sont les données d'état envoyées périodiquement à Cloud lorsque APISIX se connecte à API7 Cloud. Comme les données ne sont ni sensibles ni vitales, et que le plan de données doit communiquer fréquemment avec le plan de contrôle, nous n'avons pas choisi une base de données relationnelle ici.

En dehors de cela, ce composant a une autre utilisation importante : il peut être considéré comme une file d'attente de messages. Redis 5.0 introduit la structure de données Stream, donc nous pouvons l'utiliser comme une file d'attente de messages super légère pour aider les utilisateurs à créer, manipuler et détruire des données plus rapidement.

Conclusion

Cet article partage les expériences utilisateur du point de vue des projets liés à APISIX. Avec le soutien des services et de l'écosystème d'Amazon, APISIX a exploré davantage son écosystème. Nous souhaitons qu'APISIX et Amazon puissent avoir des intégrations plus intéressantes et développer ensemble un meilleur écosystème.

Tags: