Explica cómo limitar requests por identidad, IP, ruta o coste y combinar cuotas, ventanas, almacenamiento compartido y respuestas 429 frente al abuso.
Última actualización
Actualizada
Nivel
Aplicación
Rate limiting limita frecuencia o consumo dentro de una ventana. No sustituye autenticación, autorización, límites de payload, timeouts ni capacidad del sistema.
Un contador en memoria funciona en una instancia, pero se divide al escalar. Opciones:
store compartido como Redis
gateway/API management
algoritmo aproximado por instancia
El store también puede fallar. Define fail-open o fail-closed según riesgo. Login puede preferir protección estricta; una lectura pública quizá degrade.
El ejemplo necesita un parser limitado antes, redacción de email y trust proxy correcto. En producción, evita almacenar identificadores personales en claro en las keys; usa hash con secreto cuando corresponda.
Rate limit controla requests por tiempo. Concurrency limit controla cuántas operaciones costosas pueden estar activas a la vez. Ambos pueden ser necesarios.
Un usuario puede respetar 10 requests/minuto y aun así abrir 10 exports de 5 minutos.
Límites estrictos protegen capacidad, pero pueden afectar usuarios legítimos. Stores compartidos mejoran precisión, pero añaden latencia y dependencia. Enforcement en gateway reduce carga de app, aunque necesita identidad disponible allí.