A infraestrutura de servidores Web do Sistema boo-box

Marco Gomes, May 29th, 2009 - 17 Responses

Nos últimos anos uma série de padrões de arquitetura de softwares web se consolidaram e foram popularizados em frameworks[bb] que facilitam o desenvolvimento e a manutenção destes sistemas. Ao mesmo tempo, servidores tiveram o custo reduzido e o acesso facilitado. Criar um projeto web se tornou mais simples, ágil e barato, mas se ele prosperar será preciso lidar com um velho desafio: escalabilidade.

A boo-box passou por esse desafio e hoje possui uma infraestrutura em camadas, capaz de escalar horizontalmente e que hoje tem robustez pra servir milhares de requisições por minuto. Neste post iremos apresentar algumas soluções usadas atualmente pra garantir boa performance do Sistema de Publicidade Para Mídias Sociais, como Ruby, MERB, CouchDB, Thin, Nginx, Beanstalkd.

Screenshot do glTail rodando no server Kami

A infra boo-box

Nossa infraestrutura é uma combinação de softwares Open Source consolidados há anos, como MySQL, com outros mais recentes e pouco usados, que em geral consomem menos recursos, são mais simples ou apenas mais adequados à situação.

É importante salientar que este texto reflete a situação da infraestrutura atual (maio de 2009). A taxa de novos Publishers associados ao Sistema e crescimento de visitação dos Publishers já associados nos leva a alterar semanalmente a estrutura de servidores, adicionando novas máquinas ou modificando componentes da aplicação.

Infraestrutura de servidores web boo-box

Identificação dos servidores

Nomear servidores sempre é uma decisão difícil para o time de desenvolvedores, alguns usam nomes de planetas, elementos da tabela periódica, nomes de letras gregas. Nós usamos nomes de personagens do anime Dragon Ball Z.

Static Files

Arquivos estáticos são os que não dependem de processamento do servidor, como imagens, CSSs[bb], JavaScripts[bb]. Na estrutura boo-box eles ficam em um subdomínio que aponta diretamente para um servidor dedicado, diminuindo a carga dos nossos load balancers.

Os arquivos estáticos são carregados previamente para a memória RAM, melhorando o tempo de resposta do Sistema. Esta máquina roda o servidor HTTP nginx.

Load Balancers

São as máquinas que recebem as requisições dos usuários e direcionam a carga para um dos servidores de apliçação. Na infra boo-box há dois load balancers, ambos associados ao DNS para boo-box.com

O load balancer precisa responder muito rapidamente, por isso ele não processa regras de negócio. Cada um dos servers roda o servidor HTTP nginx.

Cluster de aplicação

O cluster de aplicação é composto pelo conjunto de servidores que processam nossas regras de negócio. São eles que decidem que anúncio será exibido na vitrine, o que acontece quando há um clique, o que fazer com os dados de novo Publisher cadastrado no Sistema.

Cada server roda aproximadamente 100 instâncias do framework Ruby MERB com o servidor HTTP Thin (não, nós não usamos RubyOnRails :).

Cluster de banco de dados

Quando uma informação precisa ser gravada em nosso sistema, como novo Publisher cadastrado, alteração nas preferências, ou exclusão de anunciante, esses dados são guardados em nosso banco de dados.

O cluster de banco de dados contém a máquina Vegeta (Master), que recebe as informações a serem gravadas no banco, e máquinas secundárias Bulma e Ubb (Slave) de onde os servers de aplicação lêem os dados.

Como notado por um leitor do blog, o nome do personagem é Uub, mas o ninja que batizou o server precisou digitar o nome usando os pés porque nossos braços estavam estendidos pra cima energizando uma Genki Dama, digitar com os pés é difícil, ele errou a tecla e o nome server e ficou Ubb mesmo :)

Dividir escrita e leitura em diferentes servidores foi uma das mais eficientes atitudes que tomamos nos últimos meses pra melhorar performance e uptime do Sistema boo-box.

Este cluster roda um banco MySQL, dividido entre os servidores segundo escrita e leitura.

Um caso real de uma empresa contribuindo com a comunidade de Software Livre :)

Usamos o Sequel como ORM na comunicação entre aplicação e banco de dados. Quando precisamos replicar o banco, gerando a estrutura de Master e Slave, o Sequel não conseguia ler do Slave, por mais que fizéssemos tudo conforme a documentação.

