Cartola Fc 2010 - Uma Arquitetura escalável e performática

Embed Size (px)

Citation preview

Cartola FC 2010

@[email protected]

performance escalabilidade sqlalchemy python nginx memcached varnishload-test arquitetura deploytornado mysql beanstalkd testes qualidade

- CartolaFC o fantasy game oficial do campeonato brasileiro.- Existe desde 2005- Falar como o jogo funciona

O desafio!

- 4 desenvolvedores- 5 meses de projeto- refazer uma aplicao que estava no ar desde 2005- possibilitar o crescimento at 3 vezes

1.500.000 usurios cadastrados

15.000 conexes simultneas, mdia de 2.000 mil

900 requisies por segundo, mdia de 100 r/s

4 servidores mysql, 2 masters e 2 slaves

12 GB de dados em cache

9 Intel Quad-Core Xeon 2.5 GH

63 servidores de aplicao, 7 por mquina

O Status

A soluo

- leve- rpida- segura- deploy automatizado- escalvel- baixo custo- 100% softwar livre- Desenvolvimento rpido e fcil- Fcil manunteno

Arquitetura

NGINXTORNADOTORNADOTORNADOTORNADOTORNADOTORNADOBEANSTALKMEMCACHED

BANCO

box

- 1 web server rodando- balenceamento de carga entre as 7 instncias dos servidores de aplicao- capaz de processar 250 requisies por segundo

Estrutura de banco

Escrita

MASTER

SLAVE

Leitura

- 4 mquinas- 2 master, com replicao, um fica de backup em caso de falha- 2 slaves, cada um apontando para um master diferente- vip de escrita- vip de leitura- vip de pr-cache

Cache em memria - 12GB

box

aplicao

box

aplicao

- cada box possui uma instncia de memcache rodando, com 2GB- o client do memcached, aplica um hash na chave para descobrir em qual instncia o dado est- o dado pode estar local ou em outra instncia- os dado cacheado pode ser um objeto ou uma referncia para outro objeto

Nginx

Baixo consumo de recursos

Simples configurao

Alta performance

Free e Open Source

Mdulos essenciaisLoad Balancer

Proxy Cache

SSI dinmico

Nginx - Mercado

Servidor% maio 2010

Apache54.68%

Microsoft25.27%

nginx6.55%

Google6.00%

lighttpd0.91%

http://news.netcraft.com/archives/2010/05/14/may_2010_web_server_survey.html

Tornado

Leve

Simples

Alta performance

Open Source

Non-blocking I/O

Baixo consumo de recursos

Tornado - benchmark

Aplicao

TORNADOTEMPLATEMODELCONTROLEREPOSITRIOCACHE

BANCO

outes

Perfomance no Cliente

Minify de css/javascript

CSS Sprite

Tempo de expirao

Versionamento de arquivos

gzip

Servir os estticos em uma farm separada

Escalabilidade

Uma aplicao escalvel, uma aplicao preparada para crescer. - Unidade operacional, box. Cada unidade capaz de rodar a aplicao de forma isolada e independente.- Deploy automatizado.- Escalabilidade horizontal. Cada nova unidade, representa um aumento proporcional na capacidade de processamento

- Cada box capaz de processar 250 requisies por segundo

Atualizao de rodada

Atualizar mais de 10milhes de registros

Processamento em memria, com multiprocesso e multithreading

Insero de registros em bloco

Pr-cache dos dados

Curiosidades

55 mil times escalados em 5minutos

Redis x Memcached

Persistir dados no browser com jquery-jStore

Limpeza de cache em fila, com Beanstalkd

Perguntas?