Implementazione cache per i dati delle configurazioni del protocollo
User stories
Come developer voglio accedere ai dati delle configurazioni di tenant e servizio in modo performante e consistente, così da ottimizzare le operazioni e la logica applicativa.
Criteri di accettazione
-
I dati delle configurazioni devono essere recuperabili da una cache Redis distribuita. -
In caso di dati non presenti in cache, il sistema deve recuperarli dalla fonte originale e aggiornare la cache. -
La coerenza tra cache e fonte dati deve essere garantita da una logica di invalidazione o refresh configurabile. -
Devono essere presenti metriche di monitoraggio per hit/miss della cache.
Casi di test
-
Testare il recupero dei dati da cache esistente. -
Testare il caricamento e la memorizzazione di nuove configurazioni in cache. -
Validare la gestione della scadenza o invalidazione dei dati.
Scelte tecnologiche e architetturali
- Utilizzo di Redis come sistema di caching distribuito.
- Implementazione in Python, tramite librerie come
redis-py
oaioredis
(per versioni async). - Definizione di chiavi di cache basate su tenant_id e service_id.
- Configurazione di TTL (Time To Live) per garantire aggiornamenti periodici.
- Gestione centralizzata della cache tramite un modulo dedicato (
cache_manager
). - Esposizione di metriche di monitoraggio (es. Prometheus exporter per hit/miss, TTL, invalidazioni).
Schema architetturale (concettuale)
flowchart LR
A[Microservizio Python] -->|richiesta configurazione| B[Cache Manager]
B -->|lookup| C[(Redis)]
C -->|cache hit| B
C -->|cache miss| D[Data Source / Read Model]
D -->|risposta| B
B -->|aggiorna cache| C
B -->|ritorna dati| A
Dettagli
-
Definire un modulo cache_manager
per la gestione della cache Redis. -
Implementare le funzioni get_config
,set_config
,invalidate_config
. -
Configurare il TTL e il meccanismo di refresh automatico. -
Integrare metriche e logging per osservabilità.