Fundamentos de API Gateway con Kong y Nginx
Un API Gateway es la capa central delante de tus APIs que combina enrutamiento, seguridad, distribución de carga y monitoreo.
Descripción compacta
Un API Gateway es un componente de servidor que recibe todas las solicitudes de cliente hacia una API y las reenvía a los servicios backend correctos. Además del enrutamiento, se encarga de autenticación, autorización, limitación de velocidad, terminación SSL, caching, balanceo de carga, conversión de protocolos y monitoreo. Las implementaciones conocidas incluyen Kong, Nginx, Envoy, Traefik, AWS API Gateway y Azure API Management. Kong se construye sobre Nginx y lo complementa con un sistema de plugins y gestión centralizada. Nginx en sí puede utilizarse como un Reverse Proxy potente y como API Gateway. Un API Gateway desacopla los clientes de los servicios backend, simplifica la seguridad y centralización, y es un componente importante en arquitecturas modernas de Microservices.
Componentes importantes
Enrutamiento
El enrutamiento es la tarea central de un API Gateway. Reenvía las solicitudes según la ruta, el método, los headers o el host al servicio backend correspondiente. Por ejemplo, las solicitudes a /orders se reenvían al servicio de órdenes y las solicitudes a /payments al servicio de pagos.
Reverse Proxy
Un API Gateway actúa como Reverse Proxy. Para los clientes, el Gateway es el único endpoint visible, mientras que los servicios backend permanecen ocultos detrás. Esto protege los servicios internos y permite su reemplazo sin afectar a los clientes.
Load Balancing
El balanceo de carga distribuye las solicitudes entrantes entre múltiples instancias de un servicio backend. Esto mejora la disponibilidad y la escalabilidad. Los métodos comunes incluyen Round Robin, Least Connections e IP Hash. Los Health Checks detectan instancias fallidas y las retiran de la distribución.
Autenticación y autorización
El Gateway puede aplicar mecanismos de autenticación como OAuth2, JWT, API Keys o mTLS de forma centralizada. Valida tokens antes de que las solicitudes lleguen a los servicios backend e inserta información de usuario sanitizada cuando es necesario.
Rate Limiting y Throttling
El Rate Limiting limita la cantidad de solicitudes que un cliente puede enviar en un período de tiempo. El Throttling reduce la velocidad de las solicitudes bajo carga alta. Ambas medidas protegen los servicios backend contra sobrecarga y abuso. Pueden configurarse globalmente, por API o por cliente.
Terminación SSL
El Gateway se encarga del descifrado SSL-TLS y de la comunicación cifrada con los clientes. La comunicación interna hacia los servicios backend puede ser sin cifrar o usar certificados internos, lo que simplifica la administración.
Caching
Un API Gateway puede almacenar en caché las respuestas de solicitudes frecuentes para reducir la carga del backend y disminuir la latencia. El caching es especialmente útil para datos estáticos o que cambian raramente. Las claves de caché deben elegirse con cuidado para evitar respuestas incorrectas.
Conversión de protocolos
El Gateway puede traducir entre protocolos, por ejemplo entre HTTP/1.1 y HTTP/2, REST y gRPC, o WebSockets y TCP. Esto permite conectar clientes diferentes con servicios backend variados.
Logging y monitoreo
El Gateway es un punto central para logging y monitoreo. Registra solicitudes, respuestas, códigos de estado, latencias y errores. Herramientas como Prometheus, Grafana, ELK o Datadog pueden evaluar y visualizar estos datos.
Kong
Kong es un API Gateway Open Source popular que se basa en Nginx y OpenResty. Ofrece un amplio sistema de plugins para autenticación, limitación de velocidad, logging, transformación y más. Kong puede ser auto-hospedado o utilizado como servicio en la nube.
Nginx como Gateway
Nginx es un servidor web y Reverse Proxy potente. Con la configuración adecuada, puede cumplir las tareas básicas de un API Gateway como enrutamiento, balanceo de carga, terminación SSL y caching. Para funcionalidades avanzadas de plugins, a menudo se utiliza Kong o Nginx Plus.
Ejemplo práctico
Una empresa ejecuta varios Microservices y usa Kong como API Gateway.
Configuración de Kong para dos servicios:
services:
- name: order-service
url: http://orders.internal:8080
routes:
- name: orders-route
paths:
- /api/v1/orders
- name: payment-service
url: http://payments.internal:8080
routes:
- name: payments-route
paths:
- /api/v1/payments
plugins:
- name: rate-limiting
config:
minute: 100
- name: jwt
config:
uri_param_names: []
cookie_names: []
En este ejemplo, Kong reenvía las solicitudes a /api/v1/orders al servicio de órdenes y las solicitudes a /api/v1/payments al servicio de pagos. El plugin de rate limiting limita las solicitudes a 100 por minuto. El plugin JWT asegura que solo los tokens validados puedan acceder a las APIs.
FAQ: API Gateway con Kong y Nginx
1. ¿Qué es un API Gateway?
2. ¿Cuál es la diferencia entre API Gateway y Reverse Proxy?
3. ¿Qué es Kong?
4. ¿Qué es Nginx?
5. ¿Qué es Rate Limiting?
6. ¿Qué es Load Balancing?
7. ¿Qué es la terminación SSL?
8. ¿Qué son los plugins en Kong?
9. ¿Qué es un Service Mesh?
10. ¿Qué es el caching en un API Gateway?
11. ¿Debe ocurrir la autenticación en el Gateway o en el servicio?
12. ¿Qué es un Gateway Backends for Frontends?
13. ¿Qué es un Health Check?
14. ¿Qué es un Upstream de Nginx?
15. ¿Cuál es la ventaja de un API Gateway centralizado?
Continúa en la ruta de aprendizaje de APIs
El siguiente artículo en la ruta de aprendizaje de APIs aborda API Gateway vs. Reverse Proxy: Diferencias y casos de uso – dos componentes de infraestructura que a menudo se confunden, pero que cumplen tareas diferentes.
Referencias
- https://docs.konghq.com/
- https://nginx.org/en/docs/
- https://microservices.io/patterns/apigateway.html
Libros recomendados para el desarrollo de APIs
Si deseas profundizar más en API Gateways, Microservices y arquitectura de APIs, te recomendamos los siguientes libros:
Keine Bücher für Kategorie "api-development" gefunden.



