7 mil publishers
420 milhões de impressões ao mês
O que é qualidade?
Formatos
   Monetização diferenciada

  Excelência          Liberdade de escolha


    Transparência

           Velocidad...
Felipe Luis de Souza Vieira
@felipetio
http://felipetio.net
Formatos
   Monetização diferenciada

  Excelência          Liberdade de escolha


    Transparência            Idealismo
...
Targeting


                                Que informações
   Quais sites
                               temos sobre ele?...
Targeting

  User                             Classificação
behaviour                       Que informações
               ...
Formatos



Não sei deixar nada bonito na web,
Formatos



     Não sei deixar nada bonito na web,

Nem nesssa apresentação (obrigado @fmafra),
Formatos



            Não sei deixar nada bonito na web,

      Nem nesssa apresentação (obrigado @fmafra),

Ainda não c...
Formatos




como desenvolvedor eu sei
por que como usuário eu sei
Formatos
OK
NÃO
Velocidade




como desenvolvedor eu sei
por que como usuário eu sei
Velocidade

                  Evolução de Impressions
                                                     121MM



      ...
Velocidade




0                100
Velocidade




0                100
Velocidade




0                200
Velocidade
Velocidade
                                                           -)./)!"!

       *+,$"+-

                          ...
Velocidade
Velocidade




Não processar os requests...
Velocidade
Velocidade




CACHE
Evolução do sistema
 de cache boo-box
Início
            Servidor                        API


Tags/Shop


                       Prepara Requisição



        ...
Problemas




Tempo
Limite de Requests
Indisponibilidade da API
Primeira Estratégia
 de cache adotada
 CouchDB e Beanstalked
Fluxo do request
            Servidor            Fila          Cache       API


Tags/Shop
                Adiciona p/
   ...
Fluxo de atualização do cache
Fila                    Cache   API                   Daemon




       Pega Shop/Tags


   ...
Resultado




Tempo
Limite de Requests
Indisponibilidade da API
Resultado




Tempo
Limite de Requests
Indisponibilidade da API
Problemas




Expiração do cache
Escrita em disco
Atualização de versão
Manutenção
Solução atual
Redis e Beanstalked
Redis



Como memcache          Diferente do memcache
Key-values store       Operações avançadas com as keys
Dados na memó...
Redis



Como memcache                  Diferente do memcache
Key-values store               Operações avançadas com as ke...
Fluxo do request
            Servidor            Fila           Cache   API


Shop/Tags
                Adiciona p/
      ...
Fluxo do request
            Servidor            Fila           Cache   API


Shop/Tags
                Adiciona p/
    M ...
Fluxo do request
            Servidor              Fila              Cache   API


Shop/Tags
                Adiciona p/
 ...
Fluxo do request
            Servidor            Fila             Cache           API


Shop/Tags
                Requisit...
Fluxo de atualização do cache
Daemon                 Fila                   Cache   API


     Pega Shop/Tags


          ...
Resultados
Recursos otimizados

                  couchDB



     300



     200
GB




     100



       0
Recursos otimizados

                   Redis



     300



     200
MB




     100



       0
Recursos otimizados




300 GB -> 300 MB
Sem intervenção!
Recursos otimizados

                   couchDB



      400


      300
CPU




      200


      100


        0
Recursos otimizados

                    Redis



      400


      300
CPU




      200


      100


        0
Recursos otimizados




Usando 3%
 da CPU
Recursos otimizados

 Quer mais?
Redução de 2 servidores...
Reduçao do response time:
Felipe Luis de Souza Vieira
@felipetio
felipe@boo-box.com
http://felipetio.net
Usando Redis para otimizar o sistema boo-box
Usando Redis para otimizar o sistema boo-box
Usando Redis para otimizar o sistema boo-box
Próximos SlideShares
Carregando em…5
×

Usando Redis para otimizar o sistema boo-box

2.742 visualizações

Publicada em

Publicada em: Educação, Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.742
No SlideShare
0
A partir de incorporações
0
Número de incorporações
28
Ações
Compartilhamentos
0
Downloads
30
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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
  • Usando Redis para otimizar o sistema boo-box

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

    ×