¿Qué hace Experto en API Gateway y Proxy Inverso?
Configura y optimiza puertas de enlace API y proxies inversos para enrutamiento, autenticación, limitación de tasa y gestión de tráfico.
Puntos de Decisión
Selección de Estrategia de Autenticación
Patrón de Tráfico y Requisitos
├── Solo servicios internos
│ └── Autenticación mediante API Key
│ ├── Baja complejidad, validación rápida
│ └── Kong: plugin key-auth, Traefik: forwardAuth
├── API orientada al cliente con necesidades de sesión
│ └── Autenticación JWT
│ ├── Sin estado, incluye claims de usuario
│ └── Kong: plugin jwt, Nginx: lua-resty-jwt
├── Integración empresarial B2B
│ └── Autenticación mTLS
│ ├── Basada en certificados, máxima seguridad
│ └── Kong: mtls-auth, Nginx: ssl_verify_client
└── Integración SaaS de terceros
└── Flujo OAuth2
├── Intercambio de tokens, autenticación delegada
└── Kong: plugin oauth2, AWS API Gateway: authorizer
Selección de Tecnología de Puerta de Enlace
Requisitos → Elección
├── Ecosistema de plugins e interfaz gráfica necesaria
│ └── Kong Enterprise/OSS
├── Nativo de Kubernetes con autodescubrimiento
│ └── Traefik v3 o Ingress-NGINX
├── Máximo rendimiento, funcionalidades mínimas
│ └── Nginx o Envoy
└── Gestionado en la nube, escalado serverless
└── AWS API Gateway o Azure Application Gateway
Estrategia de Enrutamiento Ascendente
Arquitectura de Servicio → Método de Enrutamiento
├── Microservicios con descubrimiento de servicios
│ └── Destinos ascendentes dinámicos
│ ├── Integración con Consul/Eureka
│ └── Balanceo de carga basado en comprobaciones de salud
├── Servicios backend estáticos
│ └── Grupos ascendentes fijos
│ ├── Round-robin o menos conexiones
│ └── Enrutamiento ponderado para despliegues canary
└── Despliegue multirregión
└── Enrutamiento geográfico
├── Basado en latencia o geo-IP
└── Conmutación por error a regiones secundarias
Modos de Fallo
Cascada de Tiempo de Espera de la Puerta de Enlace
Síntoma: Respuestas API lentas (>10s) bajo carga
Detección: Los tiempos de respuesta aumentan mientras los servicios ascendentes reportan latencia normal
Causa Raíz: El tiempo de espera de la puerta de enlace es mayor que el tiempo de espera ascendente, causando cola de solicitudes
Solución: Establecer el tiempo de espera de lectura de la puerta de enlace < tiempo de espera ascendente (puerta de enlace: 30s, ascendente: 25s)
Bypass de Autenticación
Síntoma: Solicitudes no autorizadas llegan a servicios backend
Detección: Los registros del backend muestran solicitudes sin los encabezados de autenticación esperados
Causa Raíz: El orden de las rutas permite que reglas permisivas coincidan antes que las reglas de autenticación
Solución: Mover el middleware de autenticación a nivel global o asegurar que las rutas específicas aparezcan primero en la configuración
Oscilación del Interruptor de Circuito
Síntoma: Errores 503 intermitentes durante picos de tráfico
Detección: El interruptor de circuito se abre/cierra rápidamente (varias veces por minuto)
Causa Raíz: Umbral demasiado sensible o comprobación de salud mal configurada
Solución: Ajustar el umbral de fallos (5+ fallos) y el tiempo de recuperación (mínimo 30s)
Caducidad del Certificado SSL
Síntoma: Fallos en el handshake HTTPS, advertencias de certificado en el navegador
Detección: La comprobación de certificados SSL muestra caducidad en 30 días
Causa Raíz: Gestión manual de certificados sin automatización de renovación
Solución: Implementar cert-manager (K8s) o cliente ACME con renovación automática
Agotamiento de Recursos
Síntoma: La puerta de enlace deja de aceptar conexiones, memoria/CPU al 100%
Detección: Errores de conexión rechazada, comprobaciones de salud de la puerta de enlace fallando
Causa Raíz: Sin límites de conexión o fugas de memoria en plugins
Solución: Establecer worker_connections (Nginx) o límites de pool de conexiones (Kong), reiniciar la puerta de enlace
Ejemplos Prácticos
Escenario: Configuración de API Gateway para Comercio Electrónico
Contexto: Desplegar Kong para microservicios que manejan pedidos, inventario, pagos con autenticación JWT
Paso 1: Definición de Rutas
# Identificar primero los endpoints de servicio
services:
- orders: /api/v1/orders/* → http://orders:8080
- inventory: /api/v1/inventory/* → http://inventory:8080
- payments: /api/v1/payments/* → http://payments:8080
Paso 2: Aplicar el Árbol de Decisión
- Patrón de tráfico: API orientada al cliente → Autenticación JWT
- Arquitectura: Microservicios → Destinos ascendentes dinámicos
- Requisitos: Ecosistema de plugins necesario → Kong seleccionado
Paso 3: Orden de los Plugins
# Aplicar plugins en el orden correcto
plugins:
1. cors (pre-autenticación)
2. jwt (autenticación)
3. rate-limiting (post-autenticación)
4. request-transformer (último)
Experto vs Novato:
- Error de novato: Aplica limitación de tasa antes de la autenticación (usuarios anónimos consumen cuota)
- Enfoque experto: Autenticación primero, luego limitación de tasa por usuario autenticado
- Error de novato: Usa política CORS global
- Enfoque experto: Diferente CORS por ruta (pedidos permite orígenes admin, pagos restringe solo al frontend)
Escenario de Fallo: Despliegue Canary Fallido
Situación: Se desplegó el 20% del tráfico a la nueva versión del servicio de pedidos, apareciendo errores 500
Proceso de Detección:
- Verificar métricas de la puerta de enlace: el pico de tasa 500 se correlaciona con el momento del despliegue
- Comprobaciones de salud ascendentes: la nueva versión falla las comprobaciones de salud
- Registros de la puerta de enlace: tiempos de espera de conexión ascendente
Procedimiento de Reversión:
# Paso 1: Cambio de tráfico inmediato
kong:
routes:
- service: orders-v1
weight: 100 # Era 80
- service: orders-v2
weight: 0 # Era 20
# Paso 2: Validar reversión
curl -H "Authorization: Bearer $JWT" \
https://api.company.com/orders/health
# Paso 3: Eliminar el ascendente fallido
kubectl scale deployment orders-v2 --replicas=0
Análisis de Causa Raíz: La nueva versión tenía una mala configuración del pool de conexiones de la base de datos, causando tiempos de espera bajo carga
Puertas de Calidad
- Todas las rutas tienen coincidencia explícita de ruta (sin rutas catch-all /*)
- Middleware de autenticación configurado antes que los plugins de lógica de negocio
- Las comprobaciones de salud devuelven 2xx para ascendentes saludables en menos de 5 segundos
- Umbrales del interruptor de circuito establecidos: 5 fallos en ventana de 60s, recuperación de 30s
- Certificados TLS se renuevan automáticamente con 30+ días antes de la caducidad
- Limitación de tasa aplicada por usuario autenticado, no globalmente
- Política CORS restringe orígenes solo a los dominios requeridos
- Tiempo de espera de la puerta de enlace (30s) < tiempo de espera ascendente (25s) para evitar cascadas
- Los registros de acceso incluyen ID de correlación para el rastreo de solicitudes
- Puerta de enlace desplegada con mínimo 2 réplicas para alta disponibilidad
Límites NO-PARA
Este skill maneja: Configuración de puerta de enlace, reglas de enrutamiento, middleware de autenticación, configuración de proxy inverso
NO para:
- Diseño de algoritmos de limitación de tasa → Usa
api-rate-limiting-throttling-expert - Configuración del plano de datos de malla de servicios → Usa
service-mesh-microservices-expert - Especificación y diseño de API → Usa
api-architect - Pooling de conexiones de base de datos → Usa
database-performance-expert - Orquestación de contenedores → Usa
kubernetes-expertodocker-expert - Generación de certificados SSL → Usa
security-infrastructure-expert
Reglas de Delegación:
- Para algoritmos personalizados de limitación de tasa: "Configuraré el plugin de limitación de tasa, pero para algoritmos personalizados, usa api-rate-limiting-throttling-expert"
- Para configuración de descubrimiento de servicios: "Configuraré los destinos ascendentes, pero para la configuración de malla de servicios, usa service-mesh-microservices-expert"