¿Por qué elegirías Apache APISIX en lugar de NGINX o Kong?

API7.ai

July 30, 2022

Products

El gateway API es un componente importante de la infraestructura en la era de la nube nativa. Existen dos criterios comunes para evaluar un gateway API: cuán dinámico es y cuán madura es su capacidad de observabilidad. Muchas empresas solían usar Nginx o Kong como su gateway API, pero luego cambiaron a Apache APISIX. Como un gateway API diseñado para la era de la nube nativa, Apache APISIX resuelve muchos puntos críticos para las empresas en diversas dimensiones. Ahora te preguntarás, ¿por qué?

Limitaciones de NGINX y Kong

En la era de los servicios monolíticos, NGINX podía manejar la mayoría de los escenarios. Sin embargo, en la era de la nube nativa, NGINX tiene dos desventajas debido a su arquitectura:

  • NGINX no admite la gestión de clústeres. Casi todas las empresas tienen su propio sistema de gestión de configuración de NGINX. Aunque los sistemas son similares, no existe una solución unificada.
  • NGINX no admite la recarga en caliente de configuraciones. Si el usuario modifica la configuración de NGINX, será necesario recargar NGINX. Además, en Kubernetes, los servicios cambian con frecuencia. Por lo tanto, si se usa NGINX para manejar el tráfico, es necesario reiniciar el servicio con frecuencia, lo cual es inaceptable para las empresas.

Kong resuelve las desventajas de NGINX, pero introduce nuevas limitaciones:

  • Kong necesita depender de una base de datos PostgreSQL o Cassandra, lo que hace que la arquitectura de Kong sea muy pesada y genera una limitación de alta disponibilidad para la empresa. Si la base de datos falla, todo el gateway API falla.
  • El enrutamiento de Kong utiliza búsqueda por recorrido. Cuando hay más de mil rutas en el gateway, su rendimiento disminuye drásticamente.

APISIX resuelve todas estas limitaciones y se convierte en el mejor gateway API en la era de la nube nativa.

Ventajas de Apache APISIX

Arquitectura bien diseñada

En primer lugar, Apache APISIX tiene una arquitectura excelente. La nube nativa, como tendencia tecnológica actual, está cambiando la arquitectura técnica de las empresas tradicionales. Muchas aplicaciones están migrando a microservicios y contenedores. APISIX ha seguido esta tendencia tecnológica desde su creación:

image

Como se muestra en la figura anterior, a la izquierda y derecha están el Plano de Datos y el Plano de Control de APISIX:

  • Plano de Datos: Basado en la biblioteca de red de NGINX (sin usar el emparejamiento de rutas, la configuración estática y los módulos C de NGINX), utiliza Lua y NGINX para controlar dinámicamente el tráfico de solicitudes.
  • Plano de Control: Los administradores pueden operar etcd a través de la API RESTful integrada. Con la ayuda del mecanismo Watch de etcd, APISIX puede sincronizar la configuración en cada nodo en milisegundos.

Para actualizar datos, Kong utiliza el método de sondeo de base de datos; puede tomar de 5 a 10 segundos obtener la última configuración, mientras que APISIX logra lo mismo monitoreando los cambios de configuración en etcd, lo que permite controlar el tiempo en milisegundos.

Dado que tanto APISIX como etcd admiten implementaciones multi-instancia, no hay un punto único de falla.

Ecosistema rico

La siguiente figura muestra el mapa del ecosistema de APISIX. Desde esta figura, podemos ver que APISIX admite protocolos de capa 7, como HTTP(S), HTTP2, Dubbo, el protocolo IoT MQTT, entre otros. Además, APISIX admite protocolos de capa 4, como TCP/UDP.

La parte derecha de la figura incluye algunos servicios de código abierto o SaaS, como Apache SkyWalking, Prometheus, HashiCorp Vault, etc. En la parte inferior de la figura se encuentran los entornos de sistemas operativos más comunes, proveedores de nube y entornos de hardware. Como software de código abierto, APISIX también puede ejecutarse en servidores ARM64.

image

