¿Por qué necesitas Apache APISIX al usar Amazon Lambda?

Xiaolan Cheng

December 9, 2022

Ecosystem

Serverless y Amazon Lambda

¿Qué es Serverless?

Serverless computing, o simplemente serverless, es una tendencia popular en el mercado actual de software. Cada vez más empresas están migrando sus operaciones desde una arquitectura tradicional orientada a servidores a una arquitectura serverless más rápida y rentable.

La arquitectura serverless es una forma de construir y ejecutar aplicaciones sin gestionar infraestructura. Despliega la infraestructura necesaria en proveedores de la nube o en alguna plataforma serverless autogestionada. Esto permite que los ingenieros se centren en la lógica de negocio de la aplicación sin dedicar mucho esfuerzo a la construcción, gestión y escalado de la infraestructura. Los tres grandes proveedores de la nube (Amazon Web Services, Microsoft Azure y Google Cloud) muestran un gran interés en ofrecer los mejores servicios serverless. Por ejemplo, Amazon Lambda es el servicio principal de computación serverless para AWS (Amazon Web Services).

Como se muestra en la imagen a continuación, a diferencia del método de despliegue tradicional, al usar Amazon Lambda, solo necesitas subir el archivo fuente, seleccionar el entorno de ejecución y ejecutarlo. Luego puedes obtener el resultado de la operación, liberándote de los pasos de subida y compilación en un servidor. En este proceso, el despliegue del servidor, la instalación del entorno de ejecución y la compilación son gestionados y ejecutados por la plataforma de computación serverless de Amazon. Los ingenieros solo necesitan mantener su código fuente y la configuración relevante del entorno de ejecución.

La tecnología relacionada con esto es BaaS (Backend as a Service), lo que significa que ya no escribimos ni gestionamos componentes del lado del servidor y externalizamos completamente todas las partes de la aplicación. Serverless es un nuevo entorno de alojamiento en el que el código se ejecuta.

Diagrama de Arquitectura

¿Por qué necesitamos Serverless?

Serverless tiene varias ventajas:

  • Para los desarrolladores, serverless es más amigable. Puede abstraer los detalles de la gestión del servidor, permitiendo que los ingenieros se centren en el código de negocio en sí.
  • En términos de costos, serverless funciona con un método de pago por uso.
  • En términos de rendimiento, puede escalar automáticamente según el tráfico de solicitudes.
  • También puede optimizar la ejecución del código y el tiempo de respuesta ajustando la cantidad de memoria asignada a la función.

¿Por qué necesitamos un API Gateway al usar Serverless?

Serverless también tiene sus debilidades:

  • La URL de la función está codificada en la aplicación.
  • Lógica de autorización y autenticación engorrosa.
  • Alta dependencia del proveedor de la nube: si el proveedor de la nube cae, el servicio también cae.
  • Diferentes proveedores de la nube tienen esquemas muy diferentes sin estándares específicos, lo que hace que migrar de uno a otro sea costoso.

Los API Gateways pueden resolver estos problemas de manera inherente. Combinados, serverless puede convertirse en una arquitectura robusta. La imagen a continuación describe cómo ensamblar rápidamente un servicio web con los servicios serverless de Amazon. El API gateway es vital para proporcionar autorización, definición de rutas y solicitudes de proxy. Tomando Apache APISIX como ejemplo, ofrece soporte serverless para AWS y Azure. Puedes definir una ruta para habilitar un plugin serverless en lugar de codificar las URLs de las funciones en las aplicaciones. Con la flexibilidad de actualizar en caliente las URIs de las funciones, actualizar a diferentes proveedores de servicios FaaS (Function as a Service) se vuelve fácil. Además, este enfoque alivia el dolor de la engorrosa autorización y autenticación.

Ensamblando un Servicio Web con servicios Serverless de Amazon

Apache APISIX

