Avec plus de 10 000 annonceurs actifs dans plus de 100 pays, AdRoll figure parmi les leaders mondiaux du « retargeting » (reciblage). L'entreprise permet à ses clients de toucher leur public sur différentes plates-formes grâce à de nombreux outils et sources d'espace d'affichage. Il est ainsi possible de personnaliser les campagnes publicitaires en fonction du comportement de navigation de chaque visiteur. Créée en 2007 à San Francisco, en Californie, la société gère les publicités de marques telles que Salesforce, Tableau, Alex and Ani, Rickshaw Bags et Hipmunk.
Le reciblage publicitaire, ou retargeting, vise à convertir les visiteurs d'un site en acheteurs. Cette activité constitue une importante source de revenus pour de nombreuses entreprises opérant en ligne aux quatre coins du monde : AdRoll, qui est l'un des leaders du secteur, a enregistré une croissance de 15 000 % en 2012. Toutefois, pour diffuser des annonces de manière efficace, AdRoll doit être en mesure d'augmenter sa capacité instantanément. L'entreprise doit aussi pouvoir compter sur des temps de réponse très rapides pour remporter les enchères en temps réel et sur un certain degré d'automatisation afin que son système puisse réagir rapidement en conséquence.
« Bien sûr, nous recherchons des performances élevées, mais c'est loin d'être notre seule exigence », indique Valentino Volonghi, directeur technologique. « Nous avons également besoin de flexibilité, ainsi que de logiciels pouvant être déployés sur différents centres de données et ordinateurs, et optimisés au fur et à mesure de notre développement. A un moment donné, nous n'avions plus le choix : il fallait transférer nos opérations vers le cloud. »
Dans le cadre du déploiement de son infrastructure d'enchères en ligne, AdRoll devait synchroniser les données de chaque utilisateur pour ses quatre zones d'activité. Cela représentait des centaines de millions d'utilisateurs et plusieurs dizaines de milliers d'opérations d'écriture par seconde. AdRoll devait faire face à un défi de taille : il lui fallait non seulement parvenir à écrire ces données en temps réel, mais aussi prendre en compte un système d'enchères plafonné à 100 millisecondes par offre, qui lui imposait de disposer de garanties solides quant à ses performances de lecture.
AdRoll a d'abord adopté Amazon Simple Storage Service (Amazon S3). En deux semaines, l'environnement AWS était totalement opérationnel, permettant à AdRoll de stocker, à l'heure actuelle, 1,5 Po de données dans Amazon S3. Très vite, AdRoll a compris que les services AWS pouvaient lui être utiles dans d'autres domaines que le stockage, et a donc commencé à migrer davantage de ses systèmes vers le Cloud AWS. Aujourd'hui, l'essentiel du site d'AdRoll s'exécute sur 30 instances Amazon Elastic Compute Cloud (Amazon EC2). De 200 à 1 000 instances supplémentaires, dont des instances Spot Amazon EC2, permettent d'augmenter la capacité pour les besoins ponctuels. « L'automatisation est un impératif dans notre domaine », explique Valentino Volonghi. « Si l'une de ces instances tombe en panne, elle est automatiquement remplacée et l'activité peut se poursuivre sans aucune intervention humaine. »
Outre les solutions de stockage et de calcul, AdRoll avait besoin d'une solution de base de données à hautes performances offrant une latence maximale de 100 millisecondes pour répondre à ses exigences. Après avoir étudié de nombreuses options, la société a choisi la solution DynamoDB, qui offre une faible latence, un débit garanti et des possibilités de mise à l'échelle rapide.
DynamoDB est un service de base de données NoSQL offrant un débit garanti et une latence de quelques millisecondes seulement. En tant que service entièrement géré, DynamoDB assure une réplication automatique sur trois nœuds, ainsi qu'un dimensionnement du débit et du stockage en toute transparence via des API et une console de gestion conviviale.
Les tables DynamoDB sont constituées d'une clé primaire (hachage ou hachage et intervalle) et d'attributs. L'absence de schéma signifie que chaque élément de données peut être associé à un nombre différent d'attributs. La multiplicité des types de données (chaînes, nombres, données binaires et ensembles) contribue à enrichir le modèle de données.
Les tables d'AdRoll ont été conçues afin d'utiliser le cookie en tant que clé de hachage, l'identifiant de profil en tant que clé d'intervalle et l'horodatage en tant qu'attribut.
Clé de hachage | Clé d'intervalle | Attribut |
Cookie (ID utilisateur) | Profil | Horodatage |
"1234" | "Segment1" | "1378237387” |
"1234" | "Segment2" | "1378237417" |
AdRoll utilise exclusivement des clés de hachage-intervalle pour ses tables. « Les clés de hachage-intervalle nous permettent d'utiliser une unique API, BatchWriteItem, pour modifier plusieurs éléments appartenant ou non à la même clé de hachage », indique Valentino Volonghi. « Elles nous permettent également de lancer efficacement des requêtes sur les données, en condensant les résultats des opérations de lecture en une charge de travail aussi réduite que possible. Nous économisons ainsi sur nos coûts de stockage et de débit. »
Pour profiter au mieux de DynamoDB, AdRoll a développé son propre client DynamoDB. « Nous l'utilisons sur des centaines de machines afin de lancer des requêtes rapides dans DynamoDB, tout en maintenant une latence basse et uniforme sur notre infrastructure Erlang », explique Valentino Volonghi. « Il nous suffit d'y saisir notre code, de mesurer le débit en écriture et en lecture, puis de profiter des avantages de cette solution sans nous soucier des détails. » L'équipe AdRoll conseille de définir des alertes signalant les niveaux particulièrement bas ou élevés de débit en écriture, afin de repérer les manques de capacité et les pannes du système.
En associant Amazon DynamoDB à Apache Storm, AdRoll peut répliquer l'ensemble de ses données partout dans le monde en moins de 50 millisecondes. L'entreprise assure ainsi un temps de réponse rapide pour le placement des enchères et l'affichage des annonces de ses clients, et ce, pour un coût minime.
AdRoll profite également de l'évolutivité d'AWS. « Avec AWS, nous sommes en mesure de gérer le trafic provenant de Facebook, Google, Yahoo et d'autres sites très fréquentés, et de générer plus de 50 milliards d'impressions par jour », souligne Valentino Volonghi. « Nous y trouvons aussi notre compte au niveau financier : nous dépensons plus en collations que pour Amazon DynamoDB. »
En se reposant sur AWS, AdRoll peut désormais plus facilement intégrer de nouveaux clients. Lorsqu'un nouveau client rejoint la plate-forme, les ordinateurs d'AdRoll doivent pouvoir traiter instantanément le trafic supplémentaire qui en découle. En général, dans une infrastructure sur site classique, l'intégration d'un nouveau client implique une procédure d'approbations successives visant à acquérir de nouvelles machines et à les ajouter au cluster Hadoop, à augmenter les capacités de stockage, etc. Tout cela peut prendre jusqu'à 90 jours. « Avec AWS, plus besoin de se préoccuper de ce genre de choses », déclare Valentino Volonghi. « Si nous sommes proches de nos limites de capacité, nous dimensionnons automatiquement quelques nouvelles instances, et le tour est joué ! »
L'entreprise peut rapidement développer son activité en rejoignant de nouveaux « Ad Exchanges » (bourses d'annonces), quel que soit leur emplacement physique. « Les régions AWS nous permettent d'être au plus près de tous les sites d'échange de trafic ; dès qu'un nouveau réseau d'échange se crée, nous pouvons nous positionner dessus immédiatement », explique Valentino Volonghi. « Il nous suffit d'appuyer sur un bouton pour ouvrir un nouveau centre de données, dans lequel nos machines sont prêtes à recevoir du trafic. Ensuite, nous n'avons plus qu'à lancer les enchères. Rien de plus simple. »
Valentino Volonghi confirme qu'AWS a su fournir l'évolutivité et la capacité à la demande nécessaires au développement des activités d'AdRoll. « Notre entreprise se développait très rapidement, et AWS nous a permis de mettre à l'échelle et d'optimiser nos algorithmes, mais aussi de nous débarrasser des capacités superflues. Grâce à AWS, nous avons pu économiser du temps et de l'argent. Nous pouvons augmenter nos capacités sans pour autant devoir accroître la taille de notre centre de données, embaucher du personnel ou acquérir de nouvelles machines. »
Pour en savoir plus sur DynamoDB, consultez la page de présentation du service : http://thinkwithwp.com/dynamodb/.