Você está na página 1de 33

Usando Django para

Servir 20 milhes de Usurios

QConSP 2014

Rmulo Jales

Victor Pantoja

2

Motivao

3

Motivao

4

Motivao

5

Motivao

6

Motivao

7

Alguns nmeros
Visitantes nicos: 20,7 milhes por ms
Visitas: 215 milhes por ms

8 milhes de visitas por dia!

8

Alguns nmeros

- 5 dias de matrias republicadas: 2020



- confrontos republicados:1023

- homes republicadas: 3367

- galerias republicadas: 92

- enquetes republicadas: 57

- CSS regerados: 708
9

Tecnologias

10

11

Framework WEB MVC


Propicia uso de melhores prticas
de Eng SW
Mas Django no
escala...

12

Uso de Middlewares
@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')

Cache de View
Mas Django no
escala...
13

Bottlenecks
MySQL
- 3 BANCOS
Virtuoso
I/O
- +18 APIs
- 5 mounts
14

32 Bits com PAE (problemas ao servir cache)

64 Bits

15

Pr-gerao
No deixe o usurio disparar aes
crticas do sistema!
django-staticgenerator

16

Pr-gerao
Necessita que algum ou algo
dispare o processo

17

CACHE

CACHE EVERYWHERE
18

Memcached
Aumenta a performance do sistema: no necessrio
expurgar todo o cache de uma lista na alterao de um
objeto. Basta expurgar o objeto.
Diminui a quantidade de memria utilizada: podemos ter
vrias listas de ids de objetos mas apenas uma entrada
para cada objeto

19

Memcached
Faa o caching de objetos e no
de resultados de queries!

20

SSI - Server Side Include


globoesporte.globo.com/pe/noticia/plantao.html
<div class="glb-grid-8 widget-plantao-semantico">

</div>

<!--#include virtual="/_ssi/plantao/pe/plantao/1" -->


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

21
Cache-Control: max-age=300

Ajax vs SSI
Melhor para a indexao daquele contedo (SEO)
Diferentes tempos de cache para componentes em uma

mesma pgina
Melhora a performance client-side
Diminui o nmero de requisies ao servidor

22

Baixo consumo de recursos da mquina


simples configurao
alta performance
free e open source
mdulos essenciais: purge, ssi e proxy cache

24

Performance Client-Side
Minify de CSS e JS (mdulo compressor do Django)
caching do browser
CSS Sprite
Tempo de expirao adequado para a sua view
gzip
estticos servidos pelo Varnish em uma farm separada

25

Performance Client-Side
Configure os headers da requisio 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

Pitomba Spriter

pitomba.org
27

Ferramentas
Apache HTTP server benchmarking tool
Monit: ferramenta open source para gerencia e
monitoramento de processos, programas, arquivos,
diretrios, servios etc
WebPageTest: webpagetest.org
Avalanche QA2

28

Palavra Final

Escalabilidade no uma questo de linguagem ou


framework mas de arquitetura da aplicao!!
29

/DEV
Contedo criado pelos
desenvolvedores da
globo.com
http://globodev.tumblr.com/

30

31

https://github.com/globocom/
IWantToWorkAtGloboCom
http://bit.ly/quero-trabalhar-globocom

32

Perguntas!!
@romulojales
github.com/romulojales

@victorpantoja
github.com/victorpantoja
33