A AdRoll é líder global em redirecionamento com mais de 10 mil anunciantes ativos em mais de 100 países. A empresa fornece alcance multiplataforma em grandes fontes de inventário de exibição e ferramentas que personalizam as campanhas publicitárias com base no comportamento de navegação do visitante. Fundada em 2007 e sediada em San Francisco, Califórnia, a empresa trabalha com anúncios para marcas como Salesforce, Tableau, Alex and Ani, Rickshaw Bags e Hipmunk.
O redirecionamento de anúncios consiste na conversão de visitantes do site em clientes. O redirecionamento é um gerador de receita para empresas on-line no mundo inteiro, e a AdRoll é um dos líderes do setor, com crescimento de 15.000% em 2012. Mas para distribuir anúncios com eficácia, a AdRoll precisa de flexibilidade para adicionar capacidade num instante, curtíssimos tempos de resposta para ganhar lances em tempo real e automação para garantir que o sistema possa responder aos lances rapidamente.
“Precisamos de alto desempenho, mas precisamos de mais do que isso”, afirma Valentino Volonghi, CTO. “Precisamos de flexibilidade e de um software que possa ser dimensionado em vários datacenters e máquinas. Um software que possamos otimizar à medida que avançarmos. Migrar nossas operações para a nuvem era realmente a nossa única opção.”
Na implementação de sua infraestrutura de lances em tempo real, a AdRoll precisava sincronizar os dados de cada usuário em quatro regiões, em um universo de centenas de milhões de usuários e dezenas de milhares de gravações por segundo. Além de a empresa ter de lidar com a difícil tarefa de gravar esses dados em tempo real, o sistema de licitação tem um limite rígido de 100 milissegundos para cada solicitação de lance. Assim, a AdRoll precisa de garantias sólidas para o desempenho de leitura.
A AdRoll começou com o Amazon Simple Storage Service (Amazon S3). Levou cerca de duas semanas para colocar o ambiente da AWS em funcionamento, e agora está armazenando 1,5 PB de dados no Amazon S3. Em pouco tempo, a AdRoll percebeu que a AWS poderia ser útil para mais do que apenas o armazenamento. Assim, a empresa começou a migrar mais de seus sistemas para a Nuvem AWS. Agora, a parte principal do site da AdRoll é executada em 30 instâncias do Amazon Elastic Compute Cloud (Amazon EC2). Instâncias adicionais – entre 200 e 1.000, incluindo instâncias spot do Amazon EC2 – são usadas para capacidade variável. “A automação é fundamental neste negócio”, afirma Volonghi. “Se qualquer uma dessas instâncias viesse a falhar, seriam substituídas e continuariam funcionando sem qualquer intervenção humana.”
Além de soluções de armazenamento e computação, a AdRoll também precisava de uma solução de banco de dados de alto desempenho para atender à sua exigência de 100 milissegundos de latência. Após avaliar várias alternativas, a empresa optou pelo DynamoDB por sua baixa latência, taxa de transferência garantida e capacidade de se dimensionar rapidamente.
O DynamoDB é um serviço de banco de dados NoSQL com taxa de transferência gerenciada e latência abaixo de 10 milissegundos. Como um serviço totalmente gerenciado, o DynamoDB oferece replicação automática de três vias e escalabilidade transparente da taxa de transferência e do armazenamento por meio da API e de um console de gerenciamento fácil de usar.
As tabelas do DynamoDB são compostas por uma chave primária (hash ou hash e intervalo) e atributos. Com o projeto em formato schemaless, cada item de dados pode ter um número diferente de atributos. Vários tipos de dados (sequências de caracteres, números, dados binários e conjuntos) proporcionam riqueza ao modelo de dados.
As tabelas da AdRoll foram projetadas para usar o cookie como a chave de hash e o ID de perfil como a chave de intervalo, tendo o carimbo de data/hora como atributo.
Chave de hash | Chave de intervalo | Atributo |
Cookie (ID do usuário) | Perfil | Carimbo de data/hora |
"1234" | "Segment1" | "1378237387” |
"1234" | "Segment2" | "1378237417" |
A AdRoll usa chaves primárias de hash e intervalo para todas as suas tabelas. “As chaves de hash e intervalo nos permitem usar uma única API, BatchWriteItem, para modificar vários itens pertencentes às mesmas chaves de hash ou a chaves diferentes”, afirma Volonghi. “Elas também nos permitem consultar os dados de forma muito eficiente, condensando os resultados das operações de leitura na menor carga possível. Isso gera uma economia nos custos de armazenamento e taxa de transferência.”
Para obter o máximo do DynamoDB, a AdRoll desenvolveu seu próprio cliente DynamoDB. “Nós o temos usado em centenas de máquinas para consultar rapidamente o DynamoDB com uma latência consistentemente baixa em toda a nossa infraestrutura Erlang,” afirma Volonghi. “Gravamos nele, medimos a taxa de transferência de gravação e de leitura, e obtemos os benefícios sem ter de entrar muito fundo nos detalhes.” A equipe da AdRoll recomenda definir alertas para níveis altos e baixos de taxa de transferência de gravação, a fim de entender quando a capacidade está ficando baixa ou o sistema está inativo.
Usando o Amazon DynamoDB em conjunto com o Apache Storm, a AdRoll pode replicar seu conjunto de dados em todo o mundo em menos de 50 milissegundos, proporcionando agilidade na resposta tanto para lances quanto para exibir anúncios para os clientes, mantendo os custos baixos.
A AdRoll também se beneficia da escalabilidade fornecida pela AWS. “A AWS nos oferece a capacidade de lidar com o tráfego proveniente do Facebook, Google, Yahoo e de outros sites de tráfego intenso, para que possamos exibir mais de 50 bilhões de impressões por dia”, afirma Volonghi. “A solução também é bem econômica – gastamos mais com lanches do que com o Amazon DynamoDB.”
O uso da AWS facilitou a inclusão de novos clientes para a AdRoll. Quando um novo cliente entra, as máquinas da AdRoll precisam ser capazes de lidar com todo o tráfego adicional instantaneamente. Normalmente, em infraestruturas tradicionais no local, a inclusão de um novo cliente envolve um processo de aprovações para obter novas máquinas e adicioná-las ao cluster Hadoop, adquirir mais armazenamento etc. Esse processo pode levar até 90 dias. “Com a AWS, não precisamos nos preocupar com nada disso”, afirma Volonghi. “Se estamos perto de atingir o limite da capacidade, fazemos o dimensionamento automático de algumas novas instâncias e pronto.”
A empresa pode gerar negócios rapidamente participando de novas trocas, qualquer que seja sua localização física. “A AWS tem regiões próximas a todas as trocas de tráfego em todo o mundo. Assim, quando um novo ponto de troca é incluído, podemos tirar proveito dele imediatamente”, afirma Volonghi. “É tão simples quanto apertar um botão e abrir um novo datacenter onde nossas máquinas podem obter tráfego. Depois disso, podemos começar os lances. Fácil."
Volonghi credita à AWS o fornecimento da escalabilidade e da capacidade sob demanda de que a AdRoll precisava para expandir seus negócios. “Quando os nossos negócios estavam se expandindo muito rapidamente, o uso da AWS nos permitiu dimensionar e otimizar nossos algoritmos, e nos livrar da capacidade excedente. A AWS nos poupa tempo e dinheiro. Nós não precisamos de um datacenter maior, não precisamos contratar mais pessoal operacional e não precisamos adquirir mais máquinas só porque precisamos nos expandir.”
Para saber mais sobre o DynamoDB, visite a nossa página de detalhes sobre o Amazon DynamoDB: http://aws.amazon.com/dynamodb/.