O documento discute o sistema de cache do Boo-Box para melhorar o desempenho e escalabilidade. Inicialmente usava CouchDB e Beanstalkd, mas isso causava problemas de tempo de resposta, limites de requisições e indisponibilidade. Agora usa Redis e Beanstalkd, reduzindo drasticamente o uso de recursos e melhorando a velocidade.
4. Formatos
Monetização diferenciada
Excelência Liberdade de escolha
Transparência
Velocidade
Originalidade Simplicidade
Estatísticas
Targeting
6. Felipe Luis de Souza Vieira
@felipetio
http://felipetio.net
7. Formatos
Monetização diferenciada
Excelência Liberdade de escolha
Transparência Idealismo
Velocidade
Originalidade Simplicidade
Estatísticas
Targeting
8. Targeting
Que informações
Quais sites
temos sobre ele?
foram visitados?
O que ele
De onde ele é? procura?
9. Targeting
User Classificação
behaviour Que informações
de textos
Quais sites
temos sobre ele?
foram visitados?
O que ele
De onde ele é? procura?
Inteligência
Geo
artificial
localização
11. Formatos
Não sei deixar nada bonito na web,
Nem nesssa apresentação (obrigado @fmafra),
12. Formatos
Não sei deixar nada bonito na web,
Nem nesssa apresentação (obrigado @fmafra),
Ainda não consigo desenvolver layouts com mais de 16 cores.
39. Redis
Como memcache Diferente do memcache
Key-values store Operações avançadas com as keys
Dados na memória Escalabilidade
Cache implementado Persistência
40. Redis
Como memcache Diferente do memcache
Key-values store Operações avançadas com as keys
Dados na memória Escalabilidade
Cache implementado Persistência
Em números:
110.000 SETs/sec
81.000 GETs/sec
41. Fluxo do request
Servidor Fila Cache API
Shop/Tags
Adiciona p/
atualização
Tem Produtos (sim)
Pega Produtos
Log
Produtos
42. Fluxo do request
Servidor Fila Cache API
Shop/Tags
Adiciona p/
M atualização
E
M
C
Tem Produtos (sim)
A
C
H Pega Produtos
E
Log
Produtos
43. Fluxo do request
Servidor Fila Cache API
Shop/Tags
Adiciona p/
M atualização
E
M Tem Produtos (não)
C
A
C Pega Produtos
H
E
Salva
Log
Produtos
44. Fluxo do request
Servidor Fila Cache API
Shop/Tags
Requisita
M atualização
E
M Tem Produtos (não)
C
A
C Pega Produtos (demorou)
H
E
Pega Produtos Similares
Log
Produtos
45. Fluxo de atualização do cache
Daemon Fila Cache API
Pega Shop/Tags
Velho?
Pega produtos
Salva
(loop)
54. Felipe Luis de Souza Vieira
@felipetio
felipe@boo-box.com
http://felipetio.net
Notes de l'éditeur
Quem conhece a boo-box?
Quem ultiliza boo-box, adsense, hotwords?
E suma, trabalhamos a fim de transformar a forma como a publicidade online é feita, oferecendo soluções inovadoras de contextualização e formatos que permitam aos publishers e anunciantes aproveitarem e complementarem o conteúdo, seja com ofertas de produtos e até mesmo campanhas.
Veicular produtos e campanhas parece um trabalho simples mas torna-se muito arduo quando se tem milhões de visualizações diarias e milhares de publisher que não exitariam em trocar a boo-box por outro serviço se nossas “vitrines” não tiver qualidade...
Mas afinal... O que é qualidade?
Para ser a referência em veiculação de publicidade em mídias sociais, todos os que trabalham na boo se preocupam com diversos valores!
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Entre eles podemos citar: Targeting; Formatos e Velocidade.
Pois esses itens recebem um cuidado especial dos “ninjas” da boo.
Desenvolvedor web a 3 anos, formando em informática no interior, entusiasta de software livre, pugilista amador 3 vezes por semana e atualmente um programador do time da boo, o que faz de mim um ninja!
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Voltando ao ponto... Vamos nos apegar aos itens destacados pois eles interferem diretamente na vizualização das ofertas de produtos.
Apenas a contextualização pode transformar a publicidade em parte do conteúdo onde ela foi renderizada.
A boo tem realizado muitos estudos nesta área a fim de aumentar a qualidade dos produtos e campanhas apresentadas.
Contudo, a contextualização pode e deve estar voltada para o usuário que está navegando...
Para responder essas perguntas muitos estudos têm sido realizados e muitos projetos estão em andamento.
Apenas a contextualização pode transformar a publicidade em parte do conteúdo onde ela foi renderizada.
A boo tem realizado muitos estudos nesta área a fim de aumentar a qualidade dos produtos e campanhas apresentadas.
Contudo, a contextualização pode e deve estar voltada para o usuário que está navegando...
Para responder essas perguntas muitos estudos têm sido realizados e muitos projetos estão em andamento.
Apenas a contextualização pode transformar a publicidade em parte do conteúdo onde ela foi renderizada.
A boo tem realizado muitos estudos nesta área a fim de aumentar a qualidade dos produtos e campanhas apresentadas.
Contudo, a contextualização pode e deve estar voltada para o usuário que está navegando...
Para responder essas perguntas muitos estudos têm sido realizados e muitos projetos estão em andamento.
Apenas a contextualização pode transformar a publicidade em parte do conteúdo onde ela foi renderizada.
A boo tem realizado muitos estudos nesta área a fim de aumentar a qualidade dos produtos e campanhas apresentadas.
Contudo, a contextualização pode e deve estar voltada para o usuário que está navegando...
Para responder essas perguntas muitos estudos têm sido realizados e muitos projetos estão em andamento.
Vamos aos fatos.... Como desenvolverdor server side eu sei que...
Vamos aos fatos.... Como desenvolverdor server side eu sei que...
Vamos aos fatos.... Como desenvolverdor server side eu sei que...
Quando navego na internet eu busco pelo conteúdo bem apresentado, bonito!
O fato é que um produto bem contextualizado pode não valer nada se não for bem apresentado e entende-se por bem apresentado produtos que atraem (e não roubem) a atenção dos usuários. Para isso precisamos de muita criatividade, trabalhar com tecnologia de ponta, inovando sempre e pegando carona (ou até mesmo criando) tecnologias emergentes.
O fato é que um produto bem contextualizado pode não valer nada se não for bem apresentado e entende-se por bem apresentado produtos que atraem (e não roubem) a atenção dos usuários. Para isso precisamos de muita criatividade, trabalhar com tecnologia de ponta, inovando sempre e pegando carona (ou até mesmo criando) tecnologias emergentes.
O fato é que um produto bem contextualizado pode não valer nada se não for bem apresentado e entende-se por bem apresentado produtos que atraem (e não roubem) a atenção dos usuários. Para isso precisamos de muita criatividade, trabalhar com tecnologia de ponta, inovando sempre e pegando carona (ou até mesmo criando) tecnologias emergentes.
O fato é que um produto bem contextualizado pode não valer nada se não for bem apresentado e entende-se por bem apresentado produtos que atraem (e não roubem) a atenção dos usuários. Para isso precisamos de muita criatividade, trabalhar com tecnologia de ponta, inovando sempre e pegando carona (ou até mesmo criando) tecnologias emergentes.
Apresentar de maneira inovadora produtos que fazem parte do conteúdo do usuário parece uma receita boa para o sucesso... Mas isso basta?
NÃO!
Vivemos em um ritmo acelerado! Quando navego na internet não tenho muitas vezes paciência em esperar o conteúdo que estou buscando. E isso faz valer o que já foi dito aqui:
E se temos urgencia em navegar, se queremos o que buscamos quase sempre instantâneamente. Qual será a nossa paciência para aguardar uma publicidade carregar?
Toda vez que a rede da boo-box aumenta temos que garantir que todos os produtos sejam exibidos a uma velociade instantânea, caso contrario todo o trabalho ficaria comprometido.
É so pensar que toda vez que um site com um grande número de page views é adicionado nas nossa rede temos que suportar uma quantidade igual ou maior a este numero.
Toda vez que um site tem uma viralização, nos temos viralização... Não dá para ser diferente não da para pedir arrego!
E o que a boo tem feito para prevenir e algumas vezes remediar estes problemas?
É so pensar que toda vez que um site com um grande número de page views é adicionado nas nossa rede temos que suportar uma quantidade igual ou maior a este numero.
Toda vez que um site tem uma viralização, nos temos viralização... Não dá para ser diferente não da para pedir arrego!
E o que a boo tem feito para prevenir e algumas vezes remediar estes problemas?
É so pensar que toda vez que um site com um grande número de page views é adicionado nas nossa rede temos que suportar uma quantidade igual ou maior a este numero.
Toda vez que um site tem uma viralização, nos temos viralização... Não dá para ser diferente não da para pedir arrego!
E o que a boo tem feito para prevenir e algumas vezes remediar estes problemas?
É so pensar que toda vez que um site com um grande número de page views é adicionado nas nossa rede temos que suportar uma quantidade igual ou maior a este numero.
Toda vez que um site tem uma viralização, nos temos viralização... Não dá para ser diferente não da para pedir arrego!
E o que a boo tem feito para prevenir e algumas vezes remediar estes problemas?
Codigo limpo e otimizado... Geralmente código limpo é código otimizado!
Infraestrutura parruda...
Curioso veja mais no blog da boo-box: http://www.boo-box.com/blog/br/2009/nova-infraestrutura-de-servidores-web-do-sistema-boo-box/
Horas extras principalmente nas viralizações!
Nao didi o que ele falou
Ma como?? Me explica essa porra Batima!
cache!
Memcache, Redis, Couchdb, Tokyo, Mysql, Postgres
Quem conhece e já trabalhou com alguma tecnologia?
No inicio da boo-box contextualização e novos formatos foram capaz de levar a empresa para um patamar incŕivel a preocupação com a velocidade ainda não era um problema, por conta disso podiamos acessar diretamente as apis em busca dos produtos dos usuários
Isso não era certo... Os problemas vieram junto com o primeiro sinal de crescimento...
O que é couchDB?
O que é beanstalked?
• Tempo: O tempo do couchdb era extremamente mais rápido que buscar um produto em um e-commerce!
• Limite de requests: Com o processo assincrono, podiamos controlar melhor o nível de acesso as api descartando, por exemplo, produtos que já estavam cacheados.
• Indisponibilidade da api: Como quem fazia a comunicação com a api não estava ligado com os request esse tipo de problema passou a não existir mais. Os produtos cacheados permaneciam na base e não eram expirados.
Após mais de um ano de sucesso com o couchdb alguns problemas começaram a surgir, alguns devido a estratégia adotada que passou a não ser interessante em todos os casos outros pelo viralização da rede da boo-box que tornou o couchdb um gargalo:
Os produtos por não serem expirados aumentavam dia apos dia fazendo-se necessário a interveção para limpar a base. O crescimento apenas agravou este fato fazendo com que essa intervenção tivesse que acontecer semanalmente toda vez que essa operação era feita a contextualização dos produtos ficava comprometida apresentando produtos randomicos até que a base estivesse um pouco populada
Como o numero de request/segundo aumentava diariamente o couchdb passou a ter problemas de escrita em disco. A cada requisição o arquivo da base era aberto e tivemos que aumentar o numero de vezes que o so poderia abrir um arquivo. Infelizmente nem isso solucionou o problema... Um agravante não estavamos usando a ultima versão do couchdb.
A atualização poderia resolver o problema mas não o fez. Apoś refatorar o código para versão mais recente tivemos que fazer rollback e com a versão antiga passamos a ter muito problemas e pouco suporte, o couch é uma tecnologia alfa então ficamos na mão estudando o couchdb para resolver os problemas.
Por fim, após uma migração de datacenters tivemos um agravante pois s nossos novos server tinham problemas de gravação de disco que afetou diretamente o tempo dos produtos levando-os para um patamar inaceitável...
Ele pode ser definido como um avançado “key-values store” com algumas funcionalidades interessantes como suporte para listas, capacidade de ordenações, busca por keywords similares, e o fato dos dados serem persistidos no hd de maneira assincrona sem afetar a performace de um banco que roda 100% na memória ram.
O cache na memória RAM é ideal para armazenar arquivos pequenos que serão entregues instantaneamente para os clientes. O Redis, assim como o memcache, se encaixa nessa categoria.
Ok você quer números?
O redis tem as funcionalidades de cache implementadas uma expiração inteligente e automática