💻 Développement

rate-limiter-designer

Conception de systèmes de rate limiting et throttling pour APIs.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- rate-limiter-designer --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } rate-limiter-designer -Launch"

🚀 Déjà installé ?

claude "/rate-limiter-designer"

Ou tapez /rate-limiter-designer dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

rate limitthrottlinglimite de requêtesAPI abuseDDoS protectionquota429 Too Many Requests

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/dev-skills/rate-limiter-designer ~/.claude/skills/

Source : dev-skills/rate-limiter-designer

📖 Manuel

Rate Limiter Designer

Workflow

  1. Identifier les endpoints à protéger et les types de clients : Cartographier les endpoints sensibles (authentification, envoi d'email, paiement, recherche lourde) et les endpoints publics ; distinguer les clients anonymes (par IP), les clients authentifiés (par user ID ou API key), et les services internes (limites plus élevées ou absentes) ; évaluer le risque d'abus par type d'endpoint.
  2. Choix de l'algorithme : Fixed window (simple, mais burst possible à la frontière) ; sliding window log (précis, mais mémoire O(n) par requête) ; sliding window counter (compromis mémoire/précision) ; token bucket (burst contrôlé, remplit à taux fixe, recommandé pour les APIs) ; leaky bucket (débit constant, lisse les pics, adapté aux systèmes aval fragiles).
  3. Définition des limites par tier : Différencier les quotas selon le niveau de service (anonymous: 10 req/min, free: 100 req/min, pro: 1000 req/min, enterprise: custom) ; définir les limites par endpoint en plus des limites globales (ex. /auth/login : 5 req/min indépendamment du tier) ; prévoir des limites burst vs sustained.
  4. Implémentation côté serveur : Middleware applicatif (ASP.NET Core RateLimiter, Express rate-limit, Bucket4j) pour la flexibilité et l'accès au contexte métier ; API gateway (Kong, AWS API Gateway, Azure APIM) pour la centralisation et la décharge applicative ; reverse proxy (Nginx, Traefik) pour la protection au niveau réseau avant d'atteindre l'application.
  5. Stockage des compteurs : In-memory pour les instances uniques (simple, ultra-rapide, perdu au redémarrage) ; Redis pour le rate limiting distribué (commandes atomiques INCR/EXPIRE, Lua scripts pour les opérations atomiques complexes, RedisRateLimiter) ; choisir le stockage en fonction des exigences de précision et de scalabilité.
  6. Headers de réponse : Toujours retourner les headers standards : X-RateLimit-Limit (quota total), X-RateLimit-Remaining (requêtes restantes), X-RateLimit-Reset (timestamp de réinitialisation, format Unix epoch ou ISO 8601), Retry-After (secondes à attendre, obligatoire sur 429) ; faciliter l'intégration côté client en étant transparents sur les limites.
  7. Stratégie de réponse : Retourner HTTP 429 avec un body JSON informatif ({"error": "rate_limit_exceeded", "retry_after": 60, "limit": 100, "window": "1m"}) ; envisager la dégradation gracieuse (réponse en cache périmée, version allégée de la réponse) avant le rejet total ; logger les événements de rate limiting pour analyser les patterns d'abus.
  8. Rate limiting distribué : Synchroniser les compteurs via Redis avec des scripts Lua atomiques pour éviter les race conditions ; implémenter le sliding window avec des sorted sets Redis (score = timestamp) ; pour les déploiements multi-région, accepter un léger décalage (eventual consistency) ou utiliser des solutions dédiées (Envoy global rate limiting, Redis Cluster) ; tester la précision sous charge.

Règles