Panoramica
Il deployment di Apache Kafka su una piattaforma di orchestrazione di container come Kubernetes consente di automatizzare, espandere e distribuire ovunque le applicazioni basate su eventi. In breve, Kubernetes amplifica la flessibilità intrinseca delle app basate su Apache Kafka.
La crescente adozione di microservizi e sviluppo cloud native da parte dei reparti IT delle aziende sta dando origine a sistemi distribuiti popolati da applicazioni basate su eventi (EDA). In questo ambiente di sviluppo dinamico, molti leader digitali scelgono di utilizzare Apache Kafka in combinazione con Kubernetes.
Apache Kafka consente agli utenti di visualizzare e analizzare un'azienda in tempo reale e reagire rapidamente alla continua evoluzione degli scenari di mercato. Apache Kafka offre inoltre un'ottima soluzione per stabilire e gestire la connettività in tempo reale sia con stakeholder interni sia con partner, fornitori e clienti esterni.
Kafka Streams: una funzionalità fornita con Apache Kafka che può essere aggiunta a qualsiasi applicazione e che consente una semplice e potente elaborazione dei flussi di eventi Kafka. Apache Kafka costituisce un'alternativa alle altre soluzioni di messaggistica, in quanto consente di elaborare e analizzare in tempo reale elevate quantità di dati in maniera continua e simultanea. Con Apache Kafka gli utenti possono aggregare, trasformare, arricchire e organizzare eventi per analisi in linea e in tempo reale, anziché attendere i risultati elaborati dai sistemi di gestione di big data. Ciò rende Apache Kafka essenziale per qualsiasi applicazione che richieda risposte immediate ai dati in tempo reale.
Apache Kafka è una base ideale per lo sviluppo cloud native. Le applicazioni cloud native sono basate su eventi e Apache Kafka è lo strumento ottimale per gestire gli eventi, perché abilita funzionalità cruciali come streaming distribuito, elaborazione in tempo reale e scalabilità elevata.
Architettura serverless: il passo successivo allo sviluppo cloud native è anch'esso basato su eventi ed è abilitato da Apache Kafka. Con Apache Kafka eseguito su Kubernetes, gli sviluppatori possono fornire notifiche scalabili serverless, comunicazioni tra processi e visibilità di funzioni serverless.
Integrare Apache Kafka con Kubernetes: i vantaggi
Apache Kafka è spesso distribuito nel sistema di gestione dei container Kubernetes, utilizzato per automatizzare le attività di deployment ed espansione e il funzionamento di container tra cluster di host. Apache Kafka su Kubernetes va di pari passo con lo sviluppo cloud native, la nuova generazione dello sviluppo di applicazioni. Le applicazioni cloud native sono servizi indipendenti, distribuiti e con basso accoppiamento, che offrono un'elevata scalabilità tramite il cloud. Allo stesso modo, le applicazioni basate su eventi e create su Kafka sono a basso accoppiamento e progettate per essere scalabili in un ambiente cloud ibrido distribuito.
Un vantaggio essenziale per i team operativi che eseguono Apache Kafka su Kubernetes è l'astrazione dell'infrastruttura: configurabile una sola volta ed eseguibile ovunque. Al giorno d'oggi i team operativi tendono a gestire svariate tipologie di risorse on premise e cloud. Kubernetes consente loro di trattare queste risorse come pool di risorse di computing a cui possono allocare i propri strumenti software, tra cui Apache Kafka. Inoltre, Kubernetes consente di utilizzare un unico ambiente per la gestione di tutte le istanze di Apache Kafka.
La scalabilità intrinseca di Kubernetes è complementare ai vantaggi offerti da Apache Kafka. Kubernetes consente alle applicazioni di aumentare o diminuire le risorse con un semplice comando o ridimensionarle automaticamente a seconda dell'utilizzo, e ciò significa ottimizzare l'utilizzo delle risorse di elaborazione, rete e storage. Se integrato con Kubernetes, Apache Kafka può inoltre essere esteso a cloud on premise, pubblici, privati o ibridi, nonché utilizzare diversi sistemi operativi.
Integrare Apache Kafka con Kubernetes grazie a Strimzi
Il funzionamento manuale di Apache Kafka è un processo complesso che richiede la configurazione di molti componenti. L'esecuzione di Apache Kafka su bare metal (o macchine virtuali) è complicata. Il deployment, il monitoraggio, l'aggiornamento e il rollback dei nodi sono laboriosi e difficili.
Il progetto open source Strimzi risolve questa complessità. Strimzi utilizza operatori per distribuire configurazioni Apache Kafka in modo graduale e lineare. Gli operatori, ovvero il metodo innovativo per il deployment e la gestione delle applicazioni su Kubernetes, garantiscono flessibilità di sviluppo perché sono astratti a livello di infrastruttura, consentendo agli sviluppatori di eseguire il deployment delle applicazioni senza molte informazioni sull'infrastruttura. Allo sviluppatore non serve conoscere i tecnicismi, ad esempio la quantità di computer o il tipo di hardware, perché gli operatori effettuano il provisioning dell'infrastruttura automaticamente e gestiscono tutti i dettagli.
Strimzi offre i vantaggi dell'Infrastructure as Code (IaC), poiché lo sviluppatore può scrivere facilmente un manuale di istruzioni simile a codice per definire l'infrastruttura e Strimzi esegue tali istruzioni. Strimzi può persino semplificare il deployment di Apache Kafka in modalità ad alta disponibilità (operazione altrimenti molto difficile).
Un altro motivo importante per utilizzare Strimzi è che l'operatore consente di risolvere molti problemi di sicurezza per Apache Kafka. Inoltre, Strimzi automatizza la sicurezza di Apache Kafka su Kubernetes con single sign on, crittografia e autenticazione, risparmiando agli sviluppatori le attività di implementazione delle funzioni di sicurezza di base.
Scegliere le soluzioni per applicazioni basate su eventi (EDA) più adatte
Streams for Apache Kafka, che fa parte di Red Hat Integration, è una distribuzione aziendale di Red Hat di Apache Kafka e del progetto Strimzi. Gran parte dei vantaggi di Apache Kafka è strettamente riconducibile al suo uso su Kubernetes o Red Hat OpenShift, che è la distribuzione Red Hat di Kubernetes.
Streams for Apache Kafka su OpenShift offre Apache Kafka su Kubernetes per abilitare architetture di livello aziendale basate su eventi che supportano flussi di dati distribuiti e applicazioni di elaborazione dei flussi basate su microservizi. Streams for Apache Kafka è particolarmente adatto a scenari su larga scala e ad alta produttività perché il partizionamento intrinseco di Apache Kafka aiuta a soddisfare i requisiti di scalabilità.