Torna al blog
ArchitetturaKafkaStreaming

Architetture event-driven con Apache Kafka

MUSTNODE SRL11 min di lettura

Oltre la richiesta-risposta

Il modello classico request/response, in cui un servizio chiama direttamente un altro e ne attende la risposta, e semplice ma crea accoppiamento: se un servizio e lento o indisponibile, blocca chi lo chiama. Le architetture event-driven ribaltano il paradigma: i servizi producono e consumano eventi, comunicando in modo asincrono e disaccoppiato.

Cos'e un evento

Un evento e il record immutabile di qualcosa che e accaduto: "lettura sensore registrata", "ordine creato", "soglia superata". Chi produce l'evento non sa, e non deve sapere, chi lo consumera. Questo disaccoppiamento e il cuore del modello.

Apache Kafka in breve

Apache Kafka e una piattaforma di streaming distribuita che funge da spina dorsale per i sistemi event-driven. I concetti chiave:

  • Topic: un flusso di eventi a cui i produttori scrivono e i consumatori leggono.
  • Partizione: ogni topic e diviso in partizioni per scalare e parallelizzare.
  • Offset: la posizione di lettura di ciascun consumatore, gestita in modo indipendente.
  • Persistenza: gli eventi sono salvati su disco e rileggibili, non spariscono dopo il consumo.
Produttori                 Topic: telemetria              Consumatori
[gateway edge] --evento--> [ p0 | p1 | p2 ] --stream--> [ servizio allarmi ]
                                            --stream--> [ scrittura DB ]
                                            --stream--> [ analytics ]

Lo stesso evento puo essere consumato da piu servizi, ciascuno al proprio ritmo.

I vantaggi

  • Disaccoppiamento: produttori e consumatori evolvono in modo indipendente.
  • Resilienza: se un consumatore e fermo, gli eventi restano nel topic e verranno elaborati al riavvio.
  • Scalabilita: si aggiungono consumatori per parallelizzare l'elaborazione.
  • Rigiocabilita: si possono rileggere gli eventi storici, utile per ricostruire stati o alimentare nuovi servizi.

Event sourcing e CQRS

Su Kafka si costruiscono pattern avanzati:

  • Event sourcing: lo stato di un sistema e ricostruito riproducendo la sequenza degli eventi, anziche salvare solo lo stato finale. Si ottiene una storia completa e verificabile.
  • CQRS (Command Query Responsibility Segregation): si separano le operazioni di scrittura (comandi) da quelle di lettura (query), ottimizzando ciascuna in modo indipendente.

Le sfide da considerare

Il modello event-driven non e gratis:

  • la consistenza diventa eventuale, non immediata;
  • serve gestire ordinamento e idempotenza dei messaggi;
  • il debugging di flussi asincroni e piu complesso e richiede buona osservabilita.

Va adottato quando i benefici di disaccoppiamento e scalabilita superano questi costi.

Conclusione

Le architetture event-driven con Kafka sono ideali per gestire i flussi di dati ad alto volume tipici dell'IoT industriale. In MUSTNODE le adottiamo dove servono throughput, resilienza e disaccoppiamento reali, mantenendo sempre il sistema comprensibile e diagnosticabile.

Articoli correlati

Altri approfondimenti dalla categoria Architettura & Microservizi.