section: Cache — Redis | prio: P0 | est: 3h
Pourquoi
Redis est le composant le plus critique pour la performance. Le Cluster assure la HA et la scalabilité horizontale à 2M users.
Acceptance Criteria
- Cluster Redis 3 shards (6 nodes : 3 primary + 3 replica) — chaque shard gère ~1/3 du keyspace
- DB 0 (sessions/blacklist) : policy
noeviction — jamais dexpulsion silencieuse dune session. maxmemory 8GB par shard prod
- DB 1 (rate limiters) : policy
allkeys-lru — peut expulser les clés expirées. maxmemory 2GB
- DB 2 (cache profils) : policy
allkeys-lru, TTL 5min. maxmemory 4GB
- TLS 1.3, AUTH via
REDIS_PASSWORD secret, requirepass + masterauth
- Persistence : AOF
appendfsync everysec sur DB 0 (sessions) uniquement — DB 1 et 2 rebuildables
- Health check :
redis-cli -a $PASS ping dans le liveness probe K8s
- Métriques Prometheus via
redis_exporter : redis_connected_clients, redis_memory_used_bytes, redis_keyspace_hits_total, redis_keyspace_misses_total
- Alertes : memory > 80% → scale up, eviction rate > 0 sur DB0 → P0 incident
- docker-compose.yml pour le dev local : redis:7-alpine, single node, AOF
Fichiers
infra/redis/
├── redis-cluster.conf
└── redis-dev.conf
docker-compose.yml
infra/prometheus/
└── redis_alerts.yml
Scale
3 shards × 8GB = 24GB pour sessions/blacklist. À 2M users × 10 sessions × 200B = 4GB → 6× headroom.
section: Cache — Redis | prio: P0 | est: 3h
Pourquoi
Redis est le composant le plus critique pour la performance. Le Cluster assure la HA et la scalabilité horizontale à 2M users.
Acceptance Criteria
noeviction— jamais dexpulsion silencieuse dune session. maxmemory 8GB par shard prodallkeys-lru— peut expulser les clés expirées. maxmemory 2GBallkeys-lru, TTL 5min. maxmemory 4GBREDIS_PASSWORDsecret,requirepass+masterauthappendfsync everysecsur DB 0 (sessions) uniquement — DB 1 et 2 rebuildablesredis-cli -a $PASS pingdans le liveness probe K8sredis_exporter:redis_connected_clients,redis_memory_used_bytes,redis_keyspace_hits_total,redis_keyspace_misses_totalFichiers
Scale
3 shards × 8GB = 24GB pour sessions/blacklist. À 2M users × 10 sessions × 200B = 4GB → 6× headroom.