Entramos em contato com os desenvolvedores do ORM no canal de IRC e, após algumas horas de testes, resolvemos o problema em conjunto.

Este é apenas o mais recente dos casos, nós já contribuimos com a comunidade de Software Livre[bb] de diferentes maneiras, fazemos isso porque temos consiência que nossa tecnologia é fruto do Open Source.

Cluster de log do Sistema

Todas as ações ocorridas em nosso Sistema são gravadas no log do Sistema. Vitrines visualizadas, cliques em anúncios, ações efetuadas em sites de parceiros, tudo fica no log.

Periodicamente processamos o log raw (cru), geramos estatísticas e fazemos um backup. Com isso liberamos o log raw para receber mais dados sem perder as informações do passado e mantendo uma boa performance no Sistema.

Usamos o Analogger como componente de log, porém, questões de performance e escalabilidade fez com que buscássemos outra solução. Atualmente o log do Sistema está sendo migrado para estrutura MySQL, e é dividido em máquinas Master (escrita) e Slave (leitura).

Cache de produtos

A maior parte dos anúncios exibidos nas vitrines boo-box são produtos ofertados por e-commmerces. Como as informações dos produtos não precisam ser mantidas ao longo do tempo fazemos um cache temporário dos dados.

O cache confere robustez ao Sistema, que continua funcionando mesmo que o e-commerce demore pra responder ou saia do ar.

Nossa estrutura de cache de produtos é formada por dois componentes principais:

Fila

Usamos Beanstalkd como serviço de fila para requisições de produtos. Cada vitrine boo-box tem tags associadas, cada nova tag ainda não cacheada é inseria nesta fila que será consumida nos próximos segundos, não atrapalhando o fluxo de funcionamento da aplicação.

Há um serviço independente que consome a fila, indo nos e-commerces procurar pelos produtos relacionados com cada tag e colocando os dados nas máquinas de cache.

Cluster de cache de produtos

Cada servidor que armazena dados de produtos roda CouchDB, um banco de dados de documentos JSON.

O principal recurso consumido por estas máquinas é espaço em HD, lotamos centenas de gigabytes em poucos dias, principalmente por conta da heterogeneidade das ofertas exibidas no Sistema boo-box, são milhões de produtos diferentes.

O resultado

Screenshot do glTail rodando no servidor Korin

Nas últimas semanas o tempo de resposta e uptime do Sistema boo-box melhorou visivelmente por conta das soluções acima apresentadas, resultado do trabalho e experiência dos ninjas.

Se você tem alguma crítica, dúvida ou sugestão, estamos sempre dispostos a ouvir, a caixa de comentários é pra você :)

Post escrito por Marco Gomes e Mauricio Maia.

O lado relamente social das Mídias Sociais – Pixel Solidário GRAACC

boo-box team, May 20th, 2009 - No Responses

O GRAACC – Grupo de Apoio ao Adolescente e à Criança com Câncer conta com voluntários e profissionais, doadores (pessoas físicas), empresas e fundações que acreditam no seu trabalho para manter e melhorar a sua estrutura, com engajamento pessoal contribuindo no combate ao câncer infantil.

Quando tratamos do assunto Mídias Sociais (blogs, fotologs, redes sociais, sites UGC em geral), a palavra engajamento é sempre muito utilizada, hoje publicitários, empresas, publishers e tantos outros já sabem do poder de engajar pessoas que esse novo tipo de mídia possui.

O que muitas vezes acabamos esquecendo é que esse engajamento é fruto dessa interação entre pessoas, do elo social criado em torno do conteúdo. Em busca desse lado humano das mídias sociais foi idealizada a campanha Pixel Solidário GRAACC.

O projeto foi desenvolvido em total regime pro-bono por nós e nosso parceiro, a Ogilvy Interactive, e tem como objetivo imediato atingir o maior volume de doações possível para ajudar o GRAACC a construir seu novo Hospital de combate ao câncer infantil.

Cada um ajuda como pode. Blogs doam espaço e posts. Formadores de opinião doam twitts. Usuários doam scraps, e-mails, nicks e todos são convidados a doar um SMS pelo número 49222 (só p/ fones Claro).

