Aprovecha Amazon para el ecosistema y crecimiento de Apache APISIX
October 26, 2022
El autor Chao Zhang es miembro del PMC de Apache APISIX y experto técnico en API7.ai. Es el líder de producto de API7 Cloud y un entusiasta del código abierto. Este artículo recopila los contenidos compartidos por Chao en el "AWS Summit Greater China 2022".
Apache APISIX
En 2019, dos ingenieros de software alquilaron una pequeña oficina, crearon un proyecto de puerta de enlace API desde cero, lo liberaron como código abierto y lo donaron a la Apache Software Foundation. El proyecto, APISIX, se convirtió posteriormente en un proyecto de nivel superior de Apache y en el proyecto de puerta de enlace API de código abierto más popular, con una comunidad activa y un crecimiento rápido. Los dos ingenieros, que fundaron API7.ai, ahora están acompañados por muchas personas con ideas afines de todo el mundo, continuando contribuyendo a Apache APISIX, convirtiéndolo en una estrella brillante en el campo de la gestión de APIs.
Rendimiento Máximo y Extensiones Riches
APISIX ha tenido una alta demanda de rendimiento como puerta de enlace API nativa de la nube desde su nacimiento. Por lo tanto, cuando los usuarios utilizan Apache APISIX, sus expresiones más directas son su alto rendimiento y baja latencia. Además, en términos de características, APISIX tiene una amplia capacidad para manejar tráfico. Por ello, APISIX se utiliza a menudo para lanzamientos canarios y despliegues azul-verde. Además, APISIX también tiene una función de autenticación en cuanto a la seguridad de las APIs, y soporta diferentes métodos de autenticación, como JWT Auth, HMAC Auth, el protocolo Open ID Connect, etc.
Además, APISIX es amigable con los desarrolladores que trabajan en extensiones y desarrollos personalizados. Aunque APISIX en sí mismo soporta Lua, también puedes aprovechar APISIX Plugin Runner para usar lenguajes de alto nivel para extender APISIX, como Java, Go, Python y WebAssembly. Con el soporte de plugins multi-lenguaje, puedes realizar desarrollos personalizados sin incurrir en costos adicionales de aprendizaje.
Ecosistema Diverso y Comunidad de Código Abierto Activa
APISIX tiene muchas acciones relacionadas con el ecosistema y ha realizado desarrollos integrados basados en muchos tipos diferentes de proyectos. El repositorio principal de APISIX cuenta con más de 70 plugins diferentes.
Puedes lograr una integración y despliegue rápidos con plataformas como AWS utilizando estos plugins, y también pueden ayudar a reducir los costos adicionales de desarrollo de los usuarios durante su uso.
Mientras tanto, el número de contribuyentes mensuales de la comunidad de APISIX suele mantenerse en alrededor de 30, lo cual es un número muy activo. En los repositorios de Github de APISIX, también puedes ver a muchos usuarios de la comunidad ayudando a responder y resolver problemas, PRs y preguntas en la sección de Discusión. El ambiente positivo de la comunidad también ayuda a acelerar las actualizaciones del producto y enriquecer el ecosistema.
Por lo tanto, APISIX ha comenzado a tener clientes empresariales en todo el mundo, como Airwallex, Sina Weibo, European Factory Platform, NASA y Nayuki, entre otros. Además, gracias al uso y las contribuciones de cada vez más empresas, APISIX se ha vuelto más conocido públicamente. Actualmente, los contribuyentes de APISIX han superado los 300, y el número total de contribuyentes de los proyectos de código abierto relacionados con APISIX a lo largo del tiempo ha superado los 500.
Actualización de la Arquitectura
Volviendo al nivel de arquitectura del producto, la arquitectura de APISIX utiliza el modo de plano de datos + plano de control, como se muestra en la siguiente imagen.
El lado izquierdo es APISIX en sí, que también es el plano de datos de toda la puerta de enlace API, y principalmente maneja y procesa el tráfico de negocios de los usuarios. Además, APISIX proporciona funciones de gestión de servicios como limitación de tasa, balanceo de carga, etc. El lado derecho es el plano de control de la puerta de enlace API, que controla los componentes operativos de APISIX, incluyendo componentes de registro relacionados con la observabilidad para recopilar datos del estado operativo. Mientras tanto, con etcd y Admin API, APISIX puede ayudar a los usuarios a configurar reglas relacionadas para que APISIX opere según lo previsto.
Como se mencionó anteriormente, los plugins multi-lenguaje pueden integrarse en la arquitectura del plano de datos en el lado izquierdo. Por ejemplo, permite a los usuarios usar lenguajes de programación como C++ o Rust para extender APISIX a través del módulo wasm plugin
dentro de APISIX. Mientras tanto, el lado derecho muestra cómo extender APISIX basado en Plugin Runner utilizando múltiples lenguajes. Llamaría a un Plugin Runner específico del lenguaje (como Java Plugin Runner) para recibir solicitudes de APISIX a través de un socket de dominio Unix tradicional de manera RPC y ayudar a APISIX a manejar este tráfico.
Exploración de APISIX en Amazon
Actualmente, APISIX tiene algunas exploraciones en cuanto a productos y rendimiento basadas en Amazon.
Amazon Marketplace
Nota: API7.ai también se conoce como Zhiliu Technology
Si buscas APISIX en Amazon Marketplace, verás los resultados anteriores. Ha estado listado en la plataforma desde 2021. Usando el software anterior, podrías desplegar rápidamente APISIX en todas las instancias de Amazon EC2. Además, este software es gratuito, por lo que solo necesitas pagar las tarifas de las instancias EC2.
Este software ejecutaría una instancia de APISIX y una instancia de etcd en la instancia EC2. Por lo tanto, es más adecuado para usuarios existentes de Amazon cuando deseas usar APISIX directamente, o usar POC (Prueba de Concepto) para justificar si APISIX cumple con los requisitos de tus escenarios objetivo.
CDK APISIX
CDK es un marco de desarrollo de software de código abierto proporcionado por Amazon que tiene como objetivo ayudar a los usuarios a manipular la infraestructura en la nube mediante codificación.
El colaborador de la comunidad de APISIX, Pahud Hsieh, desarrolló cdk-apisix basado en CDK. Este proyecto permite a los usuarios crear instancias de APISIX a través de métodos de codificación y automatización. A diferencia de lo mencionado anteriormente, podría desplegar APISIX directamente en AWS Fargate. Por lo tanto, podríamos lograr un despliegue y destrucción automáticos en algunos escenarios que necesitan desencadenantes de eventos. Todo el proceso no requiere ninguna operación manual y se vuelve más receptivo.
Basado en la arquitectura anterior, el tráfico del cliente se dirigirá a APISIX a través de ELB en la nube, y APISIX realizará algún procesamiento básico posteriormente, como autenticación, limitación de tasa, etc. Luego, finalmente, el tráfico se enviará a las instancias de aplicación reales en el backend.
Al usar el método CDK, los usuarios pueden desplegar Apache APISIX utilizando sus lenguajes de codificación familiares, y puede aprovechar los atributos de estos lenguajes de alto nivel para desplegar APISIX en Amazon de manera más conveniente. Mientras tanto, en cuanto al uso, cuando logras una configuración de plantilla de despliegue, puede copiarse y personalizarse. Por lo tanto, puedes usar directamente esta configuración de plantilla siempre que la necesites en el futuro, facilitando así el proceso de despliegue.
Plugin Amazon-Lambda
Cuando usas Lambda o Serverless para desplegar aplicaciones, existe una forma extremadamente económica de ejecutar los proyectos relacionados, y puede lograr escalado instantáneo, así como otros escenarios comerciales. Al usar esta forma de desplegar aplicaciones, generalmente necesitamos un desencadenante de eventos para que la puerta de enlace API se convierta en un camino para el desencadenante de eventos.
Cuando el usuario configura el plugin amazon-lambda
de APISIX en el enrutamiento, puede redirigir todo el tráfico a las direcciones de función Lambda configuradas por el usuario. La función Lambda manejará estas solicitudes y enviará los resultados de vuelta al cliente a través de APISIX.
Este plugin también soporta identificación de Amazon IAM y Key Auth. En ese caso, la función Lambda desplegada en el backend podría integrarse mejor con APISIX sin sacrificar la seguridad.
Pruebas de Rendimiento Relacionadas
En mayo de 2022, los procesadores AWS Graviton 3 se lanzaron oficialmente. Gracias a la memoria DDR5, los procesadores Graviton3 ofrecen hasta un 25% mejor rendimiento de cómputo, hasta 2 veces más rendimiento de punto flotante y un 50% más de ancho de banda de memoria en comparación con los procesadores AWS Graviton2; las instancias basadas en Graviton3 usan hasta un 60% menos de energía para el mismo rendimiento que las instancias EC2 comparables.
Poco después del lanzamiento de los procesadores AWS Graviton3, APISIX realizó una prueba de regresión completa basada en los procesadores AWS Graviton3, lo que significa que los usuarios pueden usar APISIX con confianza en las instancias EC2 Graviton3. No habrá problemas de compatibilidad. Mientras tanto, también realizamos pruebas de rendimiento en la familia de procesadores AWS Graviton. Refiriéndonos a los siguientes dos escenarios, realizamos las pruebas de rendimiento en los procesadores AWS Graviton2 y AWS Graviton3.
- Upstream único: En este escenario solo usamos un upstream (sin ningún plugin), y principalmente probamos el rendimiento de APISIX bajo el modo de proxy puro de retorno al origen.
- Upstream único + múltiples plugins: En este escenario usamos un upstream y dos plugins, y principalmente probamos el rendimiento de APISIX cuando habilitamos
limit-count
yprometheus
, que son dos plugins principales que consumen rendimiento.
De las imágenes anteriores, podemos encontrar que APISIX tiene un rendimiento asombroso, independientemente de la estabilidad o la capacidad de manejo de tráfico. Los procesadores AWS Graviton3 ofrecen hasta un 76% mejor rendimiento en escenarios de cómputo intensivo en E/S como la puerta de enlace API y reducen hasta un 38% la latencia. Estos datos tienen un rendimiento aún mejor que los datos oficiales mencionados anteriormente proporcionados por AWS (25% de aumento de rendimiento).
En general, su rendimiento es notablemente sobresaliente al usar APISIX en Grafana 3. Basado en procesadores de alto rendimiento como AWS Graviton3, APISIX podría ayudar a aumentar la eficiencia y reducir los recursos y costos en los negocios reales.
¿Cómo aprovecha API7 Cloud Amazon para lograr un crecimiento rápido del producto?
Con el rápido crecimiento de Cloud Native, cada vez más empresas han trasladado sus negocios a la nube (generalmente eligen múltiples plataformas de nube pública). Por lo tanto, cómo gestionar y desplegar eficientemente las APIs en la nube se ha convertido en un problema urgente.
API7 Cloud es un servicio SaaS basado en APISIX y ayuda a los usuarios a conectar todos los productos SaaS desplegados en cualquier plataforma en la nube. API7 Cloud se lanzó por primera vez en marzo de 2022 y proporciona a los usuarios una función de gestión de API fácil de usar, métricas de observabilidad flexibles y ricas, y seguridad de API, lo que permite que la conexión de API sea más eficiente, segura y confiable.
Este producto cobra a los usuarios por el número de llamadas API, y actualmente soporta dos formas de desplegar el plano de datos. La primera es auto-hospedado, lo que significa que los usuarios preparan su infraestructura y despliegan APISIX en la infraestructura para que APISIX pueda comunicarse con API7 Cloud. La otra forma se llama semi-gestionado, también llamado semi-hospedado. Primero, los usuarios deben autorizar a API7 Cloud para gestionar su cuenta en la nube (como una cuenta de Amazon). Luego, pueden desplegar APISIX en toda su infraestructura bajo sus cuentas con un solo clic en el panel de configuración de API7 Cloud.
Actualmente, todos los componentes de API7 Cloud están alojados en AWS y utilizan servicios de AWS; la arquitectura del producto se muestra a continuación:
De la imagen anterior, el plano de datos con APISIX podría desplegarse en diferentes plataformas en la nube, e incluso podría desplegarse en la infraestructura o centro de datos del usuario. En el lado de API7 Cloud, principalmente proporciona atributos vitales como observabilidad, gestión básica de API y seguridad.
Al aprovechar los servicios de Amazon, API7 Cloud tiene un mejor rendimiento del producto.
En primer lugar, APISIX depende del servicio Amazon EKS. Como un nuevo producto SaaS, API7 Cloud se desplegó en K8s desde el principio. Por lo tanto, desplegamos todos los componentes en los clústeres EKS; así, podríamos usar algunas capacidades proporcionadas por la nube. Mientras tanto, cada usuario tendría diferentes componentes, y cualquier componente individual podría ejecutarse dentro del clúster. Por lo tanto, hicimos algún aislamiento de red utilizando el método de aislamiento de inquilinos desarrollado en NetworkPolicy, para asegurar que estos espacios de nombres de inquilinos no puedan acceder entre sí. En este servicio, también usamos APISIX Ingress Controller como la puerta de enlace para ejecutar sin problemas toda la operación.
APISIX Ingress Controller es una implementación del controlador Ingress, que permite a los usuarios convertir reglas configuradas en reglas de APISIX para que APISIX pueda manejar el tráfico real.
En segundo lugar, como el componente más crítico en el producto, API7 Cloud elige Amazon RDS (Postgre SQL) como la base de datos. Almacenamos los metadatos de los usuarios en RDS, como los datos de origen de la API y las acciones del usuario. Como un producto SaaS, necesitamos saber cómo un usuario usa nuestro producto y determinar si tenemos problemas con el diseño y las experiencias de los desarrolladores para determinar la dirección futura de nuestro producto.
También usamos el componente Amazon ElasticCache en API7 Cloud y elegimos Redis con modo maestro-esclavo. Redis se utiliza principalmente para almacenar el estado de las instancias del plano de datos, que son los datos de estado enviados periódicamente a Cloud cuando APISIX se conecta con API7 Cloud. Dado que los datos no son sensibles ni vitales, y el plano de datos necesita comunicarse frecuentemente con el plano de control, no elegimos una base de datos relacional aquí.
Además de eso, este componente tiene otro uso importante: podría considerarse una cola de mensajes. Redis 5.0 introduce la estructura de datos Stream, por lo que podríamos usarla como una cola de mensajes súper ligera para ayudar a los usuarios a crear, manipular y destruir datos más rápidamente.
Conclusión
Este artículo comparte las experiencias de los usuarios desde la perspectiva de los proyectos relacionados con APISIX. Con el apoyo de los servicios y el ecosistema de Amazon, APISIX exploró aún más su ecosistema. Deseamos que APISIX y Amazon puedan tener más integraciones interesantes y juntos desarrollar un mejor ecosistema.