Quasi tutti i processi decisionali tecnologici devono soddisfare due criteri essenziali: deve consentirti di raggiungere i tuoi obiettivi di business e deve funzionare bene insieme al resto del tuo stack tecnologico. Quando si tratta di selezionare le tecnologie a livello di dati per creare l’architettura dell’applicazione, Apache Cassandra, Apache Kafka, Apache Spark e Elasticsearch open source continuano a crescere in popolarità.
Tuttavia, non sono la scelta giusta per ogni caso d’uso.
Diamo uno sguardo più profondo a ciascuna di queste tecnologie, e alcuni dei casi d’uso che sono – e non sono – applicazioni vantaggiose di queste soluzioni open source.
- Apache Cassandra
- Quando dovresti usare Apache Cassandra
- Quando non dovresti
- Apache Kafka
- Quando si dovrebbe usare Apache Kafka
- Quando non dovresti
- Apache Spark
- Quando si dovrebbe usare Apache Spark
- Quando non dovresti
- Elasticsearch
- Quando è necessario utilizzare Elasticsearch
- Quando non si deve
- Selezione di tecnologie complementari
Apache Cassandra
Originariamente creato da Facebook nel 2007, Cassandra utilizza un’architettura Dynamo e un modello di dati in stile Bigtable per fornire un archivio dati NoSQL che offre elevata disponibilità ed elevata scalabilità.
Quando dovresti usare Apache Cassandra
Cassandra è la scelta ideale per i casi d’uso che richiedono i più alti livelli di disponibilità always-on. Il database è anche particolarmente adatto a servire le organizzazioni che prevedono carichi di lavoro massicci o che desiderano garantire che i loro servizi possano crescere in modo flessibile man mano che i carichi di lavoro si espandono (e quindi necessitano della facile scalabilità fornita da Cassandra). Cassandra offre ridondanza affidabile dei dati e operazioni attive-attive su più data center.
Quando non dovresti
Cassandra è più dispendiosa di risorse rispetto alle alternative quando si occupa di data warehousing o storage di analisi pura (anche considerando l’uso di connettori Spark disponibili e plug-in Tableau e Hadoop). Cassandra è anche poco adatto all’analisi in tempo reale, specialmente sotto forma di query ad hoc o personalizzate dell’utente finale, perché la necessità di implementare il codice sul lato dell’applicazione può diventare complicata. Inoltre, Cassandra non soddisfa la maggior parte dei requisiti ACIDI.
Apache Kafka
Creato per la prima volta dal team tecnico di LinkedIn, Apache Kafka fornisce una piattaforma di streaming e un bus di messaggi altamente scalabile e altamente disponibile. Kafka funziona come un registro distribuito, in cui i messaggi appena arrivati vengono aggiunti alla testa di una coda e i lettori (consumatori) li consumeranno in base a un offset.
Quando si dovrebbe usare Apache Kafka
Apache Kafka è generalmente una scelta intelligente per casi d’uso che coinvolgono microservizi e architettura orientata ai servizi. Kafka può anche fungere da coda di lavoro altamente efficace in grado di coordinare percorsi di lavoro separati, riservando potenza di calcolo ascoltando e aspettando l’arrivo del lavoro. Le funzionalità di elaborazione del flusso della piattaforma sono utili per il rilevamento delle anomalie, i roll-up e le aggregazioni, nonché per il passaggio delle metriche. Kafka è anche un’opzione altamente capace per il sourcing degli eventi, la riconciliazione dei dati tra vari microservizi e per fornire un registro di commit esterno per i sistemi distribuiti. Altri casi d’uso appropriati includono l’aggregazione dei log, il mascheramento e il filtraggio dei dati, l’arricchimento dei dati e il rilevamento delle frodi.
Quando non dovresti
Mentre potrebbe essere allettante in alcuni casi, può essere sconsigliato usare Kafka come database o source-of-record, almeno senza una comprensione molto solida delle limitazioni e delle proprietà di Kafka per questo caso d’uso. Un vero database sarà quasi sempre più semplice da utilizzare e più flessibile. Kafka è una scelta altrettanto inappropriata per l’elaborazione in ordine su un intero argomento. In ogni caso d’uso in cui l’obiettivo è quello di avanzare rapidamente i pacchetti di dati alla sorgente finale, come audio e video in tempo reale o altri flussi di dati con perdita di dati, le organizzazioni dovrebbero utilizzare soluzioni appositamente progettate invece di Kafka.
Apache Spark
Un framework di calcolo cluster di uso generale adatto a casi d’uso che coinvolgono grandi volumi di dati, Apache Spark divide i dati ed esegue il calcolo su tali segmenti, in modo tale che i lavoratori eseguano tutto il lavoro possibile fino a quando non richiedono dati da altri lavoratori. Questo design conferisce a Spark un’enorme scalabilità e disponibilità, rendendolo anche altamente resiliente contro la perdita di dati.
Quando si dovrebbe usare Apache Spark
Spark si presta a casi d’uso che coinvolgono analisi su larga scala, in particolare i casi in cui i dati arrivano tramite più fonti. Spark è una soluzione potente per ETL o qualsiasi caso d’uso che include lo spostamento di dati tra sistemi, sia quando viene utilizzato per popolare continuamente un data warehouse o un data lake da archivi di dati transazionali, o in scenari una tantum come database o migrazioni di sistema. Le organizzazioni che costruiscono pipeline di apprendimento automatico su dati esistenti, lavorano con streaming ad alta latenza o eseguono analisi interattive, ad hoc o esplorative troveranno Spark una soluzione efficace. Spark si presta anche ad aiutare le organizzazioni a soddisfare le loro esigenze di conformità offrendo il mascheramento dei dati, il filtraggio dei dati e il controllo di set di dati di grandi dimensioni dal punto di vista della conformità.
Quando non dovresti
In generale, Spark non sarà la scelta migliore per i casi d’uso che coinvolgono l’elaborazione in tempo reale o a bassa latenza. (Apache Kafka o altre tecnologie offrono una latenza end-to-end superiore per queste esigenze, inclusa l’elaborazione del flusso in tempo reale.) Quando si lavora con set di dati piccoli o singoli, Spark è spesso un’opzione troppo eccessiva. Inoltre, quando si tratta di data warehousing e data lake, è meglio utilizzare una tecnologia di livello superiore al posto di Apache Spark, sebbene esistano tali prodotti per Spark.
Elasticsearch
Elasticsearch offre un motore di ricerca full-text che offre una vasta gamma di funzionalità per cercare e analizzare i dati non strutturati. La tecnologia offre una ricerca lineare scalabile quasi in tempo reale, offre una robusta sostituzione della ricerca drop – in e funzionalità di analisi significative.
Quando è necessario utilizzare Elasticsearch
Elasticsearch è particolarmente adatto per casi d’uso che richiedono ricerca full-text, ricerca geografica, scraping e combinazione di dati pubblici, registrazione e analisi dei log, visualizzazioni e dati e metriche di eventi di piccolo volume.
Quando non si deve
Elasticsearch non deve essere utilizzato come database o source-of-record, con dati relazionali o per soddisfare i requisiti ACID.
Selezione di tecnologie complementari
Scegliere il miglior mix di tecnologie per la tua organizzazione (sia open source che in altro modo) comporta ovviamente più di una semplice valutazione delle soluzioni stesse – i decisori devono anche immaginare come l’organizzazione adotterà e utilizzerà ogni soluzione come parte del loro stack tecnologico. Apache Cassandra, Apache Kafka, Apache Spark e Elasticsearch offrono un set particolarmente complementare di tecnologie che hanno senso per le organizzazioni da utilizzare insieme e che offrono libertà dai costi di licenza o dal blocco dei fornitori grazie alla loro natura open source. Unendo queste tecnologie e realizzando i vantaggi raccolti, le organizzazioni possono raggiungere i loro obiettivi e consentire lo sviluppo di applicazioni altamente scalabili, disponibili, portatili e resilienti.
Ben Slater è il Chief Product Officer di Instaclustr, che fornisce una piattaforma di servizi gestiti di tecnologie open source come Apache Cassandra, Apache Spark, Elasticsearch e Apache Kafka.
Articoli correlati:
Ecco cosa dice Doug Cutting è il più grande contributo di Hadoop
Un decennio dopo, Apache Spark continua ad andare forte