Um milhao de usuários simultâneos

Fernando Ike
Fernando IkeHelping people, systems, servers and bots to improve their performance. No matter if they are little or a Starfleet
1 milhão de usuários simultâneos?
Fernando ike
Fernando Ike
Um milhao de usuários simultâneos
Clientes Latam
1.000.000
Um milhao de usuários simultâneos
Um milhao de usuários simultâneos
1.000.000
● Tamanho médio de uma página 3 Mbytes
● São 586 Mbits/s
● 8.000.000 usuários/mês
● 131 petabytes/mês
● 2.747.269,12 obamas (Cloudfront - EUA)
Um milhao de usuários simultâneos
Um milhao de usuários simultâneos
1996
Um milhao de usuários simultâneos
1996
● Netscape 2.0
1996
1996
1996
1996
1996
● HTML 3.0
● Internet Explorer 3.0
● Netscape 2.02
● Usuários no Mundo: 36 milhões
● +- 100 mil sites
● CPU 200Mhz, RAM 8MB e HD 850 MB
1996
UOL:
● Página Inicial: 140KB
● Elementos: 26 objetos
NYTIMES:
● Página Inicial: 144KB
● Elementos: 18 objetos
2014
● HTML 5.0
● Internet Explorer 11
● Firefox 30+
● Chrome 40
● Usuários no Mundo: 2,4 bilhões
● +- 10 bilhões de sites
● CPU 8-Core, RAM 16 GB e HD 1TB
2014
UOL:
● Página Inicial: 1,5 MB
● Elementos: 187 objetos
NYTIMES:
● Página Inicial: 2,03MB
● Elementos: 191 objetos
Um milhao de usuários simultâneos
2014
2014
2014
2014
● HTML 5.0
● Internet Explorer 11
● Firefox 31+
● Chrome 36+
● Usuários no Mundo: 3 bilhões
● +- 9,66 bilhões de sites
● X bilhões de dispositivos IoT
2015
Crescimento / Home
Crescimento / Home - 2015
Tamanho Total - Objetos
UOL 1,047 Mbytes 115
NYTIMES 4,593 Mbytes 261
Quem é mais rápido?
UOL
X
Nytimes
Segundos Onload - Requests
UOL 11,246 86
NYTIMES 3.757 73
Um milhao de usuários simultâneos
State of the Union: Ecommerce Page
Speed & Web Performance
Ilusão da felicidade web
State of the Union: Ecommerce Page
Speed & Web Performance
Walmart
● Cada 1 segundo de melhoria => aumentou conversão
de vendas em 2%
● 100 ms de melhoria => aumentou a receita em 1%
Amazon
● Cada 1 segundo de piora no desempenho (para o usuário)
representa $ 1.600.000.000/ano
UX e desempenho
Fonte: web performance today
Keep-alive
HTTP/1.1 200 OK
Accept-Ranges: bytes
Connection: close
Content-Encoding: gzip
Content-Length: 17647
Content-Type: text/html
Date: Sat, 09 Aug 2014 12:40:40 GMT
ETag: "20107-10121-5000cd7484ac0"
Last-Modified: Thu, 07 Aug 2014 16:47:15 GMT
Server: Apache/2.2.22
Vary: Accept-Encoding
DNS
● Resolver um DNS para IP leva +- 120 ms à 500 ms
(ou mais...)
● Navegadores tem cache DNS além do Sistema
Operacional
● Evite usar redirecionamentos HTTP
http://www.webpagetest.org/result/150709_7Q_H1Z/1/details/
DNS
● Navegadores suportam até 6 conexões simultâneas por
domínio
● Navegadores suportam até 32 conexões simultâneas
● Separe o tráfego SSL em outro(s) domínio(s)
DNS
● www.oioioi.com.br
● login.oioioi.com.br
● estatico1.oioioi.com.br
● estatico2.oioioi.com.br
● estatico3.oioioi.com.br
● estatico4.oioioi.com.br
● estatico5.oioioi.com.br
HTTPS
Um milhao de usuários simultâneos
HTTPS
● Acresce 200ms à 1s a toda conexão
● Aumento do volume total de tráfego
● Aumento do processamento de CPU
HTTPS
● Aumento do uso de memória
● Aumento da complexidade de arquitetura
● Aumento do tempo total de rede
HTTPS
Nunca use HTTPS no
servidor(es) de aplicação
HTTPS - TLS
● Não use SSLv2/SSLv3
● HTTPS é parte das boas práticas de SEO
TLS
● Versão 1.2
● Cifras acima de 128 bits
● Atenção para ao implantar TLS (Load
Balance, Overhead CPU/MEM.
● Cuidado com DNS sharding + TLS
● <= SHA256
http://chimera.labs.oreilly.com/books/1230000000545/ch04.html#TLS_HANDSHAKE
Compactação (gzip)
● Reduz o tamanho das respostas até 70%
● Os navegadores sinalizam o suporte à compressão com
um cabeçalho HTTP:
Accept-Encoding: gzip, deflate
● Os servidores web notificam o navegador cabeçalho
HTTP:
Content-Encoding: gzip
http://www.fernandoike.com/2014/12/23/configuracao-de-compressao-gzip-para-sites-e-ranking-de-cdn/
Não use em arquivos PDF, imagens,
videos, etc.
Não faça compactação no servidor de
aplicação
Um milhao de usuários simultâneos
Time to First Byte
● Boa métrica para identificar lentidão
● TTFB alto pode ser qualquer coisa: Rede, I/O, Memória,
Servidor Web, Aplicação, Banco de dados, plugins,
conteúdo de terceiros, etc...
http://www.webpagetest.org/result/150709_HH_H31/1/details/
Requisições HTTP
● Diminuir a quantidade de requisições HTTP:
− Consolide arquivos CSS
− Consolide arquivos de script (javascript)
− Use CSS Sprite para imagens de fundo
− e são coisas diferentes
● Cuidado com as respostas HTTP 404
CSS e Javascript
● Remova (Minify) conteúdo considerado desnecessário:
− Caractater vazio
− Comentários de código
● Coloque o javascript no fim e CSS no início da
páginas html.
● Cuidado com funções duplicadas
● Consolide js e CSS
Javascript
● Use defer
● Cuidado com js de 3rd party
● Quando possível, carregue javascript dinamicamente
● Carregue-os assincronamente
Um milhao de usuários simultâneos
Um milhao de usuários simultâneos
Um milhao de usuários simultâneos
Um milhao de usuários simultâneos
Um milhao de usuários simultâneos
Um milhao de usuários simultâneos
Cache-Control:
● max-age=3600 / tempo em segundos de expiração
● public: os objetos em cache podem ser salvos em caches
intermediários e que qualquer usuário pode consulta
HTTP/1.1 200 OK
Server: imagine 0.10.3
Content-Type: image/jpeg
ETag: "1c3382aeb3fc6be9e55bad50d00844c3"
Last-Modified: Wed, 08 Jul 2015 20:40:20 GMT
Content-Length: 5693
Date: Thu, 09 Jul 2015 08:53:01 GMT
X-Varnish: 1076065602 991419582
Age: 43945
Connection: keep-alive
Via: cache-varnish
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, HEAD
Keep-Alive: timeout=20, max=15
Cache-Control: max-age=86400
X-Cache: HIT
HTTP/1.1 200 OK
Server: Apache
X-API-Version: 4
Last-Modified: Thu, 09 Jul 2015 02:14:19 GMT
Accept-Ranges: bytes
Content-Length: 10712
Access-Control-Allow-Origin: *
Cneonction: close
Content-Type: image/jpeg
Cache-Control: private, max-age=668050
Expires: Fri, 17 Jul 2015 02:30:59 GMT
Date: Thu, 09 Jul 2015 08:56:49 GMT
Connection: keep-alive
Cache
● Conteúdo estático com longo tempo de cache
● Use múltiplos domínios para cache
● Tenha áreas comuns para manter os objetos de uso
comuns
● Mude o nome do arquivo para expirar o cache (...com.
br/1.gif?v=123)
● Use o content-length no cabeçalho de resposta
● Use cache nas páginas mais acessadas
http://www.fernandoike.com/2014/12/23/configuracao-de-compressao-gzip-para-sites-e-ranking-de-cdn/
Prebrowsing
<link rel="dns-prefetch" href="fernandoike.com">
<link rel="prefetch" href="http://fernandoike.com/utils.js>
<link rel="prerender" href="http://www.fernandoike.com/about">
Progressive Images
Fonte: http://sixrevisions.com/graphics-design/jpeg-101-a-crash-course-guide-on-jpeg/
Otimize o uso de imagens
https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/image-optimization
Fonte: http://upload.wikimedia.org/wikipedia/commons/1/1f/Responsive-web-design-devices.jpg
CDN
CDN
Content Delivery Network
● Maior parte do tráfego dos usuários são de download
● CDN estão em diversas regiões
● 80% de um site é de objetos estático
● Conteúdo “mais próximo” do internauta
● Redução de custo direto na operação (rede, servidores,
pessoal, etc.)
http://thehackernews.com/2015/02/http2-fast-websites.html
HTTP/2
- HTTP 1.1 - liberado em 1999 (RFC 2616)
- HTTP/2 - 05/2015 (RFC 7540 e 7541)
HTTP/2
● Header compression
● Multiplexing
● TLS - Criptografia
● Priorização e dependências
● Server Push
Multiplexação
HTTP 1.1 HTTP/2
Priorização e Dependências
Um milhao de usuários simultâneos
● Minify de CSS e javascripts
● Consolidação de Javascripts
● Priorização dos objetos
Browsers compatíveis
● Chrome
● Firefox
● Internet Explorer
● Safari
● Opera
Um milhao de usuários simultâneos
Quem usa
● Twitter
● Google
● Akamai
● Facebook
Um milhao de usuários simultâneos
Arquitetura
● Servidor de aplicação não é servidor de objetos estático!
● Cache, Cache, Cache...
● Pense sempre na experiência do usuário (receber mais
rápido)
● Não tenha pudor, irá reescrever várias partes de código
● Use o que tiver de melhor de cada tecnologia
● Comunicação assíncrona
Um milhao de usuários simultâneos
Um milhao de usuários simultâneos
Referências
● http://calendar.perfplanet.com/
● http://blog.patrickmeenan.com/
● http://www.stevesouders.com/blog/
● http://www.webperformancetoday.com/
● http://httparchive.org/
● http://www.webpagetest.org/
● https://istlsfastyet.com/
● http://www.forbes.com/sites/johnrampton/2014/08/30/should-i-switch-from-http-to-https-for-seo-reasons/
● http://perf.fail/
● https://http2.github.io/
● http://bigqueri.es/c/http-archive
● http://www.webpagetest.org
● https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency
● fernando.ike at gmail.com
● http://www.fernandoike.com
● http://twitter.com/fernandoike
● http://linkedin.com/in/fernandoike
Fernando Ike
1 of 94

More Related Content

What's hot(20)

Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
MOSS Open Source Services887 views
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
Wellington Silva747 views
O que é Docker?O que é Docker?
O que é Docker?
Rodrigo Emereciano451 views
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
Michael Castillo Granados376 views
Apresentação dockerApresentação docker
Apresentação docker
Marcelo Fleury689 views
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
Leonardo de Oliveira790 views
Apresentacao dockerApresentacao docker
Apresentacao docker
Mauricio Martins667 views
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
Amazon Web Services LATAM1.8K views
Introdução ao dockerIntrodução ao docker
Introdução ao docker
Hugo Leonardo Costa e Silva1.3K views
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
Matheus Fidelis2.4K views
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
Wellington Silva302 views
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
Eustaquio Guimaraes mendesbsb160 views

More from Fernando Ike(20)

Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
Fernando Ike272 views
(Quase) 10 anos de DevOps, e agora? (Quase) 10 anos de DevOps, e agora?
(Quase) 10 anos de DevOps, e agora?
Fernando Ike142 views
Containers and DatabasesContainers and Databases
Containers and Databases
Fernando Ike125 views
DevOps Anti-Patterns - Campus PartyDevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus Party
Fernando Ike884 views
Blameless: A culpa não é suaBlameless: A culpa não é sua
Blameless: A culpa não é sua
Fernando Ike5.3K views
DevOps: A revolução ruidosa da TIDevOps: A revolução ruidosa da TI
DevOps: A revolução ruidosa da TI
Fernando Ike1.1K views
Docker Swarm ClusterDocker Swarm Cluster
Docker Swarm Cluster
Fernando Ike1.1K views
DevOps - Por onde começarDevOps - Por onde começar
DevOps - Por onde começar
Fernando Ike634 views
DevOps Anti-PatternsDevOps Anti-Patterns
DevOps Anti-Patterns
Fernando Ike3.2K views
A lista do PostgerSQL Brasil caiu? A lista do PostgerSQL Brasil caiu?
A lista do PostgerSQL Brasil caiu?
Fernando Ike744 views
Akamai Cloud SecurityAkamai Cloud Security
Akamai Cloud Security
Fernando Ike583 views
DevopsDevops
Devops
Fernando Ike851 views
Docker e postgresqlDocker e postgresql
Docker e postgresql
Fernando Ike4.4K views
Banco caiu! E a gora?Banco caiu! E a gora?
Banco caiu! E a gora?
Fernando Ike911 views
Researching postgresqlResearching postgresql
Researching postgresql
Fernando Ike1K views
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQL
Fernando Ike707 views
Postgres nuvensPostgres nuvens
Postgres nuvens
Fernando Ike6.1K views

Um milhao de usuários simultâneos

Editor's Notes

  1. Apresentação Biografia
  2. Mais, mais, mais usuários Mais e mais recurso Como suportar além do limite?
  3. De volta ao passado como as coisas funcionavam no passado
  4. Jogos sensação da época
  5. Projeto de pesquisa que deu origem ao Google
  6. How 36 works part 4,1
  7. Waterfall Para que serve?
  8. Exemplo de waterfall
  9. Erros comuns. Exemplo de tipos
  10. Proxy reverso para fazer compactação
  11. Time to First Byte
  12. http://jscompress.com/
  13. Mapa de todas fibras submarinas Como as distâncias interferem na performance
  14. Exemplo de traceroute para o japão
  15. Cache / Clones
  16. Como funciona uma CDN