Skip to content

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 o aioredis (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à.