Your SlideShare is downloading. ×
  • Like
Usando Redis para otimizar o sistema boo-box
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Usando Redis para otimizar o sistema boo-box

  • 2,087 views
Published

 

Published in Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,087
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
28
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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

Transcript

  • 1. 7 mil publishers 420 milhões de impressões ao mês
  • 2. O que é qualidade?
  • 3. Formatos Monetização diferenciada Excelência Liberdade de escolha Transparência Velocidade Originalidade Simplicidade Estatísticas Targeting
  • 4. Felipe Luis de Souza Vieira @felipetio http://felipetio.net
  • 5. Formatos Monetização diferenciada Excelência Liberdade de escolha Transparência Idealismo Velocidade Originalidade Simplicidade Estatísticas Targeting
  • 6. Targeting Que informações Quais sites temos sobre ele? foram visitados? O que ele De onde ele é? procura?
  • 7. 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
  • 8. Formatos Não sei deixar nada bonito na web,
  • 9. Formatos Não sei deixar nada bonito na web, Nem nesssa apresentação (obrigado @fmafra),
  • 10. 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.
  • 11. Formatos como desenvolvedor eu sei por que como usuário eu sei
  • 12. Formatos
  • 13. OK
  • 14. NÃO
  • 15. Velocidade como desenvolvedor eu sei por que como usuário eu sei
  • 16. Velocidade Evolução de Impressions 121MM 93MM 72MM 55MM 42MM 34MM Jul 09 Aug 09 Sep 09 Oct 09 Nov 09 Dec 09
  • 17. Velocidade 0 100
  • 18. Velocidade 0 100
  • 19. Velocidade 0 200
  • 20. Velocidade
  • 21. Velocidade -)./)!"! *+,$"+- !"#"$%&'$()! (+#0&1#(#,%)- 8-$") !"#$%&'(,))".!,%.*/ :;<;< 233&4 233&5 233&9 233&7 !"#$%&'("*0 !"#$%&' -)#0 8-$") : +,%, $*#'!& ; < -)3($%#") ; -)3($%#") < -)#0 8-$") => -)#0 !"#$%&'()'*+#!%$(!,!-& %#%6)&4 %#%6)&7 http://www.boo-box.com/blog/br/2009/nova-infraestrutura-de-servidores-web-do-sistema-boo-box/
  • 22. Velocidade
  • 23. Velocidade Não processar os requests...
  • 24. Velocidade
  • 25. Velocidade CACHE
  • 26. Evolução do sistema de cache boo-box
  • 27. Início Servidor API Tags/Shop Prepara Requisição Pega Produtos DEMORA Log Produtos
  • 28. Problemas Tempo Limite de Requests Indisponibilidade da API
  • 29. Primeira Estratégia de cache adotada CouchDB e Beanstalked
  • 30. Fluxo do request Servidor Fila Cache API Tags/Shop Adiciona p/ atualização Pega Produtos +++ Rápido Log Produtos
  • 31. Fluxo de atualização do cache Fila Cache API Daemon Pega Shop/Tags Prepara Requisição Pega Produtos Salva Produtos (loop)
  • 32. Resultado Tempo Limite de Requests Indisponibilidade da API
  • 33. Resultado Tempo Limite de Requests Indisponibilidade da API
  • 34. Problemas Expiração do cache Escrita em disco Atualização de versão Manutenção
  • 35. Solução atual Redis e Beanstalked
  • 36. 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
  • 37. 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
  • 38. Fluxo do request Servidor Fila Cache API Shop/Tags Adiciona p/ atualização Tem Produtos (sim) Pega Produtos Log Produtos
  • 39. 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
  • 40. 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
  • 41. 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
  • 42. Fluxo de atualização do cache Daemon Fila Cache API Pega Shop/Tags Velho? Pega produtos Salva (loop)
  • 43. Resultados
  • 44. Recursos otimizados couchDB 300 200 GB 100 0
  • 45. Recursos otimizados Redis 300 200 MB 100 0
  • 46. Recursos otimizados 300 GB -> 300 MB Sem intervenção!
  • 47. Recursos otimizados couchDB 400 300 CPU 200 100 0
  • 48. Recursos otimizados Redis 400 300 CPU 200 100 0
  • 49. Recursos otimizados Usando 3% da CPU
  • 50. Recursos otimizados Quer mais? Redução de 2 servidores... Reduçao do response time:
  • 51. Felipe Luis de Souza Vieira @felipetio felipe@boo-box.com http://felipetio.net