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

Post on 05-Dec-2014

1.050 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

Usando Django paraServir 12 milhões de Usuários

Python Brasil 9

1sexta-feira, 4 de outubro de 13

Usando Django paraServir 12 milhões de Usuários

Python Brasil 9

20 milhões

1sexta-feira, 4 de outubro de 13

Rômulo Jales

2

Victor Pantoja

2sexta-feira, 4 de outubro de 13

Motivação

3

3sexta-feira, 4 de outubro de 13

Motivação

4

4sexta-feira, 4 de outubro de 13

Motivação

5

5sexta-feira, 4 de outubro de 13

Motivação

6

6sexta-feira, 4 de outubro de 13

Motivação

7

7sexta-feira, 4 de outubro de 13

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

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

Tecnologias

10

10sexta-feira, 4 de outubro de 13

11

11sexta-feira, 4 de outubro de 13

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

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

Bottlenecks

14

MySQL»

Virtuoso»

I/O»

14sexta-feira, 4 de outubro de 13

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

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

16

16sexta-feira, 4 de outubro de 13

17

CACHE EVERYWHERE

CACHE

17sexta-feira, 4 de outubro de 13

Memcached

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

18

18sexta-feira, 4 de outubro de 13

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

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

21sexta-feira, 4 de outubro de 13

22

32 Bits com PAE (problemas ao servir cache)»

64 Bits»

22sexta-feira, 4 de outubro de 13

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

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

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

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

27

Pitomba Spriter

pitomba.org

27sexta-feira, 4 de outubro de 13

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

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

/DEV

30

http://globodev.tumblr.com/

Conteúdo criado pelos desenvolvedores da globo.com

30sexta-feira, 4 de outubro de 13

31

31sexta-feira, 4 de outubro de 13

Perguntas!!@romulojales

33

@victorpantoja

33sexta-feira, 4 de outubro de 13

top related