Estudo de caso do "O Curioso" (Rio on Rails)

20
Estudo de caso do site “ocurioso.com" O Preço da Curiosidade! Rio de Janeiro, 8 de dezembro de 2007 Por Eduardo Rocha

Transcript of Estudo de caso do "O Curioso" (Rio on Rails)

Estudo de caso do site “ocurioso.com"O Preço da Curiosidade!

Rio de Janeiro, 8 de dezembro de 2007Por Eduardo Rocha

“Ruby é lento, será que vai dar certo?”

Temas principais

ArquiteturaOtimizaçãoServidores

Renda

Arquitetura

Arquitetura

• MySQL usando InnoDB• Rails usando servidor LiteSpeed• Crawler usando Rails + Mechanize

+ Expressões Regulares• Sessão é armazenada no MySQL em

tabelas MyISAM

Arquitetura

• BD e Servidor Web juntos em um máquina, crawler na outra

• Servidor Web rodando 16 instâncias

• Crawler usando 48 processos simultâneos, single-threaded

Servidores

CompartilhadoVPS (Virtual Private Server)

Dedicado

Servidores (Compartilhado)

• Hospedado no Site5 por US$ 6,99 mensais

• Suportou até 2 mil usuários• Gargalo era o abuso da política de

servidores compartilhados

Servidores (VPS)

• Direito a apenas um pedaço da máquina, mas você é root

• Hospedado no RapidVPS por US$ 49,90 mensais (800 MHz, 512 MB, 30 GB)

• Dedicado no VRT Servers pelo mesmo preço

• Suportou até 6 mil usuários• Gargalo era o uso de CPU pelo crawler

Servidores (Dedicado)

• Hospedado no SoftLayer por US$ 259,00 mensais (1x4 Xeon 1.6GHz, 2 GB RAM, 73 GB SCSI)

• Suportou até 20 mil usuários com uma só máquina

• Gargalo também era o crawler, que usava várias threads e poucos processos

Servidores (Atualmente)

• BD + Servidor Web: 2 x 4 Xeon, 8 GB RAM, 73 GB SCSI + 300 GB SCSI por US$ 579,00

• Crawler: 2 x 4 Xeon, 2 GB RAM por US$ 279,00

• Banda adicional: US$ 600,00• Total: US$ 1458,00

Servidores (Gargalos)

• Servidor Web: CPU e compartilhamento com MySQL

• MySQL: mais memória é sempre bom, tabela de scraps é muito grande (IO)

• Crawler: AUTO INC table level lock, CPU, velocidade do Orkut, banda

Otimização

Otimização

• “railsbench” faz tanto benchmarking quanto profiling

• Parse de timestamp no Rails é lento• “template_optimizer” pré-compila

templates rhtml em ruby

Otimização

• Caches apenas em página de conteúdo, que são estáticas

• Migrar de SqlSessionStore para memcached pode ser uma para aliviar o banco

• “Scrap.create(…) é custoso, é melhor “INSERT INTO scraps (…) VALUES (…),(…)

Renda

Renda

• O Curioso é um empreendimento que visa o lucro

• Melhor pagar impostos como PJ do que como PF

Renda

• Receita apenas de publicidade: AdSense, pontoFox, Hi-Midia, Mercado Livre

• Despesas: máquinas, banda, impostos, contador (fixo), INSS (fixo), IOF

• Recebe em dólar turismo, paga em dólar comercial

Renda (AdSense)

• Já teve campanhas da Veja e da Parmalat

• Mudança da área clicável diminuiu a receita pela metade

• Suporte é excelente• Demora para pagar e se der errado

precisa esperar o outro mês

É isso!

Obrigado pela atenção e pelo convite!

www.ocurioso.comwww.acuriosa.com

[email protected]