usando django

33
Usando Django para Servir 20 milhões de Usuários QConSP 2014

Upload: julio

Post on 24-Dec-2015

52 views

Category:

Documents


0 download

DESCRIPTION

Aprenda a usar o Django

TRANSCRIPT

Usando Django para Servir 20 milhões de Usuários

QConSP 2014

Rômulo Jales

���2

Victor Pantoja

Motivação

���3

Motivação

���4

Motivação

���5

Motivação

���6

Motivação

���7

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!

Alguns números

���9

- 5 dias de matérias republicadas: 2020 - confrontos republicados: 1023 - homes republicadas: 3367 - galerias republicadas: 92 - enquetes republicadas: 57 - CSS regerados: 708

Tecnologias

���10

���11

���12

Framework WEB MVC

Propicia uso de melhores práticas de Eng SW

Mas Django não escala...

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

Bottlenecks

���14

MySQL»

Virtuoso»

I/O»

3 BANCOS-

+18 APIs-

5 mounts-

���15

32 Bits com PAE (problemas ao servir cache)»

64 Bits»

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

���16

django-staticgenerator

Pré-geração

Necessita que alguém ou algo dispare o processo

���17

���18

CACHE EVERYWHERE

CACHE

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.

»

Memcached

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

���20

SSI - Server Side Include

���21

<div class="glb-grid-8 widget-plantao-semantico"> <!--#include virtual="/_ssi/plantao/pe/plantao/1" --> </div>

HTTP/1.1 200 OK Server: nginx Date: Fri, 11 Apr 2014 13:19:20 GMT Content-Type: text/html; charset=utf-8 Connection: close Last-Modified: Fri, 11 Apr 2014 13:19:06 GMT Expires: Fri, 11 Apr 2014 13:24:06 GMT Cache-Control: max-age=300

globoesporte.globo.com/pe/noticia/plantao.html

Ajax vs SSIMelhor para a indexação daquele conteúdo (SEO)»

���22

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»

Baixo consumo de recursos da máquina»

���24

simples configuração»

alta performance»

free e open source»

módulos essenciais: purge, ssi e proxy cache»

Minify de CSS e JS (módulo compressor do Django)»

���25

CSS Sprite»

Tempo de expiração adequado para a sua view»

gzip»

estáticos servidos pelo Varnish em uma farm separada»

Performance Client-Side

caching do browser»

���26

Performance Client-SideConfigure 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, 10 Oct 2014 11:45:24 GMT Date: Tue, 10 Oct 2014 11:44:59 GMT X-Varnish: 1952793053 1952791896

���27

Pitomba Spriter

pitomba.org

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»

Avalanche QA2»

Palavra Final

���29

Escalabilidade não é uma questão de linguagem ou framework mas de arquitetura da aplicação!!

/DEV

���30

http://globodev.tumblr.com/

Conteúdo criado pelos desenvolvedores da globo.com

���31

���32

https://github.com/globocom/IWantToWorkAtGloboCom

http://bit.ly/quero-trabalhar-globo-com

Perguntas!!@romulojales

���33

@victorpantojagithub.com/victorpantojagithub.com/romulojales