AdRoll è leader globale in retargeting, con più di 10.000 inserzionisti attivi in oltre 100 paesi. L'azienda fornisce fonti e strumenti per spazi pubblicitari che consentono di personalizzare le campagne pubblicitarie in base al comportamento di navigazione dei visitatori. Fondata nel 2007, ha sede in California, a San Francisco, e gestisce gli spazi pubblicitari per marchi quali Salesforce, Tableau, Alex and Ani, Rickshaw Bags e Hipmunk.

Il retargeting consente di trasformare i visitatori di un sito Web in clienti. Sono molte le aziende di tutto il mondo che, grazie a questo servizio, hanno aumentato i loro ricavi, rendendo AdRoll una delle aziende leader del settore, con una crescita del 15.000% nel solo 2012. Per pubblicare annunci efficaci, tuttavia, AdRoll deve poter aggiungere capacità in qualsiasi momento con la massima flessibilità, disporre di tempi di risposta istantanei per inoltrare in tempo reale le offerte alle aste e automatizzare le procedure in modo che il sistema risponda rapidamente alle aste.

"Abbiamo bisogno di prestazioni elevate, ma da sole non bastano", afferma Valentino Volonghi, direttore tecnico. "Ci occorrono grande flessibilità e un software in grado di ridimensionare le risorse su più data center e macchine, un software che possiamo ottimizzare in corso d'opera. Trasferire le nostre attività nel cloud era l'unica possibilità".

Per implementare la sua infrastruttura di inoltro di offerte in tempo reale, AdRoll doveva riuscire a sincronizzare i dati di tutti gli utenti in quattro aree geografiche, per un numero di utenti nell'ordine delle centinaia di milioni e decine di migliaia di operazioni in scrittura al secondo. Non solo AdRoll deve raggiungere l'obiettivo ambizioso di scrivere tutti questi dati in tempo reale, ma il sistema di offerta ha un limite di 100 millisecondi per ogni richiesta di offerta, perciò le performance in lettura devono essere elevatissime e costanti.

AdRoll ha iniziato utilizzando Amazon Simple Storage Service (Amazon S3). Sono state necessarie un paio di settimane per rendere operativo l'ambiente AWS e ora vi sono memorizzati oltre 1,5 PB di dati. Presto l'azienda si è resa conto che AWS poteva risultare molto utile non solo per lo storage, perciò ha iniziato a trasferire un numero sempre maggiore di sistemi nel cloud AWS. Ora il cuore del sito Web di AdRoll si trova su 30 istanze di Amazon Elastic Compute Cloud (Amazon EC2). Inoltre, impiega una quantità di istanze Spot di Amazon EC2 che oscilla tra le 200 e le 1.000 per coprire le variazioni dei requisiti di capacità. "L'automazione è il segreto del successo", spiega Volonghi. "Se in un qualsiasi numero di istanze dovesse verificarsi un errore, verrebbero sostituite automaticamente senza interrompere l'operatività e senza alcun intervento manuale".

Oltre a capacità di storage e di elaborazione, AdRoll necessitava di una soluzione di database di alto livello, in grado di mantenere la latenza sotto i 100 millisecondi. Dopo aver preso in esame diverse alternative, l'azienda ha scelto DynamoDB per la bassa latenza, il throughput e la rapida scalabilità che garantisce.

DynamoDB è un servizio di database SQL con throughput garantito e latenza nell'ordine dei millisecondi. In quanto servizio completamente gestito, DynamoDB fornisce replica a tre vie automatizzata, throughput costante e scalabilità di storage tramite API e tramite un'intuitiva console di gestione.

Le tabelle DynamoDB comprendono chiavi principali (hash o hash-and-range) e attributi. Data l'assenza di schema, gli elementi dati possono avere un numero variabile di attributi. Il modello di dati è inoltre arricchito dalla varietà di tipi di dati (stringhe, numeri, dati binari e set).

Le tabelle AdRoll sono state progettate per l'utilizzo del cookie come chiave hash e dell'ID profilo come chiave range con time stamp come attributo.

