Issue: Scalare Realtime con Redis Adapter e sticky sessions

Summary

Rendere Redis obbligatorio per il realtime-service e attivare l’adapter socket.io-redis per supportare più istanze dietro LB.

Motivation / Risk

  • Senza adapter, i messaggi restano confinati all’istanza locale → chat/presence inconsistenti.
  • Futuri picchi di connessioni causerebbero “user A non vede user B”.

Plan

  1. Configurare Redis connection nel realtime-service come mandatory in prod (env check).
  2. Abilitare @socket.io/redis-adapter con namespace per chat/presence.
  3. Configurare sticky sessions / session affinity sul LB (o cookie).
  4. Aggiungere rate limiting WS per singolo socket.
  5. Load test fan-out con k6/Artillery per 3+ istanze.

Acceptance Criteria

  • Due istanze realtime dietro LB condividono eventi chat/presence.
  • Test di fan-out con 500 connessioni simultanee passa senza messaggi persi.
  • Flag di configurazione chiaramente documentato (prod obbligatorio, dev opzionale).

Notes / Dependencies

  • Redis già usato altrove: valutare db dedicato per WS per separare chiavi e metriche.
  • Richiede modifica compose/k8s per sticky sessions.