ETL Big Data Refactoring

ETL Big Data
Refactoring


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à:

  • 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:

  • 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.