SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Usando Django para
Servir 12 milhões de Usuários
Python Brasil 9
1sexta-feira, 4 de outubro de 13
Usando Django para
Servir 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úmeros
Visitantes ú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 deView
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ção
Não deixe o usuário disparar ações críticas do
sistema!
15
django-staticgenerator
15sexta-feira, 4 de outubro de 13
Pré-geração
Necessita 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 SSI
Melhor 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
Beanstalkd
Aplicaçã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 peloVarnish em uma farm separada»
Performance Client-Side
caching do browser»
25sexta-feira, 4 de outubro de 13
26
Performance Client-Side
Configure os headers da requisição 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, 01 Oct 2013 14:45:24 GMT
Date:Tue, 01 Oct 2013 14:44:59 GMT
X-Varnish: 1952793053 1952791896
26sexta-feira, 4 de outubro de 13
27
Pitomba Spriter
pitomba.org
27sexta-feira, 4 de outubro de 13
Ferramentas
Apache 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

Weitere ähnliche Inhalte

Ähnlich wie Django 12M Users Scalability

Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)guestf4f70f
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus DadosAlvaro Viebrantz
 
Apresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em FlorianopolisApresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em Florianopolisluis antonio Nunes
 
Seus logs nas costas largas da AWS
Seus logs nas costas largas da AWSSeus logs nas costas largas da AWS
Seus logs nas costas largas da AWSMarcelo Palladino
 
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017Ricardo Katz
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Renato Groff
 
4º Fórum GDI Novembro 2018 - Integração LabTablet e Dendro com EUDAT B2SHARE ...
4º Fórum GDI Novembro 2018 - Integração LabTablet e Dendro com EUDAT B2SHARE ...4º Fórum GDI Novembro 2018 - Integração LabTablet e Dendro com EUDAT B2SHARE ...
4º Fórum GDI Novembro 2018 - Integração LabTablet e Dendro com EUDAT B2SHARE ...João Rocha da Silva
 

Ähnlich wie Django 12M Users Scalability (10)

Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)
 
NoSQL e Python
NoSQL e PythonNoSQL e Python
NoSQL e Python
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
Desenvolvimento web produtivo
Desenvolvimento web produtivoDesenvolvimento web produtivo
Desenvolvimento web produtivo
 
Big Data
Big DataBig Data
Big Data
 
Apresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em FlorianopolisApresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em Florianopolis
 
Seus logs nas costas largas da AWS
Seus logs nas costas largas da AWSSeus logs nas costas largas da AWS
Seus logs nas costas largas da AWS
 
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
 
4º Fórum GDI Novembro 2018 - Integração LabTablet e Dendro com EUDAT B2SHARE ...
4º Fórum GDI Novembro 2018 - Integração LabTablet e Dendro com EUDAT B2SHARE ...4º Fórum GDI Novembro 2018 - Integração LabTablet e Dendro com EUDAT B2SHARE ...
4º Fórum GDI Novembro 2018 - Integração LabTablet e Dendro com EUDAT B2SHARE ...
 

Mehr von Rômulo Jales

Conhecimentos básicos para construir um portal que atenda 10milhões de pesoas
Conhecimentos básicos para construir um portal que atenda 10milhões de pesoasConhecimentos básicos para construir um portal que atenda 10milhões de pesoas
Conhecimentos básicos para construir um portal que atenda 10milhões de pesoasRômulo Jales
 
Construindo sua primeira ontologia
Construindo sua primeira ontologiaConstruindo sua primeira ontologia
Construindo sua primeira ontologiaRômulo Jales
 
Introdução a Model Based User Interface Design
Introdução a Model Based User Interface DesignIntrodução a Model Based User Interface Design
Introdução a Model Based User Interface DesignRômulo Jales
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
DKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportDKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportRômulo Jales
 
IMPLEMENTAÇÃO DO UNIVERSEAL HOST CONTROLLER INTERFACE (UHCI) PARA O MEMTE...
IMPLEMENTAÇÃO DO UNIVERSEAL  HOST CONTROLLER INTERFACE    (UHCI) PARA O MEMTE...IMPLEMENTAÇÃO DO UNIVERSEAL  HOST CONTROLLER INTERFACE    (UHCI) PARA O MEMTE...
IMPLEMENTAÇÃO DO UNIVERSEAL HOST CONTROLLER INTERFACE (UHCI) PARA O MEMTE...Rômulo Jales
 
Implementação UHCI para Memtest86+
Implementação UHCI para Memtest86+Implementação UHCI para Memtest86+
Implementação UHCI para Memtest86+Rômulo Jales
 

Mehr von Rômulo Jales (10)

Conhecimentos básicos para construir um portal que atenda 10milhões de pesoas
Conhecimentos básicos para construir um portal que atenda 10milhões de pesoasConhecimentos básicos para construir um portal que atenda 10milhões de pesoas
Conhecimentos básicos para construir um portal que atenda 10milhões de pesoas
 
Construindo sua primeira ontologia
Construindo sua primeira ontologiaConstruindo sua primeira ontologia
Construindo sua primeira ontologia
 
Introdução a Model Based User Interface Design
Introdução a Model Based User Interface DesignIntrodução a Model Based User Interface Design
Introdução a Model Based User Interface Design
 
Bridge GoF Patern
Bridge GoF PaternBridge GoF Patern
Bridge GoF Patern
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Implementação de
Implementação de Implementação de
Implementação de
 
Seminario pic
Seminario picSeminario pic
Seminario pic
 
DKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportDKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module Support
 
IMPLEMENTAÇÃO DO UNIVERSEAL HOST CONTROLLER INTERFACE (UHCI) PARA O MEMTE...
IMPLEMENTAÇÃO DO UNIVERSEAL  HOST CONTROLLER INTERFACE    (UHCI) PARA O MEMTE...IMPLEMENTAÇÃO DO UNIVERSEAL  HOST CONTROLLER INTERFACE    (UHCI) PARA O MEMTE...
IMPLEMENTAÇÃO DO UNIVERSEAL HOST CONTROLLER INTERFACE (UHCI) PARA O MEMTE...
 
Implementação UHCI para Memtest86+
Implementação UHCI para Memtest86+Implementação UHCI para Memtest86+
Implementação UHCI para Memtest86+
 

Django 12M Users Scalability