- Renombrar 02-integraciones/ → 03-integraciones/ (resolver prefijo duplicado) - Renombrar 02-devops/ → 04-devops/ (resolver prefijo duplicado) - Renombrar architecture/ → 97-adr/ (agregar prefijo numerico) - Actualizar _MAP.md con nueva estructura y version 2.1.0 Estructura final: - 00-vision-general/ - 01-modulos/ - 02-especificaciones/ - 03-integraciones/ - 04-devops/ - 97-adr/ Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
66 lines
1.2 KiB
Markdown
66 lines
1.2 KiB
Markdown
---
|
|
id: "ADR-011"
|
|
title: "Rate Limiting Strategy"
|
|
type: "ADR"
|
|
status: "Accepted"
|
|
priority: "P0"
|
|
supersedes: "N/A"
|
|
superseded_by: "N/A"
|
|
version: "1.0.0"
|
|
created_date: "2026-01-10"
|
|
updated_date: "2026-01-10"
|
|
---
|
|
|
|
# ADR-011: Rate Limiting Strategy
|
|
|
|
## Metadata
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| ID | ADR-011 |
|
|
| Estado | Accepted |
|
|
| Fecha | 2026-01-10 |
|
|
| Supersede | N/A |
|
|
|
|
## Contexto
|
|
|
|
Se necesita rate limiting para proteger la API de abuso y garantizar fair use entre tenants.
|
|
|
|
## Decision
|
|
|
|
**Implementar Token Bucket con Redis**, con limites diferenciados por tenant/plan.
|
|
|
|
## Implementacion
|
|
|
|
```typescript
|
|
// Limites por plan
|
|
const rateLimits = {
|
|
free: { requests: 100, window: '1h' },
|
|
basic: { requests: 1000, window: '1h' },
|
|
pro: { requests: 10000, window: '1h' },
|
|
enterprise: { requests: -1 } // Ilimitado
|
|
};
|
|
```
|
|
|
|
### Algoritmo Token Bucket
|
|
|
|
- Permite burst legitimo (hasta 10% del limite)
|
|
- Recarga continua de tokens
|
|
- Distribuido via Redis
|
|
|
|
## Consecuencias
|
|
|
|
### Positivas
|
|
- Burst legitimo permitido
|
|
- Limites justos por plan
|
|
- Distribuido via Redis
|
|
|
|
### Negativas
|
|
- Dependencia de Redis
|
|
- Configuracion por endpoint
|
|
|
|
---
|
|
|
|
**Fecha decision:** 2026-01-10
|
|
**Autores:** Claude Code (Arquitectura)
|