Chiave hash Chiave range Attributo
Cookie (ID utente) Profilo Time stamp
"1234" "Segment1" "1378237387”
"1234" "Segment2" "1378237417"

AdRoll impiega chiavi principali hash-and-range per tutte le sue tabelle. "Le chiavi hash-and-range ci consentono di usare una singola API, BatchWriteItem, per modificare diversi elementi appartenenti alle stesse chiavi hash o a chiavi differenti", spiega Volonghi. "Tramite le chiavi, inoltre, possiamo eseguire query di dati in modo molto efficiente, comprimendo i risultati delle operazioni di lettura in payload con le minori dimensioni possibili. Queste operazioni contribuiscono a risparmiare sui costi di storage e di throughput".

Per ottenere il massimo da DynamoDB, AdRoll ha sviluppato un proprio client DynamoDB. "Lo usiamo su centinaia di macchine per elaborare rapidamente query su DynamoDB con latenze costantemente basse su tutta l'infrastruttura Erlang", prosegue Volonghi. "Avviamo le operazioni di scrittura, calcoliamo il throughput in lettura e in scrittura e godiamo dei vantaggi senza dover entrare nei dettagli". Il team di AdRoll consiglia di impostare avvisi sui picchi di throughput di scrittura, sia inferiori sia superiori, per determinare quando la capacità si sta esaurendo o si è verificata un'interruzione del sistema.

Usando Amazon DynamoDB insieme ad Apache Storm, AdRoll è in grado di replicare i set di dati in tutto il mondo in meno di 50 millisecondi e fornire tempi di risposta minimi sia nell'inoltro di offerte sia nella pubblicazione di annunci, tenendo sempre sotto controllo i costi.

AdRoll ottiene grandi vantaggi dalla scalabilità offerta da AWS. "AWS ci consente di gestire il traffico proveniente da siti Web molto trafficati quali Facebook, Google e Yahoo, in modo da pubblicare oltre 50 miliardi di impressioni al giorno", racconta Volonghi. "È una soluzione estremamente economica... Spendiamo più in snack che per Amazon DynamoDB".

Grazie ad AWS, il numero di clienti di AdRoll è in costante crescita. Quando si stabiliscono i contatti con un nuovo cliente, il servizio di AdRoll deve essere in grado di gestire fin da subito tutto il nuovo traffico. In genere, quando si usano le classiche infrastrutture in locale, l'arrivo di un nuovo cliente è seguito da una serie di procedure complesse, quali l'approvazione dell'acquisto di nuove macchine, l'installazione in un cluster Hadoop, l'acquisto di hardware di storage e così via. Tutte queste operazioni possono richiedere anche 90 giorni. "Con AWS non dobbiamo più preoccuparci di tutto ciò. Se stiamo per raggiungere il limite di capacità, vengono aggiunte automaticamente alcune nuove istanze e il gioco è fatto".

L'azienda è in grado di ampliare il volume di affari in modo rapido unendo nuovi scambi, indipendentemente dalla loro posizione geografica. "AWS dispone di regioni in tutto il mondo per gli scambi di traffico, perciò quando si prospetta un nuovo scambio possiamo trarne vantaggio immediatamente", chiarisce Volonghi. "È semplice come premere un interruttore e aprire un data center nell'area geografica dove le nostre macchine riceveranno più traffico. Dopodiché, iniziamo con le offerte. Più semplice di così!"

Per Volonghi, AWS ha il merito di fornire scalabilità e capacità on demand senza le quali AdRoll non avrebbe gli stessi risultati. "Quando la nostra società ha avuto una crescita vorticosa, AWS ci ha consentito di ridimensionare le risorse e ottimizzare i nostri algoritmi senza acquisire capacità in eccesso. Grazie ad AWS abbiamo risparmiato un sacco di soldi. Quando dobbiamo acquisire nuove risorse, non ci occorre più un data center più grande, né altri tecnici di assistenza o nuove macchine".

Per ulteriori informazioni su DynamoDB, consulta la relativa pagina dei dettagli: http://aws.amazon.com/dynamodb/.