APISIX no solo admite muchos protocolos y sistemas operativos, sino que también admite plugins de programación en múltiples lenguajes. Cuando salió por primera vez, APISIX solo admitía el uso del lenguaje Lua para escribir plugins. En este caso, los desarrolladores necesitaban dominar la tecnología relacionada con Lua y NGINX. Sin embargo, Lua y NGINX son tecnologías relativamente nicho, conocidas por pocos desarrolladores. Por lo tanto, hemos habilitado el desarrollo de plugins en APISIX con múltiples lenguajes, y hemos admitido oficialmente lenguajes como Java, Golang, Node.js y Python.

image

Comunidad activa

La siguiente figura es la curva de crecimiento de contribuidores, donde el eje horizontal representa la línea de tiempo y el eje vertical representa el número total de contribuidores. Podemos ver que los dos proyectos, Apache APISIX y Kong, son relativamente más activos. Apache APISIX ha mantenido una excelente tasa de crecimiento desde el primer día y está creciendo rápidamente a un ritmo cercano al doble que Kong. Hasta julio de 2022, el número de contribuidores de APISIX ha superado a Kong, lo que muestra la popularidad de APISIX. Por supuesto, hay muchas otras formas de evaluar la actividad de un proyecto, como los problemas activos mensuales, el número total de PRs, etc. La buena noticia es que APISIX también es insuperable en estos aspectos.

image

Infraestructura de proxy unificada

En la siguiente figura, creo que ya has entendido el objetivo de APISIX: unificar la infraestructura de proxy.

image

Debido a que el núcleo de APISIX es un servicio de proxy de alto rendimiento, no está vinculado a ninguna propiedad de entorno. Por lo tanto, cuando evoluciona a productos como Ingress y Service Mesh, no es necesario cambiar la estructura interna de APISIX. A continuación, se te presentará paso a paso cómo APISIX admite estos escenarios.

Balanceo de carga y gateway API

El primero es para los escenarios tradicionales de balanceo de carga y gateway API. Debido a que APISIX está implementado basado en NGINX + LuaJIT, tiene características de alto rendimiento y seguridad, y admite la carga dinámica de certificados SSL, optimización del handshake SSL y otras funciones. En términos de balanceo de carga, APISIX también tiene un mejor desempeño. Cambiar de NGINX a APISIX no degradará el rendimiento, sino que mejorará la eficiencia de gestión gracias a características como la gestión unificada.

Gateway de microservicios

APISIX te permite escribir plugins de extensión en múltiples lenguajes, lo que puede resolver el principal problema que enfrentan los gateways API de microservicios este-oeste: cómo gestionar de manera unificada en entornos heterogéneos. APISIX también admite descubrimiento de servicios como Nacos, etcd y Eureka, y métodos estándar de DNS, lo que puede reemplazar completamente gateways API de microservicios como Zuul, Spring Cloud Gateway y Dubbo.

Kubernetes Ingress

Actualmente, el proyecto oficial de Kubernetes Ingress Controller de K8s está desarrollado principalmente basado en el archivo de configuración de NGINX, por lo que es ligeramente insuficiente en capacidad de enrutamiento y modo de carga, y tiene algunas limitaciones obvias. Por ejemplo, al agregar o modificar cualquier API, es necesario reiniciar el servicio para completar la actualización de la nueva configuración de NGINX. Reiniciar el servicio tiene un gran impacto en el tráfico en línea.

El APISIX Ingress Controller resuelve perfectamente todas las limitaciones mencionadas: admite la recarga en caliente completa. Al mismo tiempo, hereda todas las ventajas de APISIX y también admite CRD nativo de Kubernetes, lo que facilita la migración de los usuarios.

image

Service mesh

En los próximos cinco a diez años, la arquitectura de service mesh basada en el modelo de nube nativa comenzará a emerger. APISIX también ha comenzado a posicionarse en esta área con anticipación. Después de una investigación y análisis técnico exhaustivos, APISIX ha admitido el protocolo xDS. APISIX Mesh nació, y APISIX también tiene un lugar en el campo del service mesh.

image

Resumen

Han pasado tres años desde que Apache APISIX se lanzó como código abierto. La comunidad altamente activa y los estudios de casos han demostrado que APISIX es el gateway API perfecto en la era de la nube nativa. Al leer este artículo, creo que tienes una comprensión más completa de APISIX.

Si tienes alguna pregunta, puedes dejar un mensaje en el issue de GitHub; los contribuidores de la comunidad responderán rápidamente; por supuesto, también puedes unirte al canal de Slack de APISIX y a la lista de correo; consulta Únete a nosotros.

Tags: