Usando Django para
Servir 20 milhões de Usuários
QConSP
2014
Rômulo
Jales
2
Victor
Pantoja
Motivação
3
Motivação
4
Motivação
5
Motivação
6
Motivação
7
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!
Alguns números
9
- 5 dias de matérias republicadas:
2020
- confrontos republicados: 1023
- homes republicadas: 3367
- gale...
Tecnologias
10
11
12
Framework WEB
MVC
Propicia uso de melhores
práticas de Eng SW
Mas Django não
escala...
13
Uso de
Middlewares
Cache de View
Mas Django não
escala...
@cache_control(max_age=300)
def top_atletas(request, periodo,...
Bottlenecks
14
MySQL»
Virtuoso»
I/O»
3 BANCOS-
+18
APIs
-
5
mounts
-
15
32 Bits com PAE (problemas ao servir cache)»
64 Bits»
Pré-geração
Não deixe o usuário disparar
ações críticas do sistema!
16
django-staticgenerator
Pré-geração
Necessita que alguém ou
algo dispare o processo
17
18
CACHE
EVERYWHERE
CACH
E
Memcached
19
Diminui a quantidade de memória utilizada:
podemos ter várias listas de ids de objetos mas
apenas uma entrada...
Memcached
Faça o caching de objetos
e não de resultados de
queries!
20
SSI - Server Side
Include
21
<div class="glb-grid-8 widget-plantao-semantico">
<!--#include virtual="/_ssi/plantao/pe/plan...
Ajax vs SSI
Melhor para a indexação daquele conteúdo
(SEO)
»
22
Diferentes tempos de cache para componentes
em uma mesma p...
Baixo consumo de recursos da máquina»
24
simples configuração»
alta performance»
free e open source»
módulos essenciais: p...
Minify de CSS e JS (módulo compressor do
Django)
»
25
CSS Sprite»
Tempo de expiração adequado para a sua view»
gzip»
estát...
26
Performance Client-
SideConfigure os headers da requisição
corretamente!
HTTP/1.1 200 OK
Accept-Encoding: gzip,deflate,...
27
Pitomba Spriter
pitomba.or
g
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!!
/DEV
30
http://globodev.tumblr.com/
31
32
https://github.com/globocom/IW
antToWorkAtGloboCom
http://bit.ly/quero-trabalhar-
globo-com
Pergunt
as!!
@romulojale
s
33
@victorpantoj
agithub.com/victorpanto
ja
github.com/romulojal
es
Talk at QConSP
Próximos SlideShares
Carregando em…5
×

Talk at QConSP

630 visualizações

Publicada em

Talk presented at qconsp 2014. This talk shows how we scale django @ globoesporte.com to stand 8 million uses per day.

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

Sem downloads
Visualizações
Visualizações totais
630
No SlideShare
0
A partir de incorporações
0
Número de incorporações
32
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Talk at QConSP

  1. 1. Usando Django para Servir 20 milhões de Usuários QConSP 2014
  2. 2. Rômulo Jales 2 Victor Pantoja
  3. 3. Motivação 3
  4. 4. Motivação 4
  5. 5. Motivação 5
  6. 6. Motivação 6
  7. 7. Motivação 7
  8. 8. 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!
  9. 9. Alguns números 9 - 5 dias de matérias republicadas: 2020 - confrontos republicados: 1023 - homes republicadas: 3367 - galerias republicadas: 92 - enquetes republicadas: 57 - CSS regerados: 708
  10. 10. Tecnologias 10
  11. 11. 11
  12. 12. 12 Framework WEB MVC Propicia uso de melhores práticas de Eng SW Mas Django não escala...
  13. 13. 13 Uso de Middlewares Cache de View 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')
  14. 14. Bottlenecks 14 MySQL» Virtuoso» I/O» 3 BANCOS- +18 APIs - 5 mounts -
  15. 15. 15 32 Bits com PAE (problemas ao servir cache)» 64 Bits»
  16. 16. Pré-geração Não deixe o usuário disparar ações críticas do sistema! 16 django-staticgenerator
  17. 17. Pré-geração Necessita que alguém ou algo dispare o processo 17
  18. 18. 18 CACHE EVERYWHERE CACH E
  19. 19. 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. »
  20. 20. Memcached Faça o caching de objetos e não de resultados de queries! 20
  21. 21. SSI - Server Side Include 21 <div class="glb-grid-8 widget-plantao-semantico"> <!--#include virtual="/_ssi/plantao/pe/plantao/1" --> </div>HTTP/1.1 200 OK Server: nginx Date: Fri, 11 Apr 2014 13:19:20 GMT Content-Type: text/html; charset=utf-8 Connection: close Last-Modified: Fri, 11 Apr 2014 13:19:06 GMT Expires: Fri, 11 Apr 2014 13:24:06 GMT Cache-Control: max-age=300 globoesporte.globo.com/pe/noticia/plantao. html
  22. 22. Ajax vs SSI Melhor para a indexação daquele conteúdo (SEO) » 22 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»
  23. 23. Baixo consumo de recursos da máquina» 24 simples configuração» alta performance» free e open source» módulos essenciais: purge, ssi e proxy cache»
  24. 24. Minify de CSS e JS (módulo compressor do Django) » 25 CSS Sprite» Tempo de expiração adequado para a sua view» gzip» estáticos servidos pelo Varnish em uma farm separada » Performance Client-Side caching do browser»
  25. 25. 26 Performance Client- SideConfigure 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, 10 Oct 2014 11:45:24 GMT Date: Tue, 10 Oct 2014 11:44:59 GMT X-Varnish: 1952793053 1952791896
  26. 26. 27 Pitomba Spriter pitomba.or g
  27. 27. 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» Avalanche QA2»
  28. 28. Palavra Final 29 Escalabilidade não é uma questão de linguagem ou framework mas de arquitetura da aplicação!!
  29. 29. /DEV 30 http://globodev.tumblr.com/
  30. 30. 31
  31. 31. 32 https://github.com/globocom/IW antToWorkAtGloboCom http://bit.ly/quero-trabalhar- globo-com
  32. 32. Pergunt as!! @romulojale s 33 @victorpantoj agithub.com/victorpanto ja github.com/romulojal es

×