I Big Data per l’Online Advertising

 In Big Data, Machine Learning

I Big Data per l'Online AdvertisingViviamo in una realtà nella quale abbiamo la possibilità di collegarci ai contenuti 24 ore su 24, 7 giorni su 7, e ci piace che sia così.

Nielsen dichiara in una survey online a cui hanno partecipato intervistati provenienti da tutto il mondo che il 76% dei fruitori della rete apprezza la possibilità di essere connesso in qualsiasi momento e da qualsiasi luogo.

Se da una parte i consumatori amano questa flessibilità, d’altra parte questa rappresenta un’enorme sfida per i brand e per gli Online Advertiser, che cercano di guidare l’attenzione degli utenti e dei consumatori.

L’Online Advertising è una disciplina relativamente nuova, nata agli inizi degli anni ’90 con la diffusione del World Wide Web. Dopo pochi anni in cui, sul web, hanno dominato semplici banner pubblicitari mostrati unicamente sui siti principali, le aziende iniziarono a sperimentare e consolidare diverse forme e strategie per pubblicizzare i propri prodotti online, definendo standard e best practice su Display Advertising, Search Engine Marketing e sugli altri canali. Secondo il report “Internet Advertising Revenue” (di IAB), i ricavi provenienti dalla pubblicità online per gli USA a partire dal 2010 sono cresciuti, anno dopo anno, raggiungendo nel terzo trimestre del 2014 la cifra di 12,4 miliardi di dollari.

In questa industria altamente esigente e competitiva gli strumenti che supportano ricerche e analisi sono essenziali: nessuno vuole investire su publisher poco redditizi e ogni advertiser ha bisogno di metodi scientifici per dimostrare quanto siano efficienti le campagne in termini di ROAS (Return On Advertising Spending). Gli strumenti di Analytics stanno diventando sempre più sofisticati e riescono a risolvere problematiche complesse fornendo evidenze preziose per le azioni e gli investimenti di marketing.

I tre principali requisiti che un tool di Analytics Big Data deve avere per gestire le esigenze dell’Online Advertising sono:

  • Real-time: le interrogazioni devono poter essere eseguite su dataset che si aggiornano in tempo reale;
  • Volume: i dati raccolti sono frequentemente quantificati in terabyte, se non addirittura in petabyte, su base giornaliera;
  • Velocità: le interrogazioni su dataset di grandi dimensioni devono restituire risultati in tempi brevi, assecondando gli obiettivi di business.

Negli ultimi anni numerose tecnologie si sono approcciate a questo tipo di problemi, proponendo soluzioni efficienti. Tra le più popolari, Spark è risultato il motore analitico più veloce per processare grosse quantità di dati, rispondendo a tutti requisiti precedenti. Spark include inoltre un modulo specifico per lo streaming che risulta essere una delle migliori soluzioni per l’elaborazione e l’analisi dei flussi in tempo reale.

La Competition di Stratio sui Big Data per l’Online Advertising

La sfida lanciata da Stratio è stata quella di disegnare un’architettura Big Data per risolvere i problemi analitici di una immaginaria azienda di Online Advertising.

Si suppone che l’architettura in uso nell’azienda sia basata su una API di tipo REST che riceve tre eventi (Impression, click e ordini) e alimenta di conseguenza una base dati MySQL. In questa base dati sono inoltre implementate delle logiche relative alla validità degli eventi ricevuti, per esempio sono esclusi dalle analisi finali i click ricevuti oltre 6 ore dalla relativa Impression e gli acquisti ricevuti dopo un mese dal relativo click.

Gli eventi ricevuti hanno la seguente struttura:

  • Impression: ID univoco, paese, browser, campagna, advertiser, publisher, timestamp;
  • Click: ID univoco, timestamp, ID Impression relativa;
  • Ordini: ID univoco, timestamp, ID click relativo.

Questa struttura, raccogliendo una enorme quantità di dati, obbliga gli analisti a dover aspettare numerose ore di elaborazione per poter estrapolare informazioni utili.

Le necessità di analisi sono:

  • Ottenere il numero di Impression, click e acquisti in un periodo di tempo determinato;
  • Ottenere le misure precedenti raggruppando per una o più variabili;
  • Poter interrogare la base dati in maniera simultanea alla ricezione degli eventi;
  • Ottenere una granularità massima del tempo di un’ora;
  • Riuscire a consultare i dati relativi a eventi ricevuti nell’ora precedente.

La soluzione che BitBang ha proposto per risolvere la competizione può essere implementata in linguaggio Scala, sfruttando le librerie di Akka, Spray e Spark.

Akka è una tecnologia open-source che permette di realizzare applicazioni guidate da messaggi in modo distribuito e altamente concorrente. L’elemento principale in Akka è l’attore, una entità concorrente e leggera in grado di elaborare messaggi in modo asincrono, che aumenta il livello di astrazione rendendo più facile la scrittura e la manutenzione di sistemi distribuiti.

Spray fornisce la possibilità di creare delle API di tipo REST basate sugli attori di Akka in modo flessibile e asincrono. È una tecnologia open-source modulare che ci consente di utilizzare la componente spray-can per creare un semplice server HTTP tramite il quale è possibile catturare dati su Impression, click e acquisti, ed è possibile utilizzare le funzionalità di routing per descrivere il comportamento delle API.

Attraverso questa architettura ogni singolo elemento ricevuto dalle API Spray è inviato come messaggio da un attore al contesto streaming di Spark, in questo modo si riesce a sfruttare il design asincrono e distribuito degli attori, nonché la possibilità di creare gerarchie locali o remote di attori.

Il contesto streaming di Spark genera un flusso di RDD, chiamato DStream, e fornisce la possibilità di eseguire operazioni window-based su di questi. Questa soluzione consente di eseguire analisi real-time tramite il modulo SQL di Spark senza dover attendere lunghi periodi di elaborazione.

Allo stesso tempo ogni RDD proveniente dal flusso di Spark è memorizzato in un livello di storage su HDFS, consentendo comunque di eseguire job di elaborazione di tipo batch sui dati per analisi più complicate. In questo punto dell’architettura vengono implementate tramite le funzioni core di Spark le assunzioni fornite dalla competition (al massimo 6 ore tra una Impression e il click e al massimo 1 mese tra il click e l’acquisto).

È possibile inoltre utilizzare la funzionalità thrift server di Spark per consentire a strumenti esterni di creare la più appropriata visualizzazione dei dati.

 

Diagramma dell'architettura Big Data per l'Online Advertising

Diagramma dell’architettura

L’architettura descritta consente di eseguire le analisi senza dover aspettare numerose ore di elaborazione dati e permette di scegliere tra un’analisi di tipo real-time, fondamentale per esempio in ottica di Ad Performance Monitoring, e una batch-based per interrogazioni più complesse.

Inoltre, essendo una soluzione scalabile, è particolarmente adatta al processing di volumi di dati sempre maggiori, con l’ulteriore possibilità di aggiungere tecnologie come Apache Kafka o Apache Flume per l’integrazione con altri sistemi di streaming.

La partecipazione alla Competition di Stratio ha permesso di dimostrare quanto le tecnologie precedentemente descritte siano flessibili e pronte per affiancare o sostituire le architetture più classiche e diffuse.

Tra le architetture proposte dai partecipanti, quella di BitBang è risultata la migliore e la più adatta a risolvere i quesiti posti, aggiudicandosi il primo posto.