APISIX potencia la red de un gran proveedor de servicios en la nube de CDN

Jing Yan

Jing Yan

January 31, 2023

Case Study

Visión general

Acerca de UPYUN

UPYUN, un proveedor líder de servicios en la nube para empresas en China, se especializa en soluciones de CDN (Content Delivery Network) basadas en escenarios. Con 10 centros de procesamiento de datos, más de 1000 nodos de CDN nacionales, cerca de 100 nodos de CDN globales, 40,000 servidores y 10TB de ancho de banda reservado, UPYUN ofrece soluciones seguras para diversos escenarios, manejando un volumen diario de solicitudes que supera los 150 mil millones.

Desafíos

  • UPYUN enfrentó desafíos al gestionar conexiones de tráfico con Kong, que funcionaba como su puerta de enlace para la red pública.

  • En cuanto al controlador de entrada, presentaba problemas para UPYUN con Ingress-Nginx, incluyendo dependencias complejas de componentes, baja portabilidad y capacidades semánticas débiles, lo que dificultaba el mantenimiento de la puerta de enlace.

Resultados

  • APISIX destaca en el manejo de tráfico, cumpliendo con los requisitos de respaldo y carga de tráfico a través de su capacidad de enrutamiento dinámico. UPYUN también ha mejorado la uniformidad de los componentes con la ayuda de APISIX, lo que ha resultado en una mayor eficiencia en el procesamiento de tráfico y registro.

  • Mediante el uso de plugins de APISIX, UPYUN ha logrado implementar con éxito la autenticación de identidad de empleados y la integración con Lark, mejorando así la funcionalidad de su puerta de enlace para la red pública.

  • APISIX ha avanzado en la monitorización y verificación de salud del sistema de UPYUN al soportar Prometheus y SkyWalking.

Antecedentes

Características del negocio de UPYUN

Las puertas de enlace son indispensables en el ecosistema empresarial de UPYUN. Pueden coordinar, optimizar y garantizar el funcionamiento fluido de varios servicios, proporcionando a UPYUN soluciones eficientes, seguras y estables. Por lo tanto, UPYUN ha estado trabajando en mejorar su arquitectura interna de puertas de enlace.

Escenarios comerciales de UPYUN

Internamente, UPYUN emplea APISIX como su puerta de enlace para la red pública y su controlador de entrada.

  • La puerta de enlace para la red pública se centra en procesar el tráfico de internet, sirviendo como la puerta de enlace para servicios externos.

  • El controlador de entrada se especializa en gestionar el acceso externo a servicios dentro del clúster de Kubernetes, permitiendo un enrutamiento y control flexible del tráfico a través de la configuración de recursos de entrada.

Puntos de dolor antes de usar APISIX

Antes de adoptar APISIX, UPYUN utilizaba Kong como su puerta de enlace para la red pública y empleaba Ingress-Nginx como el controlador de entrada. Sin embargo, UPYUN rápidamente encontró varios problemas.

  • Alta carga en las conexiones de la base de datos: Conectarse a la base de datos PostgreSQL dentro de la arquitectura de Kong en UPYUN puede llevar a un número considerable de conexiones, lo que podría degradar el rendimiento de la base de datos.

  • Complejidades en el control del sistema de conexiones: A pesar de la adición de proxies en el front-end, UPYUN enfrenta desafíos para gestionar efectivamente el sistema de conexiones durante actualizaciones o reinicios del sistema, lo que añade complejidad al mantenimiento del sistema.

  • Complejidad operativa con Ingress-Nginx: Ingress-Nginx presenta desafíos para UPYUN en el desarrollo de plugins debido a dependencias complejas, lo que dificulta la portabilidad y aumenta la complejidad en el desarrollo y mantenimiento. Además, muestra debilidades en capacidades semánticas, afectando la flexibilidad para escenarios comerciales complejos. La necesidad de una operación de recarga con cada modificación de la regla de entrada introduce aspectos poco amigables, especialmente para escenarios que dependen de conexiones persistentes.

Al navegar por las complejidades de mantener la lógica existente, estos problemas presentaron a UPYUN un desafío sustancial. En consecuencia, el equipo inició una búsqueda de alternativas más simplificadas y avanzadas en puertas de enlace para mejorar la eficiencia operativa.

Por qué UPYUN eligió APISIX

Mayor flexibilidad con una arquitectura robusta de plugins

Utilizando el sistema de plugins de Apache APISIX, UPYUN diseñó un conjunto de plugins internos, que incluyen características como la validación del sistema de permisos internos y un límite de tasa preciso. Esta iniciativa estratégica no solo ha dotado a la empresa de una funcionalidad más adaptable, sino que también ha infundido un soporte interno diverso en los clústeres de puertas de enlace.

Estabilidad excepcional

