API Gateway

An API Gateway acts as a single entry point for clients accessing multiple backend microservices, handling requests, routing them to appropriate services, and a...

Un API Gateway es un servidor que actúa como punto de entrada para todas las solicitudes del cliente a los servicios backend. Se sitúa entre las aplicaciones cliente y los microservicios o el backend monolítico, abstrae la arquitectura subyacente y simplifica las interacciones del cliente. Las funciones principales de un API Gateway incluyen el enrutamiento de solicitudes, la transformación de solicitudes/respuestas, la autenticación y autorización, la limitación de velocidad (rate limiting), el almacenamiento en caché (caching), el registro (logging) y la monitorización. Al centralizar estas preocupaciones transversales, el gateway evita que se dupliquen en múltiples servicios backend, lo que conduce a un código más limpio y mantenible. El enrutamiento de solicitudes dirige las llamadas API entrantes al servicio backend apropiado basándose en la ruta de la solicitud, las cabeceras u otros criterios. La transformación permite al gateway modificar las solicitudes o respuestas, por ejemplo, cambiando formatos de datos (p. ej., XML a JSON) o agregando datos de múltiples servicios. La seguridad es un aspecto crítico; el gateway puede manejar la autenticación (verificando la identidad del cliente) y la autorización (determinando si el cliente tiene permiso para acceder al recurso solicitado), a menudo integrándose con proveedores de identidad o servicios de validación de tokens. La limitación de velocidad protege a los servicios backend de ser abrumados por demasiadas solicitudes, mientras que el caché puede mejorar el rendimiento sirviendo datos solicitados frecuentemente directamente desde el gateway. Este patrón arquitectónico es particularmente prevalente en arquitecturas de microservicios, donde ayuda a gestionar la complejidad de numerosos servicios distribuidos.

        graph LR
  Center["API Gateway"]:::main
  Rel_api_development["api-development"]:::related -.-> Center
  click Rel_api_development "/terms/api-development"
  Rel_microservices["microservices"]:::related -.-> Center
  click Rel_microservices "/terms/microservices"
  Rel_load_balancer["load-balancer"]:::related -.-> Center
  click Rel_load_balancer "/terms/load-balancer"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explícalo como si tuviera 5 años

Un [API](/es/terms/api) [Gateway](/es/terms/gateway) es como un recepcionista útil para un gran edificio de oficinas; dirige a los visitantes (las solicitudes de tu app) al departamento correcto (servicio backend) y se asegura de que solo las personas autorizadas entren, sin que el visitante necesite conocer la distribución interna.

🤓 Expert Deep Dive

El patrón API Gateway aborda los desafíos de la gestión de sistemas distribuidos, particularmente microservicios, proporcionando una interfaz única y unificada para los clientes. Las consideraciones arquitectónicas clave incluyen la elección entre un gateway centralizado (punto de entrada único) frente a gateways descentralizados (por servicio o por dominio). Los gateways centralizados simplifican las interacciones del cliente y aplican políticas consistentes, pero pueden convertirse en un cuello de botella y un único punto de fallo. Los gateways descentralizados ofrecen mejor escalabilidad y aislamiento de fallos, pero pueden llevar a la duplicación de políticas. Los patrones de implementación comunes incluyen el patrón Backend For Frontend (BFF), donde gateways especializados atienden las necesidades específicas de diferentes tipos de clientes (p. ej., móvil, web). El papel del gateway en la traducción de protocolos (p. ej., REST a gRPC) y la agregación de solicitudes es crucial para desacoplar a los clientes de la evolución de los servicios backend. Las implicaciones de rendimiento surgen del salto de red adicional y la sobrecarga de procesamiento, lo que requiere un enrutamiento, caché y, potencialmente, procesamiento asíncrono eficientes. La aplicación de la seguridad a nivel del gateway, como la validación de JWT o la introspección de tokens OAuth 2.0, es una práctica recomendada de seguridad crítica.

📚 Fuentes