AdRoll es líder mundial de reorientación con más de 10 000 anunciantes activos en más de 100 países. La empresa proporciona alcance multiplataforma a través de herramientas y fuentes inventariadas de alta exposición que personalizan las campañas publicitarias en función del comportamiento de navegación de un visitante. Fundada en 2007 y con sede en San Francisco, California, la empresa gestiona anuncios de marcas como Salesforce, Tableau, Alex and Ani, Rickshaw Bags o Hipmunk.

AdRoll utiliza AWS para servir 50 000 millones de impresiones publicitarias al día (3:16)

adroll-thumb

La reorientación de la publicidad consiste en convertir visitantes de un sitio en clientes. Esta técnica es un mecanismo de generación de ingresos para empresas online de todo el mundo y AdRoll es uno de los líderes del sector, con un crecimiento del 15 000% en 2012. Para servir anuncios de forma eficaz, AdRoll necesita disponer de la flexibilidad para agregar capacidad al instante, de tiempos de respuesta a pujas ganadoras imbatibles en tiempo real y de automatización para garantizar que el sistema puede responder a las pujas con rapidez.

“Necesitamos un alto desempeño, pero eso no es todo”, afirma Valentino Volonghi, Director técnico. “Necesitamos flexibilidad y, además, un software que podamos escalar en varios centros de datos y máquinas. Un software que podamos optimizar sobre la marcha. Mover nuestras operaciones a la cloud era realmente nuestra única opción”.

Durante el despliegue de su infraestructura de subastas en tiempo real, AdRoll tuvo que sincronizar datos para todos los usuarios en cuatro regiones, con cientos de millones de usuarios y decenas de miles de escrituras por segundo. Además de hacer frente a la abrumadora tarea de escribir los datos en tiempo real, el sistema de pujas de la empresa tiene un límite de 100 milisegundos por cada solicitud de puja, por lo que AdRoll necesita un desempeño de las operaciones de lectura garantizado.

AdRoll comenzó con Amazon Simple Storage Service (Amazon S3). Poner el entorno AWS en funcionamiento llevó aproximadamente dos semanas, y ahora AdRoll almacena 1,5 PB de datos en Amazon S3. Al poco tiempo, AdRoll se dio cuenta de la utilidad de AWS fuera del contexto del almacenamiento, por lo que la empresa comenzó a mover más sistemas a la cloud de AWS. En la actualidad, las principales operaciones del sitio de AdRoll se ejecutan en 30 instancias de Amazon Elastic Compute Cloud (Amazon EC2). Otras instancias (las que sea necesario, de 200 a 1 000, incluido Amazon EC2 Spot Instances) se utilizan para ofrecer capacidad variable. “La automatización es la clave en este sector”, afirma Volonghi. “Si alguna de estas instancias fallara, otra la sustituiría automáticamente y se mantendría el funcionamiento sin intervención humana”.

Además de soluciones de almacenamiento e informática, AdRoll necesitaba una solución de base de datos de alto desempeño que satisficiera su requisito de latencia de 100 milisegundos. Después de evaluar varias alternativas, la empresa optó por DynamoDB por su baja latencia, su desempeño garantizado y la capacidad de escalar con rapidez.

DynamoDB es un servicio de base de datos NoSQL con un desempeño garantizado y una latencia inferior a 10 milisegundos. Como servicio totalmente administrado, DynamoDB proporciona replicación automática de tres vías, un desempeño optimizado, escalado del almacenamiento mediante API y una consola de gestión fácil de usar.

Las tablas de DynamoDB se componen de una clave principal (hash o hash y rango), y atributos. Su diseño sin esquema implica que cada elemento de datos puede tener un número diferente de atributos. La existencia de varios tipos de datos (cadenas, números, datos binarios y conjuntos) aporta riqueza al modelo de datos.

Las tablas de AdRoll fueron diseñadas para utilizar la cookie como clave hash y el identificador de perfil como la clave de rango con la marca temporal como atributo.

