Alternativa a NGINX que facilita tu vida: Apache APISIX

Zexuan Luo

Zexuan Luo

September 15, 2022

Products

La API es una parte esencial del mundo digital, y la puerta de enlace de API (API gateway) asume la gran responsabilidad de proteger su seguridad y estabilidad como la primera barrera de la API. Muchos ingenieros de software y equipos utilizaron NGINX antes, pero se sintieron frustrados por los cuellos de botella y las limitaciones de NGINX. ¿Existe una alternativa mejor?

Una excelente alternativa a NGINX es Apache APISIX, pero ¿qué es Apache APISIX?

¿Qué es Apache APISIX?

Nube de palabras de APISIX

Apache APISIX es una puerta de enlace de API de alto rendimiento, dinámica y de tráfico completo. Las cuatro características destacadas de Apache APISIX son:

  1. La propiedad Apache: APISIX es de código abierto y también es un proyecto de primer nivel de la Apache Software Foundation. No es posible modificar la licencia de código abierto a mitad de camino, como lo hicieron ElasticSearch y MongoDB. Debido a que APISIX pertenece a la Apache Software Foundation (ASF), ya no es un proyecto de una empresa o un individuo.
  2. Alto rendimiento: APISIX está desarrollado basado en OpenResty (una distribución de NGINX), por lo que APISIX también hereda el poder de NGINX.
  3. Dinámico: Si NGINX proporciona una arquitectura subyacente robusta, OpenResty agrega más posibilidades a NGINX al permitir el uso de Lua para controlar el comportamiento de NGINX. Y APISIX, con su flexibilidad y fuerte conexión con otros sistemas, se convierte en una puerta de enlace de API completamente dinámica. Arquitectura de software de flujo
  4. En tiempo real: APISIX almacena la configuración en etcd. Esta ventaja es que los cambios de configuración se pueden monitorear y obtener en tiempo real a través de la API RESTful de etcd, ya que etcd es una base de datos KV distribuida, que también es utilizada por Kubernetes para almacenar la configuración. NGINX utiliza archivos estáticos para almacenar la configuración, y si la configuración se actualiza, el tiempo para recargar NGINX será muy largo.

Apache APISIX vs NGINX

Dado que mencionamos que APISIX está desarrollado basado en NGINX, podrías preguntarte: ¿cuál es la diferencia entre APISIX y NGINX?

Lo primero que hay que destacar es que la comparación entre APISIX y NGINX no es una comparación directa. Después de todo, NGINX es un proxy ligero, y APISIX se enfoca en hacer que las funciones del producto sean más maduras. Además, tiene más características porque APISIX está rediseñado basado en NGINX.

Si estás utilizando NGINX como puerta de enlace, las siguientes dos ventajas de APISIX te darán una sensación más profunda.

Configuración más flexible

En comparación con los archivos de configuración de NGINX, APISIX ofrece varias formas de configurar. Por ejemplo:

  • Puedes configurar APISIX a través de la API HTTP. La configuración se escribirá en etcd y luego se sincronizará con cada nodo mediante etcd;
  • Puedes hacerlo con el Panel de Control de APISIX. En el Panel de Control de APISIX, la visualización gráfica te ayudará a configurar de manera más clara;
  • Si no deseas utilizar métodos de almacenamiento con estado como etcd, puedes usar archivos estáticos como K8s. APISIX también admite obtener configuraciones individuales desde archivos YAML locales;
  • Si despliegas APISIX en K8s, puedes usar el Controlador de Ingress de APISIX para obtener la configuración emitida por CRD;
  • Si despliegas APISIX como el plano de datos de Istio, también puedes obtener la configuración emitida por Istio identificando xDS.

Mejor extensibilidad

Aunque NGINX también introdujo NJS para lograr control dinámico, no es tan ideal como la extensibilidad de APISIX.

Como APISIX puede extenderse con LuaJIT, también admite el Plugin Runner fuera de proceso para ejecutar plugins externos escritos en lenguajes como Go, Java, Python, Node.js, etc.

Arquitectura de múltiples lenguajes

Además, a partir de APISIX 2.11, puedes ejecutar el plugin Wasm. Con esta función, puedes escribir plugins en APISIX en Rust, TinyGo y otros lenguajes, y luego compilarlos en código Wasm para ejecutarse en APISIX.

Configurar plugins Wasm y Lua en APISIX muestra casi ninguna diferencia en funcionalidad. Como resultado, puede lograr un rendimiento similar a la implementación nativa de Lua y alcanzar la eficiencia de desarrollo de lenguajes de alto nivel.

¿Cuáles son los beneficios clave de Apache APISIX?

Las ventajas descritas anteriormente son bastante buenas, pero no son las más críticas de APISIX. La mayor ventaja de APISIX es su ecosistema interconectado con muchos proyectos.