Abaixo segue o selo da campanha p/ que todos possam doar espaço em seus blogs.

Cole o código abaixo no HTML do seu blog pra exibir o selo em apoio ao GRAACC.

<script type='text/javascript' src='http://ads-beta.boo-box.com/server/www/delivery/spcjs.php?id=15'></script>
<script type='text/javascript'>OA_show(19);</script>

Não tem blog? Doe um tweet:

Doei esse tweet p/ crianças com câncer do GRAACC. Ajude vc tb doando um SMS = R$ 4 + imp. Envie nome p/ 49222. Válido p/ Claro

Não tem twitter? Doe um nick de msn, scrap, e-mail ou ajude da forma como for possível:

Davi. Doei esse nick p/ crianças com câncer do GRAACC. Ajude vc tb doando um SMS = R$ 4 + imp. Envie nome p/ 49222. Válido p/ Claro

Nós doamos este post, estenda a mão você também para as crianças com câncer.

PagSeguro recomenda boo-box o/

Pedro De Conti, May 8th, 2009 - No Responses

A solução de pagamentos da UOL, o PagSeguro, garante a segurança de quem compra e de quem vende na web, o objetivo de fomentar o comércio eletrônico vem sendo alcançado graças à excelência na prestação do serviço.

Ainda no primeiro ano de vida (2007) o PagSeguro atingiu o número de 8 mil lojas e 1 milhão de compradores,  no ano seguinte foi escolhido pelos leiores da revista Info como o site do ano na categoria comércio eltrônico,  já contando com 20 mil lojas e 3 milhões de compradores.

Números esses que continuam crescendo exponencialmente graças à forte presença do serviço no mundo web, quem esteve presente no Campus Party 2009 com certeza se lembra da ação que eles fizeram vendendo energéticos a R$ 1 (UM REAL!) .

Isso tudo vem fazendo com que o PagSeguro esteja cada vez mais associado às cifras na Internet, como através do seu blog onde eles abordam o tema “Como vender e ganhar dinheiro na web” sob os mais diversos ângulos, sob a ótica dos e-commerces, dos sites independentes e também dos publishers como no caso do post:

“Transforme o seu blog em negócio”.

Primeiro é preciso regularidade. Não importa se você escreve uma vez por dia ou uma vez por semana. Isso é fundamental para o seu leitor voltar.
Segundo: ofereça assinatura por rss (há ótimos serviços gratuitos, como o Feedburner) e também por e-mail, já que a maioria da população ainda tem dificuldade de lidar com os leitores de feeds. O próprio Feedburner mesmo fornece o código, prontinho e personalizável.

Terceiro: escolha seus programas de monetização. Links Patrocinados do UOL, Livraria Cultura, Boo-Box, há pelo menos duas dúzias de opções para rentabilizar o seu conteúdo de forma contextualizada e não muito intrusiva…

Onde ele dá dicas para os blogueiros de como  produzir conteúdo, distribuí-lo e finalmente como monetizá-lo, onde entre as opções de Links Patrocinados do UOL e o programa de afiliados da Livraria Cultura eles recomendaram a boo-box o/

Aqui na boo-box ficamos todos muito lisonjeados, afinal de contas como eu disse o PagSeguro é referência em negócios na web e seu blog é de leitura obrigatória ;)

Virada Cultural chega ao Twitter pela boo-box

boo-box team, April 30th, 2009 - No Responses

VIRADA CULTURAL CHEGA AO TWITTER PELA BOO-BOX

Nova mania da internet e seus aplicativos pode ajudar o público a selecionar e divulgar programação personalizada do evento

São Paulo, abril de 2009 – O Twitter e suas diversas aplicações torna-se ferramenta importante para quem pretende selecionar e compartilhar o melhor da programação da Virada Cultural de São Paulo. O evento conta com centenas de atrações de entrada franca e acontece em dezenas de pontos da capital paulista, durante 24 horas ininterruptas, entre os dias 2 e 3 de maio próximo.

Já foi o tempo em que, para encontrar grupos de amigos, colegas de trabalho ou mesmo conhecidos durante a Virada, as pessoas precisavam se reunir com antecedência ou efetuar vários telefonemas para coordenar onde está cada um. O aplicativo criado especialmente para a Virada facilita encontros e permite o compartilhamento da programação pessoal de cada um por meio do AdBird, plataforma de recomendação de conteúdo no Twitter criada pela boo-box, (www.boo-box.com.br), empresa que oferece gestão de publicidade[bb] em mídias sociais[bb].

