Pourquoi avez-vous besoin d'Apache APISIX lorsque vous utilisez Amazon Lambda
Xiaolan Cheng
December 9, 2022
Serverless et Amazon Lambda
Qu'est-ce que le Serverless ?
Le calcul serverless, ou simplement serverless, est une tendance populaire sur le marché actuel des logiciels. De plus en plus d'entreprises migrent leurs opérations d'une architecture traditionnelle orientée serveur vers une architecture serverless plus rapide et rentable.
L'architecture serverless est une manière de construire et d'exécuter des applications sans gérer d'infrastructure. Elle déploie l'infrastructure nécessaire chez les fournisseurs de cloud ou sur une plateforme serverless auto-déployée pour la gestion. Ainsi, les ingénieurs peuvent se concentrer sur la logique métier de l'application sans consacrer beaucoup d'efforts à la construction, à la gestion et à la mise à l'échelle de l'infrastructure. Les trois grands fournisseurs de cloud (Amazon Web Services, Microsoft Azure et Google Cloud) montrent un intérêt immense pour offrir les meilleurs services serverless. Par exemple, Amazon Lambda est le service de calcul serverless principal pour AWS (Amazon Web Services).
Comme le montre l'image ci-dessous, contrairement à la méthode de déploiement traditionnelle, avec Amazon Lambda, vous n'avez qu'à télécharger le fichier source, choisir l'environnement d'exécution et l'exécuter. Ensuite, vous obtenez le résultat de l'opération. Vous libérant ainsi des étapes de téléchargement et de compilation sur un serveur. Dans ce processus, le déploiement du serveur, l'installation du runtime et la compilation sont tous gérés et exécutés par la plateforme de calcul serverless d'Amazon. Les ingénieurs n'ont qu'à maintenir leur code source et la configuration pertinente de l'environnement d'exécution.
La technologie associée à cela est le BaaS (Backend as a Service), ce qui signifie que nous n'écrivons et ne gérons plus les composants côté serveur et externalisons complètement toutes les parties de l'application. Le serverless est un nouvel environnement d'hébergement dans lequel le code s'exécute.
Pourquoi avons-nous besoin du Serverless ?
Le serverless présente plusieurs avantages :
- Pour les développeurs, le serverless est plus convivial. Il peut abstraire les détails de la gestion des serveurs, permettant aux ingénieurs de se concentrer sur le code métier lui-même.
- En termes de coût, le serverless fonctionne selon une méthode de paiement à l'usage.
- En termes de performance, il peut s'adapter automatiquement en fonction du trafic des requêtes.
- Il peut également optimiser l'exécution du code et le temps de réponse en ajustant la quantité de mémoire allouée à la fonction.
Pourquoi avons-nous besoin d'une API Gateway lors de l'utilisation du Serverless ?
Le serverless a aussi ses faiblesses :
- L'URL de la fonction est codée en dur dans l'application.
- Une logique d'autorisation et d'authentification fastidieuse.
- Une forte dépendance au fournisseur de cloud : si le fournisseur de cloud est hors service, le service l'est aussi.
- Les différents fournisseurs de cloud ont des schémas très différents sans normes spécifiques, ce qui rend la migration de l'un à l'autre généralement coûteuse.
Les API Gateways peuvent résoudre ces problèmes de manière inhérente. Combinés ensemble, le serverless peut devenir une architecture robuste. L'image ci-dessous décrit comment assembler rapidement un service Web simple avec les services serverless d'Amazon. L'API gateway est essentielle pour fournir l'autorisation, la définition des routes et les requêtes proxy. Prenons Apache APISIX comme exemple, il offre un support serverless pour AWS et Azure. Vous pouvez définir une route pour activer un plugin serverless au lieu de coder en dur les URL des fonctions dans les applications. Avec la flexibilité de la mise à jour à chaud des URI de fonction, la mise à jour vers différents fournisseurs de services FaaS (Function as a Service) devient facile. De plus, cette approche soulage la douleur de la logique fastidieuse d'autorisation et d'authentification.
Apache APISIX
Apache APISIX est une API gateway cloud-native sous la Apache Software Foundation (ASF). Étant dynamique, en temps réel et haute performance, APISIX fournit des fonctionnalités comme l'équilibrage de charge, l'amont dynamique, la publication canari, la rupture de circuit, l'authentification et l'observabilité. Nous pouvons utiliser Apache APISIX pour gérer le trafic traditionnel nord-sud et est-ouest entre les services. En même temps, il peut également être utilisé comme un contrôleur K8s Ingress. APISIX étend son écosystème grâce à des plugins intégrés, couvrant divers scénarios d'utilisation des API gateways, tels que l'authentification, la sécurité, l'observabilité, la gestion du trafic, l'accès multi-protocole, etc. Bien sûr, il inclut également de nombreux plugins liés au serverless.
Plugin aws-lambda
Le plugin aws-lambda intègre AWS Lambda avec APISIX comme un amont dynamique pour rediriger toutes les requêtes pour un URI particulier vers le cloud AWS. Lorsqu'il est activé, le plugin termine la requête en cours pour l'URI configuré et initie une nouvelle requête vers l'URI de la passerelle AWS Lambda au nom du client. Cette nouvelle requête transporte les détails d'autorisation précédemment configurés, y compris les en-têtes de requête, le corps et les paramètres (tous les trois passés de la requête originale). Il renvoie la réponse avec les en-têtes, un code d'état et le corps au client qui a initié la requête avec APISIX. Ce plugin prend en charge l'autorisation via une clé API AWS et des secrets AWS IAM.
Consultez APISIX ou ce blog pour plus d'informations.
Plugins liés au Serverless dans Apache APISIX
En plus d'Amazon Lambda, Apache APISIX prend également en charge l'intégration avec des écosystèmes liés au serverless tels que Azure Function, Lua function et Apache OpenWhisk, et fournit les plugins serverless correspondants.
Tableau 1 Plugins liés au Serverless dans Apache APISIX
Nom du Plugin | Description |
---|---|
serverless | Les utilisateurs peuvent télécharger des scripts Lua personnalisés via le plugin serverless et spécifier la phase d'exécution du code selon la configuration. Par exemple, effectuer un contrôle d'accès sur les requêtes dans la phase d'accès, modifier l'en-tête de réponse ou le corps de réponse dans les phases de filtre d'en-tête et de filtre de corps, imprimer des logs personnalisés dans la phase de log, etc. De plus, comme le plugin serverless est rechargé à chaud, les modifications peuvent prendre effet immédiatement sans redémarrer Apache APISIX. |
azure-functions | Utilisé pour intégrer APISIX avec Azure Serverless Function comme un amont dynamique pour rediriger toutes les requêtes pour un URI particulier vers le cloud Microsoft Azure. Lorsqu'il est activé, le plugin azure-functions termine la requête en cours pour l'URI configuré et initie une nouvelle requête vers Azure Functions au nom du client. La nouvelle requête transporte les détails d'autorisation précédemment configurés, y compris l'en-tête de requête, le corps et les paramètres (tous les trois passés de la requête originale). Ensuite, il renvoie la réponse avec les en-têtes, le code d'état et le corps au client qui a initié la requête avec APISIX. |
openwhisk | Utilisé pour intégrer APISIX avec la plateforme serverless open source Apache OpenWhisk. Lorsqu'il est activé, le plugin termine la requête en cours pour l'URI configuré et initie une nouvelle requête vers le point de terminaison API Host d'OpenWhisk au nom du client, et le plugin openwhisk renvoie les informations de réponse au client. |
openfunction | Utilisé pour intégrer APISIX avec la plateforme serverless open source CNCF OpenFunction comme un amont dynamique. Lorsqu'il est activé, le plugin termine la requête en cours pour l'URI configuré et initie une nouvelle requête vers la fonction OpenFunction au nom du client, puis le plugin openfunction renvoie les informations de réponse au client. |
Résumé
Ces dernières années, avec l'émergence de l'architecture microservices, tout migre vers le cloud, et de nombreux fournisseurs de services cloud lancent également des produits liés au serverless. Le développement basé sur le serverless est devenu un modèle de développement très pratique. Suivant les tendances cloud-native, APISIX prend en charge le calcul serverless en fournissant les plugins serverless, azure-functions, openwhisk et openfunction.
Si vous souhaitez en savoir plus sur l'API gateway et ses fonctionnalités serverless, contactez-nous à https://api7.ai/contact.