En el ámbito de las operaciones basadas en la nube, la estabilidad es primordial, especialmente para empresas más pequeñas o aquellas con equipos de operaciones limitados. Optar por APISIX como solución de puerta de enlace no solo garantiza una experiencia de usuario estable para los usuarios externos, sino que también gestiona eficazmente los costos operativos del despliegue interno del negocio.

Comunidad de código abierto de apoyo

Para el equipo técnico de UPYUN, decidir si una puerta de enlace es de código abierto se convierte en una consideración clave. APISIX, al ser una solución de código abierto, aprovecha el apoyo de su vibrante comunidad, asegurando respuestas rápidas y resoluciones a los errores reportados.

Escalabilidad impresionante

A diferencia del software de código cerrado, la notable escalabilidad de APISIX ofrece a los desarrolladores una forma fluida de adaptación e integración. La extensión multilingüe de APISIX, por ejemplo, permite a UPYUN crear funcionalidades adicionales adaptadas a sus necesidades comerciales en el contexto de la expansión del negocio. Esta característica no solo aumenta significativamente la eficiencia de desarrollo de UPYUN, sino que también aporta una mayor conveniencia para las iteraciones y el mantenimiento de características posteriores.

Integración fluida y personalización simplificada

UPYUN ha integrado Ingress-Nginx en ciertos clústeres de Kubernetes. En ausencia de un sistema de plugins en Ingress-Nginx anteriormente, personalizaron plugins específicos. Con una notable superposición funcional entre Apache APISIX y NGINX en las puertas de enlace de los centros de datos internos y entornos contenerizados, UPYUN está preparado para reemplazar todas las puertas de enlace contenerizadas de Ingress-Nginx previamente utilizadas con el Controlador de Entrada de Apache APISIX. Este paso tiene como objetivo armonizar los componentes a nivel de puerta de enlace, mitigando la posible redundancia en futuros esfuerzos de desarrollo y operativos.

Soporte mejorado de recarga

El Controlador de Entrada de APISIX viene con soporte de recarga, elevando la eficiencia operativa a nuevos niveles. Esta característica permite actualizaciones dinámicas de configuraciones sin interrupciones del servicio, permitiendo despliegues rápidos y maniobras operativas flexibles. El resultado es un impulso sustancial en la eficiencia operativa, simplificando el mantenimiento del sistema para una mayor conveniencia y velocidad.

Implementación de APISIX

La arquitectura interna actual de la puerta de enlace de UPYUN se muestra en el siguiente diagrama. El tráfico externo se canaliza inicialmente a través de Apache APISIX, luego se dirige al Controlador de Entrada de APISIX a través de APISIX, y finalmente llega a los servicios de backend para el procesamiento comercial posterior.

Implementación_de_APISIX

Puerta de enlace para la red pública

Control de tráfico

La puerta de enlace de la red pública actúa como la entrada principal para el tráfico externo, asumiendo una responsabilidad significativa que requiere un control y gestión precisos de cada flujo entrante al centro de datos interno. En este aspecto crucial, APISIX ha ofrecido a UPYUN una gama de servicios de control de tráfico a través de sus potentes características.

Para empezar, la puerta de enlace de APISIX ha gestionado el tráfico manejando el acceso a la API desde los nodos de borde de CDN. Esta asistencia no solo ha ayudado a optimizar el rendimiento de los nodos de CDN, sino que también ha sentado las bases para la posterior gestión de tráfico. Además, APISIX ha procesado hábilmente el tráfico relacionado con las páginas estáticas del sitio web oficial y el soporte técnico, mostrando sus versátiles capacidades de control de tráfico. Este enfoque específico para el manejo del tráfico ha permitido a UPYUN abordar de manera flexible diversos requisitos de acceso, aumentando finalmente la eficiencia general del sistema.

Autenticación de identidad

Los plugins juegan un papel fundamental dentro de UPYUN, especialmente en el contexto del acceso de los empleados a la plataforma interna. Actualmente, los empleados pasan por la autenticación utilizando métodos como el correo electrónico y Lark. Gracias al robusto plugin openid-connect de Apache APISIX, se ha logrado una integración fluida con estas plataformas, facilitando la autenticación conveniente de las identidades de los empleados. Esta aplicación innovadora ha demostrado vívidamente las potentes capacidades de los plugins de APISIX, proporcionando a UPYUN una solución eficiente y unificada para la autenticación de identidad al acceder a la plataforma de gestión.

Coordinación inteligente y protección de seguridad

En escenarios más específicos, UPYUN ha aprovechado el plugin openid-connect junto con el plugin serverless-post-function para lograr una coordinación inteligente con la aplicación Feishu. A través de la acción colaborativa de estos plugins, la información relevante del usuario, como el nombre de usuario, el correo electrónico o el identificador único dentro de Lark, se ha transmitido al servicio después de pasar por la puerta de enlace de la red pública. Una vez que la puerta de enlace obtiene la información del identificador pertinente, la reenvía eficientemente al servidor, permitiendo funcionalidades como las notificaciones y menciones de Lark. Notablemente, durante este proceso, el plugin consumer-restriction también puede imponer restricciones de permisos específicas a los usuarios, mejorando la seguridad y controlabilidad general del sistema.

Controlador de entrada

Cambio en la arquitectura interna

Después de integrar el Controlador de Entrada de Apache APISIX, la arquitectura interna de UPYUN ahora muestra la siguiente estructura.

Arquitectura_Interna_de_APISIX

A diferencia del marco de Ingress-Nginx mencionado anteriormente, el plano de datos base ha sido reemplazado por un clúster de Apache APISIX. El controlador de nivel superior monitorea activamente los cambios en el API Server, difundiendo posteriormente los recursos de configuración a través de todos los nodos del clúster de Apache APISIX mediante etcd.

Comparación_de_APISIX

Una distinción clave surge en la capacidad de Apache APISIX para realizar modificaciones dinámicas de rutas, diferenciándose de la configuración de Ingress-Nginx a la derecha. En Apache APISIX, todo el tráfico comercial entrante converge a través de una ubicación unificada, con la selección de rutas ejecutada a través de código Lua. Esta eficiencia resulta en un despliegue de código simplificado y fácil de gestionar. Por el contrario, el archivo de configuración nginx.conf a la derecha para Ingress-Nginx es intrincado, requiriendo una operación de recarga para cada cambio de Ingress.

Enrutamiento dinámico y configuración declarativa

Aprovechando la capacidad de enrutamiento dinámico de Apache APISIX, el Controlador de Entrada de Apache APISIX ha implementado efectivamente sus funcionalidades. Su papel principal gira en torno a monitorear los cambios de recursos dentro de APIServer, ejecutando transformaciones meticulosas de estructuras de datos, validación y cálculo del DIFF crucial. El paso final implica aplicar estos cambios a la API de Administración de Apache APISIX. Además, el Controlador de Entrada de Apache APISIX introduce una solución de alta disponibilidad directamente a través del mecanismo de elección de líder de Kubernetes, eliminando la necesidad de componentes externos.

En cuanto a la configuración declarativa, UPYUN ha optado por el Recurso CRD, apreciado por su semántica robusta. Este enfoque estructurado de configuración de datos permite la implementación de cualquier capacidad soportada por Apache APISIX.

Recurso_CRD

Logros después de usar APISIX

Mejora en la gestión del tráfico

Apache APISIX ha aumentado significativamente la eficiencia de manejo de tráfico de UPYUN. Sus robustos mecanismos de respaldo y capacidades sobresalientes de manejo de carga de tráfico aseguran la estabilidad de UPYUN, especialmente al tratar con grandes volúmenes de tráfico. A través de un control meticuloso del tráfico, APISIX aborda efectivamente los desafíos asociados con el respaldo y la gestión del tráfico, proporcionando a UPYUN un soporte comercial confiable y optimizando el rendimiento del sistema.

Simplificación de la integración y autenticación

APISIX sobresale en la autenticación de identidad y la integración de plugins. Utilizando el plugin openid-connect, APISIX acomoda eficientemente diversos métodos de autenticación, ofreciendo a UPYUN una solución efectiva de autenticación de identidad. La funcionalidad combinada de plugins como serverless-post-function y consumer-restriction facilita la transmisión inteligente de datos y un control de acceso robusto, mejorando significativamente las capacidades generales de integración del sistema.

Mejora en la eficiencia del procesamiento de registros

En cuanto al procesamiento de registros, UPYUN ha implementado múltiples clústeres de Apache APISIX internamente, asegurando un uso unificado en las puertas de enlace de los centros de datos y las puertas de enlace contenerizadas. Esta coherencia establece una lógica estandarizada para el procesamiento y consumo posterior de registros. Es notable la robusta funcionalidad de Apache APISIX para el plugin de registros. Internamente, UPYUN ha elegido el Kafka-Logger, un plugin que soporta formatos de registro personalizados.

Registro_de_APISIX

Optimización de la monitorización y verificaciones de salud

En cuanto a la monitorización, UPYUN utiliza herramientas como Prometheus y SkyWalking, siendo Prometheus la opción preferida. Funcionando como un proxy fundamental, Apache APISIX puede monitorear códigos de estado de aplicaciones y solicitudes.

Resumen

Como un actor destacado en el sector de servicios en la nube de CDN, UPYUN ha integrado Apache APISIX en su infraestructura, particularmente en la puerta de enlace para su red pública y el controlador de entrada. El robusto sistema de plugins y las capacidades excepcionales de gestión de tráfico de APISIX han sido importantes para mejorar significativamente la calidad y eficiencia operativa de UPYUN.

Mirando hacia el futuro, UPYUN anticipa una mayor colaboración con APISIX para potenciar el CDN basado en escenarios, ofreciendo un conjunto de servicios que incluyen almacenamiento en la nube, procesamiento en la nube, seguridad en la nube y marketing de tráfico.

Tags: