Usando Django para
Servir 12 milhões de Usuários
Python Brasil 9
1sexta-feira, 4 de outubro de 13
Usando Django para
Servir 12 milhões de Usuários
Python Brasil 9
20 milhões
1sexta-feira, 4 de outubro de 13
Rômulo Jales
2
Victor Pantoja
2sexta-feira, 4 de outubro de 13
Motivação
3
3sexta-feira, 4 de outubro de 13
Motivação
4
4sexta-feira, 4 de outubro de 13
Motivação
5
5sexta-feira, 4 de outubro de 13
Motivação
6
6sexta-feira, 4 de outubro de 13
Motivação
7
7sexta-feira, 4 de outubro de 13
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...
Alguns números
9
- matérias republicadas: 2020
- confrontos republicados: 1023
- homes republicadas: 3367
- galerias repub...
Tecnologias
10
10sexta-feira, 4 de outubro de 13
11
11sexta-feira, 4 de outubro de 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
13
Uso de Middlewares
Cache deView
Mas Django não escala...
@cache_control(max_age=300)
def top_atletas(request, periodo, ...
Bottlenecks
14
MySQL»
Virtuoso»
I/O»
14sexta-feira, 4 de outubro de 13
Pré-geração
Não deixe o usuário disparar ações críticas do
sistema!
15
django-staticgenerator
15sexta-feira, 4 de outubro ...
Pré-geração
Necessita que alguém ou algo dispare o
processo
16
16sexta-feira, 4 de outubro de 13
17
CACHE EVERYWHERE
CACHE
17sexta-feira, 4 de outubro de 13
Memcached
Faça o caching de objetos e não de
resultados de queries!
18
18sexta-feira, 4 de outubro de 13
Memcached
19
Diminui a quantidade de memória utilizada: podemos ter várias listas de ids
de objetos mas apenas uma entrada...
Ajax vs SSI
Melhor para a indexação daquele conteúdo (SEO)»
20
Diferentes tempos de cache para componentes em uma mesma pá...
21sexta-feira, 4 de outubro de 13
22
32 Bits com PAE (problemas ao servir cache)»
64 Bits»
22sexta-feira, 4 de outubro de 13
Baixo consumo de recursos da máquina»
23
simples configuração»
alta performance»
free e open source»
módulos essenciais: p...
Beanstalkd
Aplicação de gerenciamento de filas que utiliza o paradigma pubsub»
24
Solução para processamento assíncrono e ...
Minify de CSS e JS»
25
CSS Sprite»
Tempo de expiração adequado»
gzip»
estáticos servidos peloVarnish em uma farm separada»...
26
Performance Client-Side
Configure os headers da requisição corretamente!
HTTP/1.1 200 OK
Accept-Encoding:gzip,deflate,sd...
27
Pitomba Spriter
pitomba.org
27sexta-feira, 4 de outubro de 13
Ferramentas
Apache HTTP server benchmarking tool»
28
Monit: ferramenta open source para gerencia e monitoramento de
proces...
Palavra Final
29
Escalabilidade não é uma
questão de linguagem ou
framework mas de arquitetura
da aplicação!!
29sexta-feir...
/DEV
30
http://globodev.tumblr.com/
Conteúdo criado pelos
desenvolvedores da globo.com
30sexta-feira, 4 de outubro de 13
31
31sexta-feira, 4 de outubro de 13
32
https://github.com/globocom/
IWantToWorkAtGloboCom
http://bit.ly/quero-trabalhar-globo-com
32sexta-feira, 4 de outubro ...
Perguntas!!
@romulojales
33
@victorpantoja
33sexta-feira, 4 de outubro de 13
Upcoming SlideShare
Loading in...5
×

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

874

Published on

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

Published in: Technology

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
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×