usando django para servir 12 milhões de usuários

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

Upload: romulo-jales

Post on 05-Dec-2014

1.050 views

Category:

Technology


1 download

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

TRANSCRIPT

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