usando django para servir 12 milhões de usuários
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 PantojaTRANSCRIPT
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
32
https://github.com/globocom/IWantToWorkAtGloboCom
http://bit.ly/quero-trabalhar-globo-com
32sexta-feira, 4 de outubro de 13
Perguntas!!@romulojales
33
@victorpantoja
33sexta-feira, 4 de outubro de 13