ETL Big DataRefactoring
Il cliente
Il nostro cliente è un’importante data company operante da 25 anni in ambito marketing sul territorio italiano e il cui core business riguarda il supporto delle aziende nell’acquisizione selezionata e qualitativa dei clienti e dei partner.
Lo stato dell’arte
Le procedure ETL (Extract, Transform and Load) esistenti presso il cliente memorizzavano i dati su database relazionali alimentati tramite sorgenti dati di varia natura, in maniera incrementale, aggiornando i dati esistenti con le nuove informazioni. Tale obsolescenza determinava notevoli problematiche, nello specifico:
- lentezza delle procedure ETL esistenti, poiché sviluppate con tecnologie difficilmente scalabili e parallelizzabili;
- scarsa manutenibilità del codice, a causa delle tecnologie utilizzate ormai in disuso;
- costi elevati e difficoltà nel monitoraggio dei diversi step delle procedure;
- presenza di bug che generavano anomalie ed incongruenze dei dati e su cui si riusciva difficilmente ad intervenire;

La sfida
Il cliente ha quindi deciso, supportato dai nostri consulenti, di sfruttare tecnologie Big Data per la riscrittura delle procedure con l’obiettivo di:
- velocizzare i tempi di esecuzione risolvendo le anomalie introdotte dalle procedure in uso;
- applicare trasformazioni ed integrare più sorgenti dati ad ogni step della computazione sfruttando le logiche già esistenti;
- schedulare e monitorare l’esecuzione delle pipeline;
- analizzare i dati mantenendo i software già in adozione al fine di azzerare i costi di formazione delle risorse coinvolte.
La soluzione
Per soddisfare i requisiti si è quindi scelto di adottare le seguenti tecnologie:
- Python e Apache Spark per sviluppare ed eseguire le pipeline dati, riscrivendo le logiche di integrazione, matching e trasformazione e sfruttando la parallelizzazione e la scalabilità offerti dal framework;
- Amazon S3 e HDFS per lo storage distribuito e replicato dei dati durante tutte le fasi della computazione (input, risultati intermedi e output);
- Infrastruttura Cloud per l’elaborazione, considerando che le pipeline vengono eseguite ad intervalli regolari e per un tempo limitato e che quindi non è necessaria un’infrastruttura on-premise che comporta costi di gestione molto più elevati (es: manutenzione, indisponibilità o inutilizzo delle risorse, tempi di SLA potenzialmente variabili, obsolescenza);
- Apache Airflow per il provisioning dell’infrastruttura cloud, lo scheduling ed il monitoraggio delle pipeline.
I vantaggi
Mediante l’applicazione delle tecnologie suesposte, si è riusciti ad ottenere notevoli incrementi in termini di velocità nell’esecuzione delle operazioni, qualità del dato e scalabilità dell’infrastruttura e notevoli riduzioni dei costi.
Maggiore velocità:
Maggiore velocità:
- i tempi complessivi di esecuzione delle pipeline sono stati ridotti dell’85%: step eseguiti prima in 3
ore richiedono ora meno di 30 minuti; - le pipeline sviluppate operano sull’intero set di dati, con un throughput di 1000 righe/secondo; le
procedure ETL precedentemente utilizzate operavano su un subset ridotto di dati, con un throughput
di 3 righe/secondo; - i dati vengono acquisiti in pochi secondi: basta infatti caricarli su S3 perché risultino immediatamente
disponibili per la computazione.
Minori costi:
Minori costi:
- l’utilizzo di una soluzione cloud, in modalità “pay-as-you-go”, consente di sfruttare la potenza di calcolo del cluster soltanto quando ce n’è bisogno e disattivarlo alla fine della computazione, evitando di incorrere in costi non desiderati;
- Non è stato necessario formare le risorse che analizzano i dati interessati, visto che lo storage avviene parallelamente anche sui database relazionali già esistenti; in base ai requisiti del cliente, infatti, i software per l’analisi sono rimasti gli stessi utilizzati in precedenza.
Qualità e scalabilità migliorate:
- i dati ora non presentano più le anomalie riscontrate in precedenza: è migliorata la qualità delle informazioni fornite ai clienti;
- è ora possibile monitorare i diversi step delle pipeline al fine di individuare eventuali colli di bottiglia;
- grazie alla flessibilità delle soluzioni cloud risulterebbe facile scalare ed ottimizzare l’infrastruttura utilizzata, qualora si rivelasse necessario incrementare le risorse.