34
Usando Django para Servir 12 milhões de Usuários Python Brasil 9 1 sexta-feira, 4 de outubro de 13

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Usando Django paraServir 12 milhões de Usuários

Python Brasil 9

1sexta-feira, 4 de outubro de 13

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

Usando Django paraServir 12 milhões de Usuários

Python Brasil 9

20 milhões

1sexta-feira, 4 de outubro de 13

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

Rômulo Jales

2

Victor Pantoja

2sexta-feira, 4 de outubro de 13

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

Motivação

3

3sexta-feira, 4 de outubro de 13

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

Motivação

4

4sexta-feira, 4 de outubro de 13

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

Motivação

5

5sexta-feira, 4 de outubro de 13

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

Motivação

6

6sexta-feira, 4 de outubro de 13

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

Motivação

7

7sexta-feira, 4 de outubro de 13

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

Alguns númerosVisitantes ú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

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

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

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

Tecnologias

10

10sexta-feira, 4 de outubro de 13

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

11

11sexta-feira, 4 de outubro de 13

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

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

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

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')

13sexta-feira, 4 de outubro de 13

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

Bottlenecks

14

MySQL»

Virtuoso»

I/O»

14sexta-feira, 4 de outubro de 13

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

Pré-geraçãoNão deixe o usuário disparar ações críticas do sistema!

15

django-staticgenerator

15sexta-feira, 4 de outubro de 13

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

Pré-geraçãoNecessita que alguém ou algo dispare o processo

16

16sexta-feira, 4 de outubro de 13

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

17

CACHE EVERYWHERE

CACHE

17sexta-feira, 4 de outubro de 13

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

Memcached

Faça o caching de objetos e não de resultados de queries!

18

18sexta-feira, 4 de outubro de 13

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

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

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

Ajax vs SSIMelhor 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

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

21sexta-feira, 4 de outubro de 13

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

22

32 Bits com PAE (problemas ao servir cache)»

64 Bits»

22sexta-feira, 4 de outubro de 13

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

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

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

BeanstalkdAplicaçã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

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

Minify de CSS e JS»

25

CSS Sprite»

Tempo de expiração adequado»

gzip»

estáticos servidos pelo Varnish em uma farm separada»

Performance Client-Side

caching do browser»

25sexta-feira, 4 de outubro de 13

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

26

Performance Client-SideConfigure 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, 01 Oct 2013 14:45:24 GMTDate: Tue, 01 Oct 2013 14:44:59 GMTX-Varnish: 1952793053 1952791896

26sexta-feira, 4 de outubro de 13

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

27

Pitomba Spriter

pitomba.org

27sexta-feira, 4 de outubro de 13

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

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»

28sexta-feira, 4 de outubro de 13

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

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

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

/DEV

30

http://globodev.tumblr.com/

Conteúdo criado pelos desenvolvedores da globo.com

30sexta-feira, 4 de outubro de 13

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

31

31sexta-feira, 4 de outubro de 13

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

Perguntas!!@romulojales

33

@victorpantoja

33sexta-feira, 4 de outubro de 13