“A solução desenvolvida permite que o usuário compartilhe com seus amigos a sua programação através do site http://boo-box.com/virada e ao vivo via Twitter, utilizando o AdBird”, conta Marco Gomes, CTO da boo-box. Marco explica que, para usar o aplicativo, basta o usuário do Twitter entrar no site http://boo-box.com/virada e criar a sua programação personalizada.

“Para cada usuário é disponibilizada uma página com a programação escolhida. Além disso, o Adbird ‘tuita’ pelo usuário o que ele estará fazendo a cada hora da Virada, sem que esse precise enviar as mensagens manualmente”, diz. “Queremos que as pessoas aproveitem a Virada ao máximo e compartilhar a programação individual através do Twitter vai aproximá-las durante o evento”, finaliza o CTO da boo-box.

boo-boxfy 1.5.2 para WordPress

Helder Santana, April 23rd, 2009 - One Response

boo!

Essa semana disponibilizamos uma atualização do plugin boo-boxfy para WordPress.

Nesse update nós colocamos o botão monetize de volta (ele havia sido retirado nas últimas versões), corrigimos alguns bugs e otimizamos o carregamento de grande parte dos arquivos para os servidores da boo-box.

A vantagem disso é a diminuição do consumo de tráfego no servidor de nossos usuários e uma manutenção mais acessível aos ninjas boo-box, sem a necessidade de updates constantes em seu painel.

Botao Monetizar

Pro usuário a maior alteração dessa versão é a volta do botão monetizar no modo de edição HTML do WordPress. Tomamos essa decisão após um feedback de nosso usuário Borbs (judao.com.br), que estava adaptado a esse modo de edição de posts em código HTML e sentiu falta de uma maneira pra inserir vitrines em seu conteúdo

A boo-box escuta seus usúarios :D . Mande seu feedback para nós via Twitter digitando #boobox em seu post ou via formulário de contato do nosso site.

  1. Borbs
    borbs @marcogomes #Boo-Box Mimimi, o botão “monetize” não tá mais aparecendo pra mim! =/
  2. Marco Gomes
    marcogomes @borbs agora o botão “monetize” virou um botão “boo-box” na barra do Wordpress, veja http://migre.me/wNn #boobox Atualize seu boo-boxfy ;)
  3. Borbs
    borbs @marcogomes Bom, então temos um problema, pq eu não uso o editor visual… E aí não aparece. =/ #Boo-Box
  4. Borbs
    borbs #BooBox ainda não mostra o botão de “Monetize!” pra mim, que NÃO uso o editor visual do Wordpress… Plugin FAIL. =/
  5. Borbs
    borbs #BooBox liberou nova versão do Boo-Boxfy, com botãozinho “Monetize” pra quem não usa o editor visual… \o/

this quote was brought to you by quoteurl

O boo-boxfy é compatível com a versão 2.6 ou superior do WordPress. Baixe já!

Semana cheia, mesmo com feriado :)

Pedro De Conti, April 22nd, 2009 - One Response

As últimas semanas têm sido cheias de novidades, para quem acompanha o nosso blog isso fica bem claro, atualizações, lançamentos, promoções e tudo mais que a boo-box vem desenvolvendo para prestar um serviço cada vez melhor aos publishers.

O #bolaobb que teve início no dia 09/04 chegou ao fim após os últimos jogos das semi-finais e não teve nenhum vencedor. Ninguém acertou nenhum dos resultados dos jogos e portanto ninguém foi premiado. Não foi dessa vez, mas quem sabe durante o #bolaobb do Brasileirão, afinal de contas, outros virão  ;)

Enquanto isso os usuários do BLINBlin receberam muito bem a notícia de que o serviço será descontinuado já que não vinha gerando resultados financeiros aos Publishers e já estão no aguardo das próximas novidades.

Falando em novidade, lançamos ontem uma nova função para o AdBird, a ferramenta da boo-box para o Twitter, que agora conta com uma versão browser para tuitar URIs enquanto você navega.

Continue acompanhando o nosso blog para saber das novidades ;)