Cartola FC 2010 @marcelnicolay [email_address] marcelnicolay.com performance  escalabilidade  sqlalchemy  python   nginx  ...
O desafio!
<ul><li>1.500.000 usuários cadastrados
15.000 conexões simultâneas, média de 2.000 mil
900 requisições por segundo, média 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 aplicação, 7 por máquina </li></ul>O Status
A solução
 
Arquitetura BANCO box NGINX TORNADO TORNADO TORNADO TORNADO TORNADO TORNADO BEANSTALK MEMCACHED
Estrutura de banco Escrita MASTER SLAVE Leitura
Cache em memória - 12GB box aplicação box aplicação
Nginx <ul><li>Baixo consumo de recursos
Simples configuração
Alta performance
Free e Open Source
Módulos essenciais </li><ul><li>Load Balancer
Upcoming SlideShare
Loading in …5
×

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

5,086 views

Published on

Apresentação da nova arquitetura do CartolaFC 2010. Ela mostra como conseguimos escalar e performar uma aplicação em python.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,086
On SlideShare
0
From Embeds
0
Number of Embeds
1,705
Actions
Shares
0
Downloads
33
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • - CartolaFC é o fantasy game oficial do campeonato brasileiro. - Existe desde 2005 - Falar como o jogo funciona
  • - 4 desenvolvedores - 5 meses de projeto - refazer uma aplicação que estava no ar desde 2005 - possibilitar o crescimento até 3 vezes
  • - leve - rápida - segura - deploy automatizado - escalável - baixo custo - 100% softwar livre - Desenvolvimento rápido e fácil - Fácil manuntenção
  • - 1 web server rodando - balenceamento de carga entre as 7 instâncias dos servidores de aplicação - capaz de processar 250 requisições por segundo
  • - 4 máquinas - 2 master, com replicação, 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
  • - cada box possui uma instância de memcache rodando, com 2GB - o client do memcached, aplica um hash na chave para descobrir em qual instância o dado está - o dado pode estar local ou em outra instância - os dado cacheado pode ser um objeto ou uma referência para outro objeto
  • Uma aplicação escalável, é uma aplicação preparada para crescer. - Unidade operacional, box. Cada unidade é capaz de rodar a aplicação 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 requisições por segundo
  • Cartola Fc 2010 - Uma Arquitetura escalável e performática

    1. 1. Cartola FC 2010 @marcelnicolay [email_address] marcelnicolay.com performance escalabilidade sqlalchemy python nginx memcached varnish load-test arquitetura deploy tornado mysql beanstalkd testes qualidade
    2. 2. O desafio!
    3. 3. <ul><li>1.500.000 usuários cadastrados
    4. 4. 15.000 conexões simultâneas, média de 2.000 mil
    5. 5. 900 requisições por segundo, média de 100 r/s
    6. 6. 4 servidores mysql, 2 masters e 2 slaves
    7. 7. 12 GB de dados em cache
    8. 8. 9 Intel Quad-Core Xeon 2.5 GH
    9. 9. 63 servidores de aplicação, 7 por máquina </li></ul>O Status
    10. 10. A solução
    11. 12. Arquitetura BANCO box NGINX TORNADO TORNADO TORNADO TORNADO TORNADO TORNADO BEANSTALK MEMCACHED
    12. 13. Estrutura de banco Escrita MASTER SLAVE Leitura
    13. 14. Cache em memória - 12GB box aplicação box aplicação
    14. 15. Nginx <ul><li>Baixo consumo de recursos
    15. 16. Simples configuração
    16. 17. Alta performance
    17. 18. Free e Open Source
    18. 19. Módulos essenciais </li><ul><li>Load Balancer
    19. 20. Proxy Cache
    20. 21. SSI dinâmico </li></ul></ul>
    21. 22. Nginx - Mercado Servidor % maio 2010 Apache 54.68% Microsoft 25.27% nginx 6.55% Google 6.00% lighttpd 0.91% http://news.netcraft.com/archives/2010/05/14/may_2010_web_server_survey.html
    22. 23. Tornado <ul><li>Leve
    23. 24. Simples
    24. 25. Alta performance
    25. 26. Open Source
    26. 27. Non-blocking I/O
    27. 28. Baixo consumo de recursos </li></ul>
    28. 29. Tornado - benchmark
    29. 30. Aplicação BANCO outes TORNADO TEMPLATE MODEL CONTROLE REPOSITÓRIO CACHE
    30. 31. Perfomance no Cliente <ul><li>Minify de css/javascript
    31. 32. CSS Sprite
    32. 33. Tempo de expiração
    33. 34. Versionamento de arquivos
    34. 35. gzip
    35. 36. Servir os estáticos em uma farm separada </li></ul>
    36. 37. Escalabilidade
    37. 39. Atualização de rodada <ul><li>Atualizar mais de 10milhões de registros
    38. 40. Processamento em memória, com multiprocesso e multithreading
    39. 41. Inserção de registros em bloco
    40. 42. Pré-cache dos dados </li></ul>
    41. 43. Curiosidades <ul><li>55 mil times escalados em 5minutos
    42. 44. Redis x Memcached
    43. 45. Persistir dados no browser com jquery-jStore
    44. 46. Limpeza de cache em fila, com Beanstalkd </li></ul>
    45. 47. Perguntas?

    ×