API Rate Limiting: Throttling, Quota y Protección DDoS
El API rate limiting previene el abuso y la sobrecarga de su API. Esta guía cubre las estrategias de rate limiting, throttling, gestión de quota y protección DDoS.
Actualizado:¿Qué es Rate Limiting?
Rate limiting es limitar el número de solicitudes que se pueden hacer en un período de tiempo específico (segundo, minuto, hora).
Propósitos: Prevenir el abuso de la API, asegurar el uso justo, proteger los recursos del servidor, reducir los ataques DDoS.
Cuando se excede el rate limit: Retorna el código de estado HTTP 429 (Too Many Requests). Especifica cuándo reintentar con el header Retry-After.
Rate limiting aumenta la disponibilidad y confiabilidad de la API. Asegura el cumplimiento de SLA (Service Level Agreement).
Algoritmos de Rate Limiting
Fixed Window: Contador mantenido en ventana de tiempo fija (ej. 100 solicitudes por minuto). Simple pero problema de boundary (spike en los límites de la ventana).
Sliding Window Log: Almacene el timestamp de cada solicitud. Cuente las solicitudes en los últimos N segundos. Más preciso pero usa más memoria.
Sliding Window Counter: Híbrido de fixed window y sliding window log. Menos memoria, resultado más preciso.
Token Bucket: Los tokens se producen a una tasa específica. Cada solicitud consume un token. Proporciona soporte de burst.
Leaky Bucket: Las solicitudes se agregan a la cola y se procesan a una tasa fija. Proporciona suavizado de tráfico.
Estrategias de Rate Limiting
Basado en IP: Límite basado en la dirección IP del solicitante. Simple pero los usuarios detrás de NAT (misma IP) tienen problemas.
Basado en usuario: Límite basado en el usuario autenticado. Más justo. Identifique al usuario con API key o JWT.
Basado en endpoint: Límite diferente para cada endpoint. /login (5/min) vs /users (100/min).
Tiered: Límites diferentes para diferentes tipos de usuarios. Free (100/min), Pro (1000/min), Enterprise (10000/min).
Global vs por-endpoint: Límite global (para toda la API) + límite por-endpoint. Use ambos juntos.
Implementación
Redis: Almacene los contadores de rate limit en Redis. Contador atómico con comandos INCR y EXPIRE. Ideal para rate limiting distribuido.
Middleware: Middleware de Express.js (express-rate-limit), Django (django-ratelimit), Spring Boot (Bucket4j).
API Gateway: Rate limiting con Kong, AWS API Gateway, Cloudflare. Gestión y monitoreo centralizados.
Response headers: Retorne información de límite con headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Client SDK: Las bibliotecas cliente leen la información de rate limit y realizan retry y backoff automáticamente.
Protección DDoS
Rate limiting por sí solo no proporciona protección DDoS. Los ataques DDoS vienen en volúmenes que exceden el rate limit.
Cloudflare: Protección DDoS, WAF (Web Application Firewall), gestión de bots. Tier gratuito disponible.
AWS Shield: Protección DDoS para servicios de AWS. Standard (gratuito) y Advanced (de pago).
Reputación de IP: Bloquee IPs con mala reputación. Use listas de reputación como Spamhaus, AbuseIPDB.
CAPTCHA: Verifique el tráfico sospechoso con CAPTCHA. reCAPTCHA v3 (invisible) o hCaptcha.
Geo-blocking: Bloquee el tráfico de países específicos (si es necesario).
Mejores Prácticas
Graceful degradation: Dé un mensaje de error claro al usuario cuando se exceda el rate limit. Especifique cuándo reintentar con el header Retry-After.
Monitoreo: Monitoree los hits de rate limit. El aumento anormal puede indicar un ataque o un bug.
Whitelist: Ponga en whitelist las IPs de confianza (servicios internos, APIs de socios).
Documentación: Declare claramente la política de rate limit en la documentación de la API. Información de límite, ventana y retry.
Pruebas: Pruebe el comportamiento del rate limit con load testing. Use k6, Artillery o JMeter.
Herramientas relacionadas
Guías paso a paso
Artículos prácticos sobre este tema
Caché HTTP y CDN: Estrategias de Caché para Rendimiento Web
El caché HTTP y CDN (Content Delivery Network) mejoran dramáticamente el rendimiento web.
Lista de Verificación de SEO Técnico: Optimización del Sitio e Indexación
El SEO técnico cubre los factores técnicos que afectan la capacidad de los motores de búsqueda para rastrear, indexar y…