Apache APISIX es una puerta de enlace API nativa de la nube bajo la Apache Software Foundation (ASF). Siendo dinámico, en tiempo real y de alto rendimiento, APISIX proporciona características como balanceo de carga, upstream dinámico, lanzamiento canario, corte de circuito, autenticación y observabilidad. Podemos usar Apache APISIX para manejar el tráfico tradicional norte-sur y este-oeste entre servicios. Al mismo tiempo, también puede usarse como un controlador de entrada (Ingress Controller) en K8s. APISIX expande su ecosistema a través de plugins integrados, cubriendo varios escenarios de uso de puertas de enlace API, como autenticación, seguridad, observabilidad, gestión de tráfico, acceso multi-protocolo, etc. Por supuesto, también incluye muchos plugins relacionados con serverless.

Plugin aws-lambda

El plugin aws-lambda integra AWS Lambda con APISIX como un upstream dinámico para redirigir todas las solicitudes de un URI específico a la nube de AWS. Cuando está habilitado, el plugin termina la solicitud en curso del URI configurado e inicia una nueva solicitud a la URI de la puerta de enlace de AWS Lambda en nombre del cliente. Esta nueva solicitud lleva los detalles de autorización previamente configurados, incluyendo encabezados de solicitud, cuerpo y parámetros (los tres pasados desde la solicitud original). Devuelve la respuesta con encabezados, un código de estado y el cuerpo al cliente que inició la solicitud con APISIX. Este plugin soporta autorización mediante clave API de AWS y secretos de AWS IAM.

Consulta APISIX o este blog para más información.

Plugins relacionados con Serverless en Apache APISIX

Además de Amazon Lambda, Apache APISIX también soporta integración con ecosistemas relacionados con serverless como Azure Function, Lua function y Apache OpenWhisk, y proporciona los plugins serverless correspondientes.

Tabla 1 Plugins relacionados con Serverless en Apache APISIX

Nombre del PluginDescripción
serverlessLos usuarios pueden cargar scripts Lua personalizados a través del plugin serverless y especificar la fase de ejecución del código según la configuración. Por ejemplo, realizar control de acceso en las solicitudes en la fase de acceso, modificar el encabezado de respuesta o el cuerpo de respuesta en las fases de filtro de encabezado y filtro de cuerpo, imprimir logs personalizados en la fase de log, etc. Además, dado que el plugin serverless se recarga en caliente, las modificaciones pueden tener efecto inmediato sin reiniciar Apache APISIX.
azure-functionsSe utiliza para integrar APISIX con Azure Serverless Function como un upstream dinámico para redirigir todas las solicitudes de un URI específico a la nube de Microsoft Azure. Cuando está habilitado, el plugin azure-functions termina la solicitud en curso al URI configurado e inicia una nueva solicitud a Azure Functions en nombre del cliente. La nueva solicitud lleva los detalles de autorización previamente configurados, incluyendo encabezado de solicitud, cuerpo y parámetros (los tres pasados desde la solicitud original). Luego, devuelve la respuesta con encabezados, código de estado y cuerpo al cliente que inició la solicitud con APISIX.
openwhiskSe utiliza para integrar APISIX con la plataforma serverless distribuida de código abierto Apache OpenWhisk. Cuando está habilitado, el plugin termina la solicitud en curso al URI configurado e inicia una nueva solicitud al punto final del API Host de OpenWhisk en nombre del cliente, y el plugin openwhisk devuelve la información de respuesta al cliente.
openfunctionSe utiliza para integrar APISIX con la plataforma serverless distribuida de código abierto CNCF OpenFunction como un upstream dinámico. Cuando está habilitado, el plugin termina la solicitud en curso para el URI configurado e inicia una nueva solicitud a la función de OpenFunction en nombre del cliente, y luego el plugin openfunction devuelve la información de respuesta al cliente.

La relación entre Apache APISIX y productos relacionados con Serverless

Resumen

En los últimos años, con la aparición de la arquitectura de microservicios, todo se ha estado migrando a la nube, y muchos proveedores de servicios en la nube también están lanzando productos relacionados con serverless. El desarrollo basado en serverless se ha convertido en un modelo de desarrollo muy conveniente. Manteniéndose al día con las tendencias de la nube nativa, APISIX soporta la computación serverless proporcionando plugins como serverless, azure-functions, openwhisk y openfunction.

Si deseas aprender más sobre la puerta de enlace API y sus características serverless, contáctanos en https://api7.ai/contact.

Tags: