Panoramica
Apache Kafka è una piattaforma per il data streaming distribuita che permette di pubblicare, sottoscrivere, archiviare ed elaborare flussi di record in tempo reale. È progettata per gestire flussi di dati provenienti da più sorgenti distribuendoli a più consumatori. In breve, consente di spostare grandi quantità di dati da un punto qualsiasi a un altro nello stesso momento.
Apache Kafka sostituisce il sistema di messaggistica aziendale tradizionale. Il sistema interno sviluppato da LinkedIn per gestire 1,4 miliardi di messaggi al giorno si è in breve trasformato in una soluzione di data streaming open source capace di soddisfare un'ampia gamma di esigenze aziendali.
Integrazione asincrona con Apache Kafka
L'ambiente di sviluppo non è più lo stesso dopo l'introduzione dei microservizi. La riduzione delle dipendenze, ad esempio i livelli di database condivisi, ha accelerato lo sviluppo delle applicazioni distribuite che però continuano a richiedere un certo grado di integrazione per consentire la condivisione dei dati. Il metodo sincrono, una nota modalità di integrazione, permette la condivisione dei dati tra gli utenti mediante interfacce di programmazione delle applicazioni (API).
Il metodo asincrono, altra modalità di integrazione, prevede invece la replica dei dati in un archivio intermedio. È questo il processo su cui interviene Apache Kafka: i dati provenienti da altri team di sviluppo vengono trasmessi nell'archivio dati e successivamente condivisi con altri team e applicazioni.
A differenza dei team di sviluppo a cascata tradizionali, i team di microservizi hanno bisogno di tre capacità fondamentali:
- Integrazioni distribuite: integrazioni leggere basate su modelli che vengono distribuite continuamente dove occorre senza essere limitate da deployment di tipo ESB centralizzati.
- API: servizi basati su API che permettono a un ecosistema di partner, clienti e sviluppatori di trarre il massimo beneficio dai servizi.
- Container: piattaforma di sviluppo, gestione e scalabilità di applicazioni cloud native e connesse. Grazie ai container è possibile sviluppare componenti agili distribuibili singolarmente, nell'ambito dei processi DevOps, e altamente disponibili poiché supportati dal cluster.
L'integrazione si trasforma così in una fase del processo di sviluppo applicativo che offre soluzioni caratterizzate da una maggiore agilità e adattabilità. La possibilità di adottare l'integrazione sincrona o asincrona, a seconda delle esigenze dell'applicazione, è una prerogativa di questo tipo di approccio, che Red Hat definisce agile integration. Apache Kafka è un'ottima soluzione quando si usa l'integrazione basata su eventi asincroni, poiché promuove l'uso dell'integrazione sincrona e delle API, supportando ulteriormente l'adozione dei microservizi e dell'agile integration. Apache Kafka può quindi assumere un ruolo rilevante nelle iniziative di semplificazione del processo di sviluppo, promozione dell'innovazione, ottimizzazione dei tempi e, in ultima analisi, accelerazione del rilascio di nuove funzionalità, applicazioni e servizi.
Risorse da Red Hat
Quando usare Apache Kafka
Apache Kafka è integrato nei flussi di data streaming che consentono la condivisione di dati tra sistemi e/o applicazioni, ma anche nei sistemi e nelle applicazioni che usano tali dati. Se ne consiglia l'utilizzo in tutti quei casi che richiedono produttività e scalabilità elevate. La sua capacità di limitare al minimo il ricorso a integrazioni point to point per la condivisione di dati in determinate applicazioni riduce infatti la latenza a millisecondi. Questo significa che gli utenti possono usufruire dei dati più velocemente; un aspetto utile in tutti quei contesti in cui i dati devono essere disponibili in tempo reale, come ad esempio i processi IT e l'e-commerce.
Riuscendo a gestire milioni di punti dati al secondo, Apache Kafka è la soluzione ideale alle problematiche legate ai big data. Ma Kafka è uno strumento utile anche per quelle aziende che non stanno ancora affrontando difficoltà di questo tipo. In molti esempi di utilizzo che implicano l'elaborazione di dati, come l'Internet of Things (IoT) e i social media, il volume di dati cresce a una velocità tale da poter rapidamente compromettere il funzionamento di applicazioni basate sui volumi di dati odierni. Occorre quindi prevedere una certa scalabilità nell'elaborazione, che consenta di rispondere alla crescente proliferazione dei dati.
Esplora ogni possibilità: accelera il rilascio di applicazioni
Per questo video sono disponibili i sottotitoli in italiano.
Come si può velocizzare il rilascio delle applicazioni? In questo video abbiamo discusso dei servizi cloud e degli scenari di utilizzo di soluzioni come Kubernetes e Apache Kafka per il data streaming.
Team operativi
I processi IT hanno un costante e urgente bisogno di accedere ai dati, poiché senza di essi sarebbe impossibile garantire il funzionamento continuo di siti web, applicazioni e sistemi. Apache Kafka è un ottimo alleato per i processi IT che si affidano alla raccolta di dati da svariate fonti, come le attività di monitoraggio, controllo, segnalazione, gestione dei registri e tracciamento dei siti web.
Internet of Things
Secondo Gartner, l'IoT arriverà a includere oltre 20 miliardi di dispositivi entro il 2020. Il valore dell'IoT risiede proprio nei dati utilizzabili generati da numerosi sensori. E Apache Kafka ha la capacità di gestire l'elevata quantità di dati che saranno forniti dall'IoT.
E-commerce
L'e-commerce può trovare in Apache Kafka un eccellente strumento per l'elaborazione di dati come clic su pagine, like, ricerche, ordini, carrelli e inventario.
I vantaggi dell'integrazione tra Kubernetes e Apache Kafka
Kubernetes offre agli sviluppatori la scalabilità di cui hanno bisogno per ospitare le applicazioni Kafka e per rendere più agile il processo di sviluppo. Kubernetes, la tecnologia su cui si basano i servizi cloud di Google, è un sistema open source che gestisce le applicazioni containerizzate, eliminando molti dei processi manuali associati ai container. Con l'utilizzo di Kubernetes, i processi di deployment, configurazione, gestione e utilizzo di Apache Kafka vengono ottimizzati.
Kafka e Kubernetes si integrano perfettamente per offrire scalabilità, elevata disponibilità, portabilità e semplicità di deployment.
La scalabilità di Kubernetes è complementare ai vantaggi offerti da Kafka. Con Kubernetes puoi aumentare o diminuire le risorse con un semplice comando o ridimensionarle automaticamente a seconda dell'utilizzo, il che consente di sfruttare al meglio la tua infrastruttura di elaborazione, l'infrastruttura di rete e l'infrastruttura di storage. In questo modo Apache Kafka ha la possibilità di condividere un numero di risorse limitato con le altre applicazioni. Grazie a Kubernetes, Apache Kafka può sfruttare un'elevata portabilità attingendo a vari provider di infrastrutture e sistemi operativi. Se integrati con Kubernetes, i cluster Apache Kafka possono inoltre spaziare tra cloud on site, cloud pubblici, cloud privati o cloud ibridi, nonché utilizzare diversi sistemi operativi.
Il blog ufficiale di Red Hat
Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.