Usando Django para servir 12 milhões de usuários

1.390 visualizações

Publicada em

Apresentação sobre uma arquitetura usando django para atender 20 milhões de usuários.
Palestra apresentada pela primeira vez na python Brasil 2013.
Autores: Rômulo Jales & Victor Pantoja

Publicada em: Tecnologia
0 comentários
6 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.390
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
53
Comentários
0
Gostaram
6
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Usando Django para servir 12 milhões de usuários

  1. 1. Usando Django para Servir 12 milhões de Usuários Python Brasil 9 1sexta-feira, 4 de outubro de 13
  2. 2. Usando Django para Servir 12 milhões de Usuários Python Brasil 9 20 milhões 1sexta-feira, 4 de outubro de 13
  3. 3. Rômulo Jales 2 Victor Pantoja 2sexta-feira, 4 de outubro de 13
  4. 4. Motivação 3 3sexta-feira, 4 de outubro de 13
  5. 5. Motivação 4 4sexta-feira, 4 de outubro de 13
  6. 6. Motivação 5 5sexta-feira, 4 de outubro de 13
  7. 7. Motivação 6 6sexta-feira, 4 de outubro de 13
  8. 8. Motivação 7 7sexta-feira, 4 de outubro de 13
  9. 9. Alguns números Visitantes únicos: 20,7 milhões por mês 8 Visitas: 215 milhões por mês 8 milhões de visitas por dia! 8sexta-feira, 4 de outubro de 13
  10. 10. Alguns números 9 - matérias republicadas: 2020 - confrontos republicados: 1023 - homes republicadas: 3367 - galerias republicadas: 92 - enquetes republicadas: 57 - CSS regerados: 708 9sexta-feira, 4 de outubro de 13
  11. 11. Tecnologias 10 10sexta-feira, 4 de outubro de 13
  12. 12. 11 11sexta-feira, 4 de outubro de 13
  13. 13. 12 Framework WEB MVC Propicia uso de melhores práticas de Eng SW Mas Django não escala... 12sexta-feira, 4 de outubro de 13
  14. 14. 13 Uso de Middlewares Cache deView Mas Django não escala... @cache_control(max_age=300) def top_atletas(request, periodo, quantidade, formato): dados = MateriaSemanticaController().top_atletas(periodo, quantidade) return render_to_json(dados, formato, 'top_atletas') 13sexta-feira, 4 de outubro de 13
  15. 15. Bottlenecks 14 MySQL» Virtuoso» I/O» 14sexta-feira, 4 de outubro de 13
  16. 16. Pré-geração Não deixe o usuário disparar ações críticas do sistema! 15 django-staticgenerator 15sexta-feira, 4 de outubro de 13
  17. 17. Pré-geração Necessita que alguém ou algo dispare o processo 16 16sexta-feira, 4 de outubro de 13
  18. 18. 17 CACHE EVERYWHERE CACHE 17sexta-feira, 4 de outubro de 13
  19. 19. Memcached Faça o caching de objetos e não de resultados de queries! 18 18sexta-feira, 4 de outubro de 13
  20. 20. Memcached 19 Diminui a quantidade de memória utilizada: podemos ter várias listas de ids de objetos mas apenas uma entrada para cada objeto » Aumenta a performance do sistema: não é necessário expurgar todo o cache de uma lista na alteração de um objeto. Basta expurgar o objeto. » 19sexta-feira, 4 de outubro de 13
  21. 21. Ajax vs SSI Melhor para a indexação daquele conteúdo (SEO)» 20 Diferentes tempos de cache para componentes em uma mesma página» Melhora a performance client-side» Diminui o número de requisições ao servidor» 20sexta-feira, 4 de outubro de 13
  22. 22. 21sexta-feira, 4 de outubro de 13
  23. 23. 22 32 Bits com PAE (problemas ao servir cache)» 64 Bits» 22sexta-feira, 4 de outubro de 13
  24. 24. Baixo consumo de recursos da máquina» 23 simples configuração» alta performance» free e open source» módulos essenciais: purge, ssi e proxy cache» 23sexta-feira, 4 de outubro de 13
  25. 25. Beanstalkd Aplicação de gerenciamento de filas que utiliza o paradigma pubsub» 24 Solução para processamento assíncrono e offline» 24sexta-feira, 4 de outubro de 13
  26. 26. Minify de CSS e JS» 25 CSS Sprite» Tempo de expiração adequado» gzip» estáticos servidos peloVarnish em uma farm separada» Performance Client-Side caching do browser» 25sexta-feira, 4 de outubro de 13
  27. 27. 26 Performance Client-Side Configure os headers da requisição corretamente! HTTP/1.1 200 OK Accept-Encoding:gzip,deflate,sdch Content-Type: application/json Vary:Accept-Encoding Cache-Control: max-age=30 Expires:Tue, 01 Oct 2013 14:45:24 GMT Date:Tue, 01 Oct 2013 14:44:59 GMT X-Varnish: 1952793053 1952791896 26sexta-feira, 4 de outubro de 13
  28. 28. 27 Pitomba Spriter pitomba.org 27sexta-feira, 4 de outubro de 13
  29. 29. Ferramentas Apache HTTP server benchmarking tool» 28 Monit: ferramenta open source para gerencia e monitoramento de processos, programas, arquivos, diretórios, serviços etc » WebPageTest: webpagetest.org» 28sexta-feira, 4 de outubro de 13
  30. 30. Palavra Final 29 Escalabilidade não é uma questão de linguagem ou framework mas de arquitetura da aplicação!! 29sexta-feira, 4 de outubro de 13
  31. 31. /DEV 30 http://globodev.tumblr.com/ Conteúdo criado pelos desenvolvedores da globo.com 30sexta-feira, 4 de outubro de 13
  32. 32. 31 31sexta-feira, 4 de outubro de 13
  33. 33. 32 https://github.com/globocom/ IWantToWorkAtGloboCom http://bit.ly/quero-trabalhar-globo-com 32sexta-feira, 4 de outubro de 13
  34. 34. Perguntas!! @romulojales 33 @victorpantoja 33sexta-feira, 4 de outubro de 13

×