Ecosistema de APISIX

  • A nivel de autenticación, APISIX admite protocolos como OIDC y LDAP. Al mismo tiempo, puede integrarse con múltiples servicios o frameworks de autenticación, como Keycloak, Casdoor, Casbin, OPA, etc.
  • A nivel de observabilidad, APISIX admite la conexión con múltiples herramientas de registro, como Clickhouse, Datadog, Splunk, Apache Kafka, Apache RocketMQ, etc. También puede exponer métricas ricas a través de Prometheus para admitir múltiples sistemas de trazado, como OpenTracing, OpenTelemetry y Apache Skywalking.
  • A nivel de descubrimiento de servicios, APISIX no solo admite obtener direcciones de upstream desde Nacos, Eureka, Consul y Zookeeper, sino también desde DNS (ya sea a través de registros A/AAAA o SRV). Además, si usas APISIX como un Controlador de Ingress de K8s, puedes obtener la configuración correspondiente desde el recurso Ingress (APISIX admite la especificación de la API de Gateway de K8s).

El APISIX actual todavía está en la etapa de desarrollo rápido. Con el tiempo, APISIX se integrará con más y más proyectos, abriendo más posibilidades de cooperación y simplificando enormemente el trabajo de integración con sistemas existentes.

Si el servicio que deseas conectar no está en el ecosistema de plugins de APISIX, puedes usar directamente los plugins existentes para desarrollo personalizado, logrando funciones más específicas para tu negocio.

¿Qué puerta de enlace de API deberías elegir?

Por supuesto, para elegir una puerta de enlace adecuada, también debes considerar tu situación comercial real.

Si ya estás utilizando NGINX como un proxy frente a aplicaciones comerciales, y parte de la lógica se coloca en NGINX, entonces APISIX será tu mejor opción. Como APISIX está desarrollado basado en NGINX, puedes migrar sin problemas de NGINX a APISIX según tus necesidades.

Si nunca has usado una puerta de enlace y deseas elegir un proyecto de puerta de enlace de API de código abierto adecuado según la situación de tu equipo, entonces debes enfocarte en los siguientes aspectos:

  1. Si la frecuencia de actualizaciones es lo suficientemente buena. Puedes elegir un proyecto de API Gateway bien mantenido observando la actividad de cada proyecto, porque nadie quiere elegir un proyecto que decaiga. Puedes obtener una idea de la actividad del proyecto a través del gráfico de Contribuidores a lo largo del tiempo.
  2. Si las funciones del proyecto son completas. Si la puerta de enlace seleccionada no puede satisfacer las necesidades comerciales actuales y futuras del equipo, y porque el proyecto agrega trabajo de desarrollo (como la gestión de configuración, la conexión con servicios internos), considera cuidadosamente.
  3. Si algunos de los indicadores técnicos complejos del proyecto funcionan bien, por ejemplo, si el QPS, la latencia y el uso de memoria cumplen con los requisitos comerciales. En general, es difícil hacer una optimización disruptiva de una puerta de enlace. Por lo tanto, si una puerta de enlace no puede cumplir con estos indicadores complejos, será difícil lograr avances sin importar cómo se itere más adelante.
  4. Si hay suficiente personal y tiempo en el equipo para aprender y mantener la API Gateway. Después de todo, la toma de decisiones técnicas no es una actividad puramente técnica.

Por supuesto, si has usado otras puertas de enlace de API, pero la puerta de enlace no puede satisfacer el escenario comercial actual, entonces puedes usar Apache APISIX como una de tus opciones.

Cómo migrar de NGINX a Apache APISIX

¡Eres sabio si has llegado hasta aquí y decides reemplazar tu NGINX existente con APISIX!

Pero antes de migrar, necesitas repasar algunas de las características del producto que tienes o estás utilizando. Por lo general, estas características se pueden dividir en tres categorías:

  1. Reemplazo directo: APISIX permite a los usuarios usar la configuración de NGINX directamente, por lo que la mayoría de la configuración global de NGINX puede reutilizarse en APISIX. En cuanto a la configuración a nivel de aplicación, puede ser reemplazada por las Rutas de APISIX;
  2. Requiere ajustes, como cambios en las métricas;
  3. Requiere desarrollo adicional.

Después de completar el desarrollo necesario, gradualmente reemplazarías NGINX con APISIX en escenarios comerciales reales. Durante el proceso de migración sin problemas, debes considerar las siguientes tres preguntas:

  1. ¿Cómo redirigir las solicitudes del cliente a APISIX?
  2. ¿Cómo poner la configuración equivalente en APISIX y NGINX?
  3. ¿Cómo manejar las métricas expuestas tanto por APISIX como por NGINX?

Debes considerar las tres preguntas anteriores y tu entorno de aplicación real. Finalmente, no olvides preparar con anticipación el "plan de reversión en caso de errores".

A través de este artículo, creo que has entendido el poder de Apache APISIX. ¡Prueba usar Apache APISIX como tu puerta de enlace de API!

Tags: