API Gateway vs Load Balancer

Beng Chen

March 3, 2023

Technology

Con el desarrollo de la tecnología de Internet, el número de solicitudes de datos en la red ha aumentado drásticamente, lo que ejerce una mayor presión sobre los servidores. En la arquitectura de sistemas de los primeros días, se solía utilizar un balanceador de carga para distribuir el tráfico de la red entre múltiples servidores, reduciendo así la carga en un solo servidor.

Sin embargo, hoy en día, muchos tipos diferentes de servicios backend exponen APIs al exterior, lo que resulta en un número creciente de APIs. Como resultado, las limitaciones de la arquitectura de sistemas que dependen principalmente de balanceadores de carga se han vuelto evidentes, ya que operan principalmente en la capa 4 y tienen funcionalidad limitada en la capa 7. Esto ha llevado al surgimiento de una infraestructura llamada API Gateway, que opera principalmente en la capa 7 y ofrece amplias capacidades de extensión.

En este artículo, presentaremos las características distintivas de los balanceadores de carga y las puertas de enlace de API, y exploraremos sus diferencias para ayudar a los lectores a comprender mejor su relación.

¿Qué es un Balanceador de Carga?

qué es un balanceador de carga

El papel principal de un balanceador de carga es proporcionar funcionalidad de balanceo de carga para múltiples servicios backend, permitiéndoles distribuir el tráfico según diferentes algoritmos de balanceo de carga. La historia de los balanceadores de carga es extensa y puede categorizarse aproximadamente en las siguientes etapas:

  • Primera etapa: Los balanceadores de carga en esta etapa suelen estar compuestos por dispositivos de hardware, que tienen alto rendimiento y alta confiabilidad, pero son inflexibles y costosos.

  • Segunda etapa: Los balanceadores de carga comenzaron a implementarse en software, siendo más flexibles y escalables, y a menudo apareciendo en distribuciones de software, lo que los hace menos costosos. LVS (Linux Virtual Server) es un ejemplo de este tipo.

  • Tercera etapa: Con el auge de la tecnología de computación en la nube, los balanceadores de carga también comenzaron a tener versiones en la nube. Una ventaja significativa de este tipo de balanceador de carga es que puede ayudar a las empresas a obtener servicios de balanceo de carga de alto rendimiento a un costo menor. Otra ventaja es que puede aprovechar la escalabilidad y elasticidad de la computación en la nube para mejorar la disponibilidad general. Ejemplos de balanceadores de carga en la nube incluyen el Classic Load Balancer, Application Load Balancer y Network Load Balancer de AWS.

Además de distribuir el tráfico y mejorar la escalabilidad de la red, los balanceadores de carga también pueden usarse para mejorar la seguridad de la red. Por ejemplo, pueden usarse para aislar servidores internos de la internet pública, previniendo ataques maliciosos y accesos no autorizados. Un caso de uso simple es un servidor interno que contiene información sensible, el cual un balanceador de carga puede aislar dentro de la red interna para proteger su seguridad de manera efectiva.

¿Qué es una Puerta de Enlace de API?

qué es una puerta de enlace de API

A corto plazo, una puerta de enlace de API es una infraestructura que gestiona y reenvía el tráfico de API, operando principalmente en la capa 7. Proporciona una robusta escalabilidad que los balanceadores de carga no tienen, incluyendo autenticación, observabilidad y plugins personalizados. Algunas de sus características clave son:

  • Estrategias de enrutamiento ricas: Como la puerta de enlace de API opera en la capa 7, puede analizar datos en la capa HTTP/HTTPS. Por lo tanto, puede dirigir solicitudes a varios servidores upstream basándose en condiciones como la ruta de la solicitud, el dominio o el encabezado.

  • Autenticación: La puerta de enlace de API admite múltiples métodos de autenticación a nivel de API para prevenir solicitudes no autorizadas, como OAuth2 y JWT. La autenticación puede separarse de la lógica del negocio y mantenerse independiente para ser no intrusiva o mínimamente intrusiva en el código del negocio.

  • Limitación de tasa: Se puede aplicar una limitación de tasa granular a diferentes niveles de enrutamiento para prevenir ataques maliciosos y evitar la sobrecarga de los servicios backend.

  • Observabilidad: La observabilidad se refiere a la capacidad de observar el estado de ejecución y la utilización de recursos del programa interno desde el exterior del sistema. La puerta de enlace de API admite vincular registros a Kafka, Google Cloud Logging Service, Elasticsearch, etc., y vincular métricas relevantes a prometheus, datadog, etc.

  • Extensión: Como la puerta de enlace de API es en sí misma una puerta de enlace, está diseñada para poder adaptarse a diferentes escenarios de aplicación de diferentes empresas, como diferentes autenticaciones de identidad, lanzamiento canario, políticas de seguridad y recopilación de registros. Además, la puerta de enlace de API debe permitir a los usuarios seleccionar extensiones o emprender desarrollos personalizados; por lo tanto, la escalabilidad es fuerte y la selección de extensiones disponibles es bastante diversa. Por ejemplo, Apache APISIX tiene 13 extensiones de autenticación diferentes, cubriendo casi todos los requisitos de autenticación comunes en el mercado.

Actualmente, hay muchas puertas de enlace de API disponibles en el mercado, como Apache APISIX, Kong, Tyk, Zuul, etc. Los desarrolladores pueden seleccionar la puerta de enlace de API más adecuada según sus requisitos específicos.

Principales Diferencias entre la Puerta de Enlace de API y el Balanceador de Carga

Áreas de Enfoque Distintas

diferencia entre puerta de enlace de API y balanceador de carga img 1

Aunque tanto la puerta de enlace de API como el balanceador de carga admiten proxies de capa 4 y capa 7, la puerta de enlace de API se enfoca principalmente en la capa 7, mientras que el balanceador de carga se enfoca principalmente en la capa 4.

Por lo tanto, el balanceador de carga, operando en la capa 4, tiene muchas características ventajosas. En primer lugar, reduce la sobrecarga de análisis de protocolo en comparación con la puerta de enlace de API, lo que resulta en una mayor capacidad de rendimiento. En segundo lugar, admite el reenvío transparente de direcciones IP del cliente, mientras que la puerta de enlace de API generalmente pasa las direcciones IP del cliente a través de encabezados HTTP.

Riqueza de Características

diferencia entre puerta de enlace de API y balanceador de carga img 2

Por ejemplo, los balanceadores de carga tienen capacidades más débiles de procesamiento de la capa 7 HTTP y a menudo carecen de características como autenticación, autorización, lógica de enrutamiento compleja y recopilación de registros. Mientras que las puertas de enlace de API tienen capacidades más fuertes de procesamiento de protocolos de capa 7 y pueden adjuntar varias extensiones de características como control de acceso, registro, gestión de API y computación sin servidor.

Desarrollo Personalizado

En el mercado tecnológico en rápida evolución de hoy, muchas empresas requieren la capacidad de soportar desarrollos personalizados. Las puertas de enlace de API ofrecen varias opciones de desarrollo personalizado, como soporte para diferentes lenguajes de programación y la capacidad de inyectar lógica de procesamiento personalizada en diferentes etapas del reenvío de tráfico. Por otro lado, los balanceadores de carga no ofrecen opciones de desarrollo personalizado.

Formas de Distribución de Tráfico

Los balanceadores de carga suelen usar la distribución directa de tráfico para lograr el balanceo de carga. Mediante algoritmos, los datos de tráfico se envían directamente a nodos específicos de servidores backend, lo que significa que cada instancia de servicio que espera recibir tráfico debe comportarse de manera consistente, reduciendo cierta flexibilidad. En contraste, las puertas de enlace de API distribuyen el tráfico basándose en diferentes dimensiones como URL Path, Domain y Header. Como resultado, las instancias de servicio que esperan recibir tráfico pueden variar, como una API privada o una API GRPC, lo que hace que la distribución de tráfico sea altamente flexible.

Casos de Uso

Caso de Uso en Microservicios

en la pantalla de microservicios

Para sistemas de arquitectura de microservicios, una puerta de enlace de API es esencial. En primer lugar, puede gestionar y enrutar fácilmente varios servicios backend. En segundo lugar, una puerta de enlace de API podría proporcionar muchas características avanzadas como autenticación, autorización, limitación de tasa, reenvío y registro. Por lo tanto, los diferentes microservicios ya no necesitan implementar repetidamente funciones como la limitación de tasa y la autenticación, lo que hace que la implementación de funciones de cada microservicio sea más enfocada y reduce los costos de desarrollo.

La arquitectura de microservicios involucra muchos servicios, lo que hace que los balanceadores de carga de capa 4 no sean adecuados para el balanceo de carga de múltiples servicios backend. En su lugar, son más adecuados para usarse con servicios backend monolíticos. Mientras tanto, los balanceadores de carga de capa 7 generalmente no pueden ofrecer características avanzadas, lo que hace que sus ventajas sobre las puertas de enlace de API en microservicios sean menos significativas.

Gestión y Despliegue de APIs

La puerta de enlace de API también es altamente adecuada en escenarios donde existe la necesidad de gestionar y desplegar un gran número de APIs, ya que tiene capacidades potentes de gestión de APIs. En este caso, podría habilitar o deshabilitar fácilmente una API específica, modificar rápidamente la configuración de reenvío de una API y agregar características como limitación de tasa, autenticación y registro a una API sin necesidad de reiniciar la puerta de enlace de API.

Tomando Apache APISIX como ejemplo, es un proyecto de código abierto de nivel superior bajo la fundación Apache y actualmente es el proyecto de puerta de enlace de código abierto más activo. Como una puerta de enlace de API de código abierto dinámica, en tiempo real y de alto rendimiento, Apache APISIX proporciona varias funciones de gestión de tráfico como balanceo de carga, upstream dinámico, lanzamiento canario, corte de circuito, autenticación de identidad, observabilidad, etc.

captura de pantalla del panel de control de apisix imagen 1

captura de pantalla del panel de control de apisix imagen 12

Por otro lado, los balanceadores de carga tradicionales son relativamente más débiles en cuanto a la gestión de APIs y necesitan características avanzadas tan ricas.

Acceso a Red de Alto Rendimiento

Para escenarios que requieren alto tráfico y una estabilidad extremadamente alta para el acceso a la red, un balanceador de carga de capa 4 es obviamente más adecuado. Puede distribuir directamente el tráfico original de la capa 4 de la red a cada servicio backend sin el impacto de múltiples análisis de protocolos de capa de aplicación en las capas intermedias, lo que lo hace más capaz de manejar un mayor rendimiento.

En contraste, la puerta de enlace de API que opera en la capa 7, como el punto de entrada unificado, tendrá un límite de rendimiento debido a la necesidad de analizar protocolos. Aunque usar una puerta de enlace de API de capa 4 para el acceso a la red no es particularmente ventajoso porque esta capa no es el enfoque de la puerta de enlace de API. En comparación con los muchos años de acumulación técnica de los balanceadores de carga en esta capa, las ventajas de las puertas de enlace de API son mucho menos significativas.

Resumen

En general, la puerta de enlace de API y el balanceador de carga son soluciones de infraestructura utilizadas para resolver diferentes problemas. La puerta de enlace de API se utiliza principalmente como un proxy para las interfaces de API backend, proporcionando un punto de entrada único para acceder a diferentes tipos de APIs y funciones independientes como limitación de tasa, autenticación y monitoreo. Por otro lado, un balanceador de carga se utiliza principalmente para la distribución de tráfico de capa 4, distribuyendo solicitudes entre múltiples servidores backend para equilibrar la carga de solicitudes y mejorar la disponibilidad general y la tolerancia a fallos del sistema.

Bajo un diseño arquitectónico razonable, la puerta de enlace de API y el balanceador de carga generalmente se usan juntos. Un balanceador de carga es el acceso a la red de todo el sistema, distribuyendo el tráfico a múltiples instancias de puerta de enlace de API. Cada instancia de puerta de enlace de API luego enruta, autentica y autoriza solicitudes por separado para hacer que toda la red sea más robusta, confiable y escalable.

Tags: