Parlare di messaging sembra fare tanto anni Novanta, eppure molte delle soluzioni e delle architetture che si propongono ora come base delle applicazioni frammentate in microservizi e come soluzioni per far convivere l’IT vecchia e nuova sono concettualmente basate proprio sui paradigmi del messaging.
Ovviamente convertiti alla visione del Terzo Millennio. Fra questi c’è anche Apache Kafka, che nasce proprio come soluzione “fatta in casa” per collegare parti diverse dell’IT aziendale. Ma di un’azienda con esigenze particolari: LinkedIn.
A sviluppare Kafka è infatti un gruppo di sviluppatori del social network professionale. Siamo nel 2008 e l’esigenza da risolvere è combinare la grande quantità di dati che arrivano sulla piattaforma online con le funzioni di analytics.
La parte transazionale è veloce e quella analitica anche, è la comunicazione fra le due che deve essere migliorata. A collegarle è un sistema di messaging che dovrebbe, nelle intenzioni, supportare le varie applicazioni di LinkedIn. È questo che va migliorato ma non sembrano esserci sul mercato soluzioni adeguate, da qui l’idea di creare un prodotto nuovo: Kafka.
Kafka, che diventa poi un progetto open source nel 2011, prende quindi le mosse dai limiti sperimentati in LinkedIn. È sempre un sistema di messaging ma secondo i suoi creatori è stato migliorato nella capacità di gestire un flusso continuo di messaggi in grandi volumi, un’esigenza che le tradizionali piattaforme di messaging non si erano poste e che rende invece il nuovo progetto adatto ad applicazioni come quelle di IoT e tutte quelle in real-time.
Altre sue caratteristiche fondanti sono la natura estremamente distribuita e lo storage dei messaggi, necessario a garantirne l’arrivo anche in infrastrutture in cui non sempre i nodi riceventi sono attivi. E soprattutto la possibilità di operare direttamente sui messaggi con funzioni di organizzazione, trasformazione e selezione. Senza richiedere elementi esterni.
L’importanza dello streaming
Per i creatori di Kafka – che nel frattempo hanno fondato una loro società, Confluent – è però la gestione dello streaming dei dati il punto chiave per il futuro della piattaforma. L’idea è che gran parte delle imprese si stia muovendo verso ambienti con streaming di dati in tempo reale e questo permetta a Kafka, con le sue varie evoluzioni, di diventare un asse portante per tutto lo sviluppo applicativo di queste realtà.
Anche la transizione ai microservizi viene considerata un fattore di accelerazione per Kafka. Non in tutte le realtà, ma laddove i microservizi vengono usati per la gestione di eventi asincroni certamente sì. Avere servizi asincroni introduce la possibilità che eventi o informazioni si perdano, una piattaforma nata proprio per garantire la certezza della consegna dei messaggi risolve il problema. O perlomeno intende farlo.
Nell’evoluzione di Kafka, Confluent ha aggiunto il passo in più che può agevolare la sua diffusione. Apache Kafka è una piattaforma software e va bene per chi abbia le risorse e le competenze necessarie. Confluent propone invece Kafka “as a Service” attraverso un servizio cloud, togliendo alle aziende utenti il peso dell’implementazione e portandole direttamente alla fase di sviluppo.