• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar

J David S Carvalho

  • Currículo
  • Livros

7 milhões de usuários impactados por esse software

February 22, 2021

Em 2019, criei um software que impactou 7 milhões de usuários com pico de quase 100 mil em 24 horas, conforme o Google Analyics abaixo. Clique na imagem para expandi-la.

1. O problema

Esse negócio é composto por sites de conteúdo e um software que aplica arbitragem de tráfego.

Para contextualizar, arbitragem de tráfego possui o mesmo comportamento de arbitragem no mercado financeiro, no qual monta-se uma operação de compra e outra de venda de ativos correlacionados para lucrar com a diferença.

Na arbitragem de tráfego, compra-se tráfego (visitas de pessoas) para um site de conteúdo, que possui anúncios gerando dinheiro, para lucrar com a diferença entre a receita gerada pelos anúncios menos a despesa gasta para comprar o tráfego.

Como essa compra de tráfego funciona em real time bidding, definir o preço de compra uma vez por dia é ineficiente quando comparado a definição de preço de compra em tempo real (a cada 20 mins, por exemplo) em função do resultado financeiro (receita operacional menos despesa operacional) calculado em tempo real. Esse é o problema a ser resolvido.

2. A solução

A arquitetura da solução está na imagem abaixo. Usei uma formatação livre.

À seguir, a descrição de cada numeração da imagem.

1. Usuário do site acesso o conteúdo

Uma pessoa está lendo um conteúdo na ISTOÉ, por exemplo, e clica em uma matéria de um site de conteúdo gerenciado pelo software que criei.

O Taboola redireciona a pessoa para o site de conteúdo e torna-se usuário do site.

2. Site envia dados ao Redis

O site de conteúdo envia dados da visita (pageview) para o Redis no qual armazena esses dados em memória.

3. Crontab aciona a cadeia de processos batches

O crontab executa o início da cadeia de processos batches. Ele encontra-se configurado para executar a cada 20 minutos.

4. Execução do processo batch para cálculo de visitas

O processo batch para cálculo de visitas dos sites de conteúdo obtém do Redis os dados das visitas que nele constam e armazena-os em disco no MySQL.

Ao final do processamento de inserção desses dados, o processo apaga do Redis esses dados que foram inseridos em disco.

5. Execução do processo batch para cálculo de despesa

O processo batch para cálculo de despesa acessa o Taboola para obter o CPC de cada campanha que encontra-se rodando.

Com esses dados obtidos e os dados das visitas, o processo atualiza a despesa de cada campanha no MySQL.

6. Execução do processo batch para cálculo de receita

O processo batch para cálculo de receita acessa o Google Ad Manager para obter a receita de cada campanha rodando.

O Ad Manager é usado para gerenciar o inventário dos sites de conteúdo. A receita é originada e obtida pelo Ad Manager no Google AdSense e DoubleClick Ad Exchange.

7. Execução do processo batch para cálculo de oferta

O processo batch para cálculo de oferta acessa o Taboola para obter as campanhas rodando, acessa o MySQL para obter a receita a despesa de cada campanha, calcula o novo CPC para atingir a porcentagem de lucro desejado e previamente configurado.

Com isso, envia o novo CPC para cada campanha ao Taboola e armazena tal operação no MySQL.

8. Execução do processo batch para geração de relatório

O processo batch para geração de relatório executa uma query no MySQL para “tirar uma foto” do estado atual dos dados que o seja possível gerar gráficos, conforme visto no próximo item abaixo.

9. Usuário do software acessa o relatório

O usuário do software acessa o front-end do software para acessar os relatórios e gráficos a fim de acompanhar os dados e, se necessário, tomar uma ação. Abaixo, um exemplo para uma campanha rodando no site ISTOÉ.

 

3. A conclusão

O uso de dados em memória, assim como no software de 141 milhões de usuários, foi fundamental para que o banco de dados do software tivesse consistente armazenando os dados de todas as pageviews (imagem abaixo). Caso contrário, a despesa seria calculada errada e faria um efeito cascata negativo no software gerando prejuízo.

Como os processos batches executavam muitos dados em tempo real, foi necessário minimizar o acesso ao disco fazendo com que carregassem os dados que seriam utilizados no processamento do disco para a memória no início do processamento.

O efeito da pandemia trouxe problemas para esse negócio. É possível observar na imagem acima que o gráfico de pageviews foi à quase zero no início de Abril até o fim de Abril. Nessas semanas, eu precisei reescrever boa parte do software.

Ser antifrágil, manter as coisas simples, escrever somente código necessário e escrever componentes com alta coesão e baixo acoplamento foram fundamentais para que essa reescrita fosse bem-sucedida gerando a nova versão do software e nova versão de mim melhores do que antes.

Primary Sidebar

Recent Posts

  • 8 observações de uma grande solução de dados na GCP
  • Arquitetura e Engenharia para identificar e melhorar a maturidade da TI
  • 32 tecnologias para uma PoC de Microsserviços na AWS
  • 7 milhões de usuários impactados por esse software
  • 141 milhões de usuários impactados por esse software

Secondary Sidebar

David e Caio

Links

  • Currículo
  • Livros

Categories

  • Arquitetura
  • Engenharia