Talk at QConSP
-
Upload
victor-pantoja -
Category
Technology
-
view
293 -
download
4
description
Transcript of Talk at QConSP
Usando Django paraServir 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- galerias republicadas: 92- enquetes republicadas: 57- CSS regerados: 708
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, quantidade, formato): dados = MateriaSemanticaController().top_atletas(periodo, quantidade) return render_to_json(dados, formato, 'top_atletas')
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çãoNã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
CACHE
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.
»
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/plantao/1" --></div>
HTTP/1.1 200 OKServer: nginxDate: Fri, 11 Apr 2014 13:19:20 GMTContent-Type: text/html; charset=utf-8Connection: closeLast-Modified: Fri, 11 Apr 2014 13:19:06 GMTExpires: Fri, 11 Apr 2014 13:24:06 GMTCache-Control: max-age=300
globoesporte.globo.com/pe/noticia/plantao.html
Ajax vs SSIMelhor 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
»
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
»
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»
26
Performance Client-Side
Configure os headers da requisição corretamente!HTTP/1.1 200 OKAccept-Encoding: gzip,deflate,sdchContent-Type: application/jsonVary: Accept-EncodingCache-Control: max-age=30Expires: Tue, 10 Oct 2014 11:45:24 GMTDate: Tue, 10 Oct 2014 11:44:59 GMTX-Varnish: 1952793053 1952791896
27
Pitomba Spriter
pitomba.org
FerramentasApache 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»
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/
Conteúdo criado pelos
desenvolvedores da
globo.com
31
32
https://github.com/globocom/IWantToWorkAtGloboCom
http://bit.ly/quero-trabalhar-
globo-com
Perguntas!!
@romulojales
33
@victorpantojagithub.com/
victorpantoja
github.com/romulojales