Clave hash Clave de rango Atributo
Cookie (identificador de usuario) Perfil Marca temporal
“1234” “Segment1” “1378237387”
“1234” “Segment2” “1378237417”

AdRoll utiliza claves principales hash y de rango en todas sus tablas. “Las claves hash y de rango nos permiten utilizar una única API, BatchWriteItem, para modificar diferentes elementos que pertenecen tanto a la misma clave hash como a diferentes”, afirma Volonghi. “También nos permiten consultar los datos con gran eficiencia, condensando los resultados de las operaciones de lectura en la carga más pequeña posible. Esto nos ahorra tanto costos de almacenamiento como de desempeño”.

Para sacar el máximo partido a DynamoDB, AdRoll desarrolló su propio cliente de DynamoDB. “Lo hemos utilizado en cientos de máquinas para realizar consultas rápidamente en DynamoDB con baja latencia constante en nuestra infraestructura de Erlang”, comenta Volonghi. “Solo tenemos que escribirlo, medir el desempeño de escritura y de lectura, y obtener las ventajas sin tener que analizar los detalles”. El equipo de AdRoll recomienda configurar alertas del desempeño de escritura tanto para niveles bajos como altos, para comprender cuándo hay poca capacidad o el sistema no responde.

Al utilizar Amazon DynamoDB junto con Apache Storm, AdRoll puede replicar su conjunto de datos en todo el mundo en menos de 50 milisegundos, lo que proporciona tiempos de respuesta rápidos para las pujas y la presentación de anuncios a los clientes, mientras que los costos se mantienen bajos.

AdRoll también se beneficia de la capacidad de escalado que ofrece AWS. “AWS nos proporciona la capacidad de gestionar el tráfico que viene de Facebook, Google, Yahoo y otros sitios de alto tráfico, lo que nos permite servir más de 50 000 millones de impresiones al día”, resalta Volonghi. “Además, es muy rentable. Gastamos más dinero en aperitivos para picar que en Amazon DynamoDB”.

El uso de AWS ha simplificado a AdRoll la incorporación de nuevos clientes. Cuando se incorpora un nuevo cliente, las máquinas de AdRoll deben ser capaces de gestionar todo el tráfico adicional al instante. Normalmente, en infraestructuras en las instalaciones tradicionales, la incorporación de un nuevo cliente implica el paso por un proceso de aprobaciones para obtener nuevas máquinas y agregarlas al clúster Hadoop, conseguir más almacenamiento, etc. Este proceso puede tardar hasta 90 días. “Con AWS no nos tenemos que preocupar por nada de eso”, afirma Volonghi. “Si tenemos poca capacidad, solo tenemos que escalar automáticamente unas cuantas instancias nuevas y listo”.

La empresa puede crear mercado rápidamente uniéndose a los nuevos puntos de intercambio, sin importar dónde se encuentren físicamente. “AWS tiene regiones cerca de todos los puntos de intercambio de tráfico en todo el mundo, por lo que, cuando se incorpora un nuevo intercambio, podemos aprovecharlo inmediatamente”, relata Volonghi. “Es tan sencillo como accionar un interruptor y abrir un nuevo centro de datos donde nuestras máquinas puedan recibir tráfico. Después, ya podemos comenzar a pujar. Muy sencillo”.

Volonghi destaca que AWS ha proporcionado a AdRoll las posibilidades de escalado y la capacidad bajo demanda que la empresa necesitaba para desarrollar su actividad. “Cuando nuestra empresa tuvo un pico de crecimiento realmente rápido, usar AWS nos permitió escalar y optimizar nuestros algoritmos y olvidarnos de la capacidad adicional. AWS nos ahorra tiempo y dinero. No necesitamos un centro de datos más grande, ni más personal para operaciones, ni adquirir más máquinas solo porque tengamos que escalar verticalmente”.

Para obtener más información sobre DynamoDB, visite la página de detalles de Amazon DynamoDB: http://aws.amazon.com/dynamodb/.