Usando Redis para otimizar o sistema boo-box

54

description

 

Transcript of Usando Redis para otimizar o sistema boo-box

Page 1: Usando Redis para otimizar o sistema boo-box
Page 2: Usando Redis para otimizar o sistema boo-box

7 mil publishers 420 milhões de impressões ao mês

Page 3: Usando Redis para otimizar o sistema boo-box

O que é qualidade?

Page 4: Usando Redis para otimizar o sistema boo-box

Excelência

Targeting

Transparência

VelocidadeIdealismo

Formatos

Originalidade

Monetização diferenciada

SimplicidadeEstatísticas

Liberdade de escolha

Page 5: Usando Redis para otimizar o sistema boo-box
Page 6: Usando Redis para otimizar o sistema boo-box

Felipe Luis de Souza Vieira@felipetiohttp://felipetio.net

Page 7: Usando Redis para otimizar o sistema boo-box

Excelência

Targeting

Transparência

VelocidadeIdealismo

Formatos

Originalidade

Monetização diferenciada

SimplicidadeEstatísticas

Liberdade de escolha

Page 8: Usando Redis para otimizar o sistema boo-box

Targeting

De onde ele é?

Que informaçõestemos sobre ele? Quais sites

foram visitados?

O que ele procura?

Page 9: Usando Redis para otimizar o sistema boo-box

Targeting

De onde ele é?

Que informaçõestemos sobre ele? Quais sites

foram visitados?

O que ele procura?

User behaviour

Inteligência artificialGeo

localização

Classificação de textos

Page 10: Usando Redis para otimizar o sistema boo-box

Formatos

Não sei deixar nada bonito na web,

Page 11: Usando Redis para otimizar o sistema boo-box

Formatos

Não sei deixar nada bonito na web,

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

Page 12: Usando Redis para otimizar o sistema boo-box

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.

Page 13: Usando Redis para otimizar o sistema boo-box

Formatos

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

Page 14: Usando Redis para otimizar o sistema boo-box

Formatos

Page 15: Usando Redis para otimizar o sistema boo-box

OK

Page 16: Usando Redis para otimizar o sistema boo-box

NÃO

Page 17: Usando Redis para otimizar o sistema boo-box
Page 18: Usando Redis para otimizar o sistema boo-box

Velocidade

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

Page 19: Usando Redis para otimizar o sistema boo-box

Velocidade

Jul 09 Aug 09 Sep 09 Oct 09 Nov 09 Dec 09

121MM

93MM

72MM

55MM

42MM34MM

Evolução de Impressions

Page 20: Usando Redis para otimizar o sistema boo-box

Velocidade

0 100

Page 21: Usando Redis para otimizar o sistema boo-box

Velocidade

0 100

Page 22: Usando Redis para otimizar o sistema boo-box

Velocidade

0 200

Page 23: Usando Redis para otimizar o sistema boo-box

Velocidade

Page 24: Usando Redis para otimizar o sistema boo-box

Velocidade

!"#"$%&'$()!

*+,$"+-

-)./)!"!

(+#0&1#(#,%)-

233&4 233&5

%#%6)&7%#%6)&4!"#$%&'()'*+#!%$(!,!-&

!"#$%&'(,))".!,%.*/

!"#$%&'("*0

-)3($%#")

8-$")-)#0

-)#0

8-$")

8-$")-)#0

!"#$%&'+,%,$*#'!&

-)3($%#")

233&9 233&7

:;<;<

:;<;<

=>

http://www.boo-box.com/blog/br/2009/nova-infraestrutura-de-servidores-web-do-sistema-boo-box/

Page 25: Usando Redis para otimizar o sistema boo-box

Velocidade

Page 26: Usando Redis para otimizar o sistema boo-box

Velocidade

Não processar os requests...

Page 27: Usando Redis para otimizar o sistema boo-box

Velocidade

Page 28: Usando Redis para otimizar o sistema boo-box

Velocidade

CACHE

Page 29: Usando Redis para otimizar o sistema boo-box

Evolução do sistemade cache boo-box

Page 30: Usando Redis para otimizar o sistema boo-box

Tags/Shop

Produtos

Prepara Requisição

Pega Produtos

Log

DEMORA

APIServidor

Início

Page 31: Usando Redis para otimizar o sistema boo-box

Problemas

TempoLimite de RequestsIndisponibilidade da API

Page 32: Usando Redis para otimizar o sistema boo-box

Primeira Estratégiade cache adotada

CouchDB e Beanstalked

Page 33: Usando Redis para otimizar o sistema boo-box

Tags/Shop

Produtos

Adiciona p/atualização

Pega Produtos

Log

+++Rápido

Fluxo do requestServidor APIFila Cache

Page 34: Usando Redis para otimizar o sistema boo-box

Pega Shop/Tags

PreparaRequisição

Pega Produtos

Salva Produtos

Fluxo de atualização do cacheAPIFila Cache Daemon

(loop)

Page 35: Usando Redis para otimizar o sistema boo-box

Resultado

TempoLimite de RequestsIndisponibilidade da API

Page 36: Usando Redis para otimizar o sistema boo-box

Resultado

TempoLimite de RequestsIndisponibilidade da API

TempoLimite de RequestsIndisponibilidade da API

Page 37: Usando Redis para otimizar o sistema boo-box

Problemas

Expiração do cacheEscrita em discoAtualização de versãoManutenção

Page 38: Usando Redis para otimizar o sistema boo-box

Solução atualRedis e Beanstalked

Page 39: Usando Redis para otimizar o sistema boo-box

Redis

Como memcacheKey-values storeDados na memóriaCache implementado

Diferente do memcacheOperações avançadas com as keysEscalabilidadePersistência

Page 40: Usando Redis para otimizar o sistema boo-box

Redis

Como memcacheKey-values storeDados na memóriaCache implementado

Diferente do memcacheOperações avançadas com as keysEscalabilidadePersistência

Em números:110.000 SETs/sec81.000 GETs/sec

Page 41: Usando Redis para otimizar o sistema boo-box

Shop/Tags

Produtos

Adiciona p/atualização

Tem Produtos (sim)

Log

Fluxo do requestServidor APIFila Cache

Pega Produtos

Page 42: Usando Redis para otimizar o sistema boo-box

Shop/Tags

Produtos

Adiciona p/atualização

Tem Produtos (sim)

Log

Fluxo do requestServidor APIFila Cache

MEM CACHE

Pega Produtos

Page 43: Usando Redis para otimizar o sistema boo-box

Shop/Tags

Produtos

Adiciona p/atualização

Tem Produtos (não)

Log

Fluxo do requestServidor APIFila Cache

MEM CACHE

Pega Produtos

Salva

Page 44: Usando Redis para otimizar o sistema boo-box

Shop/Tags

Produtos

Requisitaatualização

Tem Produtos (não)

Log

Fluxo do requestServidor APIFila Cache

MEM CACHE

Pega Produtos (demorou)

Pega Produtos Similares

Page 45: Usando Redis para otimizar o sistema boo-box

(loop)

Pega produtos

Pega Shop/Tags

Salva

Fluxo de atualização do cacheAPIFila CacheDaemon

Velho?

Page 46: Usando Redis para otimizar o sistema boo-box

Resultados

Page 47: Usando Redis para otimizar o sistema boo-box

Recursos otimizados

0

100

200

300

GB

couchDB

Page 48: Usando Redis para otimizar o sistema boo-box

0

100

200

300

MB

Recursos otimizados

Redis

Page 49: Usando Redis para otimizar o sistema boo-box

Recursos otimizados

300 GB -> 300 MBSem intervenção!

Page 50: Usando Redis para otimizar o sistema boo-box

0

100

200

300

400

CP

URecursos otimizados

couchDB

Page 51: Usando Redis para otimizar o sistema boo-box

0

100

200

300

400

CP

URecursos otimizados

Redis

Page 52: Usando Redis para otimizar o sistema boo-box

Recursos otimizados

Usando 3%da CPU

Page 53: Usando Redis para otimizar o sistema boo-box

Recursos otimizados

Quer mais?Redução de 2 servidores...Reduçao do response time: