Cadrage stratégique 2026 (mai 2026) — PIVOT PRODUIT
TileCache L2 + WebSocket scaling pour produit multi-tenant + N réplicas backend.
Voir `.claude/memory/VISION_ALIGNMENT.md §0.6`.
Contexte
Aujourd'hui :
- Cache : Redis single instance, port 6380. `TwoLevelTileCache` L1 mem (intra-instance) + L2 Redis (partagée).
- WebSocket : sprint 15 a livré `WorkflowEventBroadcaster` qui maintient un set d'`asyncio.Queue` dans la mémoire d'une seule instance backend. Si 2+ instances backend, les events publiés sur instance A ne sont pas reçus par les clients connectés à instance B.
Pour un produit multi-tenant avec N réplicas backend (Wave 13 #N15
Helm/Kubernetes), il faut :
- Cache résilient (failover) — Redis Sentinel ou Cluster
- WebSocket events propagés cross-replica — message broker (Redis pub/sub OU Kafka/NATS)
- Sticky sessions WebSocket OU broker-based broadcast
- Multi-tenant aware : namespace par tenant, pas de cross-talk
Cible
- Redis Sentinel (failover automatique 1 master + N replicas) OU Redis Cluster (sharding)
- WebSocket broadcast inter-replicas :
- Option A : Redis pub/sub channel `workflow_events:{tenant_id}`
- Option B : NATS / Kafka pour throughput supérieur
- Sticky sessions côté ingress (Kubernetes) pour réduire les disconnects
- Namespace multi-tenant : clé Redis préfixée `{tenant_id}:...`, channel WS scoped par tenant
Approche technique proposée
- `backend/services/cache/two_level_tile_cache.py` : ajout support Redis Sentinel (auto-discovery du master)
- `backend/services/workflow/websocket_hook.py` + `WorkflowEventBroadcaster` : refactor pour publier sur Redis pub/sub au lieu de set local. Chaque instance backend s'abonne au channel.
- Multi-tenant : channels `workflow_events:{tenant_id}` séparés, autorization vérifiée à la connexion WS
- `docker-compose.yml --profile prod` : Redis Sentinel ou Cluster (3 nodes minimum)
- Tests : 2 instances backend simulées, event publié sur A → reçu sur B
Acceptance criteria
Dépendances
Références
Cadrage stratégique 2026 (mai 2026) — PIVOT PRODUIT
Contexte
Aujourd'hui :
Pour un produit multi-tenant avec N réplicas backend (Wave 13 #N15
Helm/Kubernetes), il faut :
Cible
Approche technique proposée
Acceptance criteria
Dépendances
Références