Alternative à NGINX qui simplifie votre vie : Apache APISIX
September 15, 2022
L'API est une partie essentielle du monde numérique, et la passerelle API porte la lourde responsabilité de protéger sa sécurité et sa stabilité en tant que première porte d'entrée de l'API. De nombreux ingénieurs logiciels et équipes ont utilisé NGINX auparavant mais ont été ennuyés par les goulots d'étranglement et les restrictions de NGINX. Existe-t-il une meilleure alternative ?
Une excellente alternative à NGINX est Apache APISIX, mais qu'est-ce qu'Apache APISIX ?
Qu'est-ce qu'Apache APISIX
Apache APISIX est une passerelle API haute performance, dynamique et complète. Les quatre caractéristiques notables d'Apache APISIX sont :
- La propriété Apache : APISIX est open source et est également un projet de haut niveau de la Fondation Apache Software. Il est impossible de modifier la licence open source à mi-chemin, comme l'ont fait ElasticSearch et MongoDB. Parce qu'APISIX appartient à la Fondation Apache Software (ASF), il n'est plus un projet d'une entreprise ou d'un individu.
- Haute performance : APISIX est développé sur la base d'OpenResty (une distribution de NGINX), donc APISIX hérite également de la puissance de NGINX lui-même.
- Dynamique : Si NGINX fournit une architecture sous-jacente robuste, OpenResty ajoute plus de possibilités à NGINX en permettant l'utilisation de Lua pour contrôler le comportement de NGINX. Et APISIX, avec sa flexibilité et sa forte connexion avec d'autres systèmes, devient une passerelle API entièrement dynamique.
- Temps réel : APISIX stocke la configuration dans etcd. Cet avantage est que les changements de configuration peuvent être surveillés et obtenus en temps réel via l'API RESTful d'etcd, car etcd lui-même est une base de données KV distribuée, également utilisée par Kubernetes pour stocker la configuration. NGINX utilise des fichiers statiques pour stocker la configuration, et si la configuration est mise à jour, le temps de rechargement de NGINX sera très long.
Apache APISIX vs NGINX
Puisque nous avons mentionné qu'APISIX est développé sur la base de NGINX, vous pourriez demander : quelle est la différence entre APISIX et NGINX ?
La première chose à noter est que la comparaison entre APISIX et NGINX n'est pas une comparaison directe. Après tout, NGINX est un proxy léger, et APISIX se concentre sur la maturation des fonctionnalités du produit. De plus, il a plus de fonctionnalités car APISIX est redéveloppé sur la base de NGINX.
Si vous utilisez NGINX comme passerelle, les deux avantages suivants d'APISIX vous donneront une impression plus profonde.
Configuration plus flexible
Comparé aux fichiers de configuration de NGINX, APISIX offre diverses façons de configurer. Par exemple :
- Vous pouvez configurer APISIX via l'API HTTP. La configuration sera écrite dans etcd, puis synchronisée sur chaque nœud par etcd ;
- Vous pouvez le faire avec APISIX Dashboard. Dans APISIX Dashboard, la visualisation graphique vous aidera à configurer plus clairement ;
- Si vous ne voulez pas utiliser de méthodes de stockage avec état comme etcd, vous pouvez utiliser des fichiers statiques comme K8s. APISIX prend également en charge l'obtention de configurations individuelles à partir de fichiers YAML locaux ;
- Si vous déployez APISIX dans K8s, vous pouvez utiliser le contrôleur APISIX Ingress pour obtenir la configuration émise par CRD ;
- Si vous déployez APISIX comme plan de données d'Istio, vous pouvez également obtenir la configuration émise par Istio en identifiant xDS.
Meilleure extensibilité
Bien que NGINX ait également introduit NJS pour obtenir un contrôle dynamique, il n'est pas aussi idéal que l'extensibilité d'APISIX.
Comme APISIX peut être étendu avec LuaJIT, il prend également en charge le Plugin Runner hors processus pour exécuter des plugins externes écrits dans des langages tels que Go, Java, Python, Node.js, etc.
De plus, à partir d'APISIX 2.11, vous pouvez exécuter le plugin Wasm. Avec cette fonction, vous pouvez écrire des plugins dans APISIX en Rust, TinyGo et d'autres langages, puis les compiler en code Wasm pour les exécuter sur APISIX.
Configurer des plugins Wasm et Lua dans APISIX montre presque aucune différence fonctionnelle. En conséquence, il peut atteindre des performances similaires à l'implémentation native de Lua et atteindre l'efficacité de développement des langages de haut niveau.
Quels sont les avantages clés d'Apache APISIX
Les avantages décrits ci-dessus sont assez bons, mais ils ne sont pas les avantages les plus critiques d'APISIX. Le plus grand avantage d'APISIX est son réseau d'écosystème entrelacé avec de nombreux projets.
- Au niveau de l'authentification, APISIX prend en charge des protocoles tels que OIDC et LDAP. En même temps, il peut être intégré à plusieurs services ou frameworks d'authentification, tels que Keycloak, Casdoor, Casbin, OPA, etc.
- Au niveau de l'observabilité, APISIX prend en charge la connexion avec plusieurs outils de journalisation, tels que Clickhouse, Datadog, Splunk, Apache Kafka, Apache RocketMQ, etc. Il peut également exposer des métriques riches via Prometheus pour prendre en charge plusieurs systèmes de traçage, tels que OpenTracing, OpenTelemetry, et Apache Skywalking.
- Au niveau de la découverte de services, APISIX prend non seulement en charge l'obtention d'adresses en amont depuis Nacos, Eureka, Consul et Zookeeper, mais aussi depuis DNS (que ce soit via des enregistrements A/AAAA ou SRV). De plus, si vous utilisez APISIX comme contrôleur K8s Ingress, vous pouvez obtenir la configuration correspondante à partir de la ressource Ingress (APISIX prend en charge la spécification de l'API Gateway de K8s).
L'APISIX actuel est encore en phase de développement rapide. Avec le temps, APISIX sera intégré à de plus en plus de projets, ouvrant plus de possibilités de coopération et simplifiant grandement le travail d'intégration avec les systèmes existants.
Supposons que le service que vous souhaitez connecter ne soit pas dans l'écosystème de plugins d'APISIX. Dans ce cas, vous pouvez directement utiliser les plugins existants pour un développement personnalisé, atteignant des fonctions plus spécifiques à votre entreprise.
Quelle passerelle API devriez-vous choisir
Bien sûr, pour choisir une passerelle appropriée, vous devez également considérer votre situation commerciale réelle.
Si vous utilisez déjà NGINX comme proxy devant des applications métier, et qu'une certaine logique est placée sur NGINX, alors APISIX sera votre meilleur choix. Comme APISIX est développé sur la base de NGINX, vous pouvez migrer en douceur NGINX vers APISIX en fonction de vos besoins.
Si vous n'avez jamais utilisé de passerelle et que vous souhaitez choisir un projet de passerelle API open source approprié en fonction de la situation de votre équipe, alors vous devez vous concentrer sur les aspects suivants :
- Si la fréquence des mises à jour est suffisamment bonne. Vous pouvez choisir un projet de passerelle API bien entretenu en observant l'activité de chaque projet, car personne ne veut choisir un projet qui décline. Vous pouvez avoir une idée de l'activité du projet grâce au graphique Contributor Over Time.
- Si les fonctions du projet sont complètes. Si la passerelle sélectionnée ne peut pas répondre aux besoins commerciaux actuels et futurs de l'équipe, et parce que le projet ajoute au travail de développement (comme la gestion de la configuration, la connexion avec les services internes), veuillez considérer soigneusement.
- Si certaines des métriques techniques complexes du projet fonctionnent bien, par exemple, si le QPS, la latence et l'utilisation de la mémoire répondent aux exigences commerciales. En général, il est difficile de faire une optimisation révolutionnaire d'une passerelle. Par conséquent, si une passerelle ne peut pas répondre à ces métriques complexes, il sera difficile de faire des percées, peu importe comment elle est itérée plus tard.
- Si l'équipe dispose de suffisamment de main-d'œuvre et de temps pour apprendre et maintenir la passerelle API. Après tout, la prise de décision technique n'est pas une activité purement technique.
Bien sûr, si vous avez utilisé d'autres passerelles API, mais que la passerelle ne peut pas répondre au scénario commercial actuel, alors vous pouvez utiliser Apache APISIX comme l'une de vos options.
Comment migrer de Nginx à Apache APISIX
Vous êtes sage si vous lisez ceci et décidez de remplacer votre NGINX existant par APISIX !
Mais avant votre migration, vous devez revoir certaines des fonctionnalités du produit que vous avez ou utilisez. Généralement, ces fonctionnalités peuvent être divisées en trois catégories :
- Directement remplaçables. APISIX permet aux utilisateurs d'utiliser directement la configuration de NGINX, donc la plupart des configurations globales de NGINX peuvent être réutilisées par APISIX. Quant à la configuration au niveau de l'application, elle peut être remplacée par les routes APISIX ;
- Nécessite des ajustements, tels que des changements dans les métriques ;
- Nécessite un développement supplémentaire
Après avoir terminé le développement requis, vous remplaceriez progressivement NGINX par APISIX dans des scénarios commerciaux réels. Pendant le processus de migration en douceur, vous devez considérer les trois questions suivantes :
- Comment rediriger les requêtes des clients vers APISIX ?
- Comment mettre la configuration équivalente dans APISIX et NGINX ?
- Comment gérer les métriques exposées par APISIX et NGINX ?
Vous devez considérer les trois questions ci-dessus et votre environnement d'application réel. Enfin, n'oubliez pas de préparer à l'avance le "plan de retour en arrière pour les bugs".
À travers cet article, je crois que vous avez compris la puissance d'Apache APISIX. Essayons d'utiliser Apache APISIX comme votre passerelle API !