SlideShare una empresa de Scribd logo
1 de 80
Otimizando a
performance do front-
end
em uma aplicação real
Full stack engineer
@andrehjr
andre.junior@resultadosdigitais.com.
br
ANDRÉ JUNIOR
1.52M+ de requests
~3 segundos
8M+ de requests
~2 segundos
Performance é a
feature mais
importante.
NO FRONT-END?
Microsoft
Amazon
Google
PERCEPÇÃO
HUMANA
Tempo de primeira
resposta
Tempo de primeira
resposta
Tempo de primeira
resposta
https://developers.google.com/web/fundamentals/performance/critical-rendering-path/
MELHOR
ENGAJAMENTO
MAIOR RETENÇÃO
DE USUÁRIOS
MAIS CONVERSÕES
Como eles se sentem?
SPEED MATTERS
MÉTRICAS
REAL USER
MONITORING (RUM)
Requisição http
Requisição http
Requisição http
Requisição http
80% do tempo
é gasto no Front-end.
DEFINIR METAS
FIRST RENDER
~600m
Critical Rendering Path
Critical Rendering Path
DO NOT BLOCK!
CARREGUE
SOMENTE
O NECESSÁRIO
CARREGUE TODO O
RESTO
ASSINCRONAMENTE
<script />
<script async />
REDES LENTAS
JÁ TESTOU SEU SITE EM UMA 3G?
INLINE CRITICAL
CSS
REDUZIR
REQUESTS
AO SERVER
IMAGENS EM
SPRITE
MINIFICAR
JAVASCRIPT / CSS
GZIP
Net flix gain
USE CONTENT
DELIVERY
NETWORK (CDN)
Cuidado com JS de
terceiros.
PRE-FETCH / DNS-
PREFETCH
/ PRE-RENDER
Don't stop.
HANDS-ON!
Confreaks
Confreaks
Confreaks
Confreaks
Confreaks
Confreaks
9to5mac
One more
Quick wins
NGX_PAGESPEED
HTTP 2.0/SPDY
FERRAMENTAS
Page speed Insights
NewRelic
Google Analytics
http://stevesouders.com/cuzillion/
> performance.timing
Google Web tools
REFERÊNCIAS
RESUMO
Carregue inicialmente somente
o que você precisa
Não bloqueie o critical rendering path
(usuários não gostam de ver uma tela em branco)
Conheça a sua aplicação, ajude o
browser!
Mais performance, economizando
recursos!
(R$$$$)
Tenha métricas de
cada mudança
@andrehjr
andre.junior@resultadosdigitais.com.br
shipit.resultadosdigitais.com.br
We're hiring! ;)
QUESTIONS?

Más contenido relacionado

Destacado

EYESON - The Next Generation in Video Recruiting
EYESON - The Next Generation in Video RecruitingEYESON - The Next Generation in Video Recruiting
EYESON - The Next Generation in Video RecruitingEyeson
 
วรรณคดีไทยโดดเด่นในอาเซียน....
วรรณคดีไทยโดดเด่นในอาเซียน....วรรณคดีไทยโดดเด่นในอาเซียน....
วรรณคดีไทยโดดเด่นในอาเซียน....PARPANUN69
 
Radio advert analysis
Radio advert analysisRadio advert analysis
Radio advert analysisdanhops888
 
SK - Recommendation - UL Dr. Conor Carroll
SK - Recommendation - UL Dr. Conor CarrollSK - Recommendation - UL Dr. Conor Carroll
SK - Recommendation - UL Dr. Conor CarrollSrdan Kovacevic
 

Destacado (8)

People Analytics is the New HR
People Analytics is the New HRPeople Analytics is the New HR
People Analytics is the New HR
 
EYESON - The Next Generation in Video Recruiting
EYESON - The Next Generation in Video RecruitingEYESON - The Next Generation in Video Recruiting
EYESON - The Next Generation in Video Recruiting
 
Technologies
TechnologiesTechnologies
Technologies
 
วรรณคดีไทยโดดเด่นในอาเซียน....
วรรณคดีไทยโดดเด่นในอาเซียน....วรรณคดีไทยโดดเด่นในอาเซียน....
วรรณคดีไทยโดดเด่นในอาเซียน....
 
Hola
HolaHola
Hola
 
Radio advert analysis
Radio advert analysisRadio advert analysis
Radio advert analysis
 
SK - Recommendation - UL Dr. Conor Carroll
SK - Recommendation - UL Dr. Conor CarrollSK - Recommendation - UL Dr. Conor Carroll
SK - Recommendation - UL Dr. Conor Carroll
 
Argis evento 27 05 15 invito
Argis evento 27 05 15 invitoArgis evento 27 05 15 invito
Argis evento 27 05 15 invito
 

Similar a TDC 2015 - Otimizando a performance do front end

[GUTS-RS] Testes de Performance
 [GUTS-RS] Testes de Performance [GUTS-RS] Testes de Performance
[GUTS-RS] Testes de PerformanceGUTS-RS
 
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactAplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactJean Carlo Emer
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieVivaldo Jose Breternitz
 
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Edlaine Zamora
 
Edge middleware acelerando o ecommerce.pdf
Edge middleware acelerando o ecommerce.pdfEdge middleware acelerando o ecommerce.pdf
Edge middleware acelerando o ecommerce.pdfMaira Bello
 
Darkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPDarkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPCiro Vargas
 
O que é angular?
O que é angular?O que é angular?
O que é angular?Caio Rolla
 
O papel do desenvolvedor front end
O papel do desenvolvedor front endO papel do desenvolvedor front end
O papel do desenvolvedor front endRomário J. Santos
 
Pwa e o futuro do frontend
Pwa e o futuro do frontendPwa e o futuro do frontend
Pwa e o futuro do frontendRaphael Moraes
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
Arquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeArquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeRafael Ponte
 
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de Facebook
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de FacebookTDC2013 - Desenvolvimento de Software e Colaboração em tempos de Facebook
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de FacebookPatricia Mantovani
 
Web performance [#perfmatters]
Web performance [#perfmatters]Web performance [#perfmatters]
Web performance [#perfmatters]Leandro Nunes
 
JS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endJS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endiMasters
 
apresentacao_TDC_POA_Raphael_Mantilha.pdf
apresentacao_TDC_POA_Raphael_Mantilha.pdfapresentacao_TDC_POA_Raphael_Mantilha.pdf
apresentacao_TDC_POA_Raphael_Mantilha.pdfRaphael Mantilha
 
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de FacebookTDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebooktdc-globalcode
 

Similar a TDC 2015 - Otimizando a performance do front end (20)

[GUTS-RS] Testes de Performance
 [GUTS-RS] Testes de Performance [GUTS-RS] Testes de Performance
[GUTS-RS] Testes de Performance
 
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactAplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre React
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/Mackenzie
 
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
 
Edge middleware acelerando o ecommerce.pdf
Edge middleware acelerando o ecommerce.pdfEdge middleware acelerando o ecommerce.pdf
Edge middleware acelerando o ecommerce.pdf
 
Darkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPDarkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHP
 
O que é angular?
O que é angular?O que é angular?
O que é angular?
 
DevXperience WPO com .NET CORE
DevXperience WPO com .NET COREDevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
 
Metralhando sua API
 Metralhando sua API Metralhando sua API
Metralhando sua API
 
O papel do desenvolvedor front end
O papel do desenvolvedor front endO papel do desenvolvedor front end
O papel do desenvolvedor front end
 
Pwa e o futuro do frontend
Pwa e o futuro do frontendPwa e o futuro do frontend
Pwa e o futuro do frontend
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Arquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeArquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do Hype
 
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de Facebook
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de FacebookTDC2013 - Desenvolvimento de Software e Colaboração em tempos de Facebook
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de Facebook
 
Web performance [#perfmatters]
Web performance [#perfmatters]Web performance [#perfmatters]
Web performance [#perfmatters]
 
Geek night-2015
Geek night-2015Geek night-2015
Geek night-2015
 
JS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endJS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front end
 
apresentacao_TDC_POA_Raphael_Mantilha.pdf
apresentacao_TDC_POA_Raphael_Mantilha.pdfapresentacao_TDC_POA_Raphael_Mantilha.pdf
apresentacao_TDC_POA_Raphael_Mantilha.pdf
 
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de FacebookTDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 

TDC 2015 - Otimizando a performance do front end

Notas del editor

  1. A RD é uma startup criada em 2011 especializada em Marketing Digital e tem como principal produto o RD Station, um software que reune varias ferramentas de mkt digital em uma só plataforma.
  2. Mas vale a pena? em Junho nós serviamos 1,50M de requests em um page load de média de 3 segundos
  3. Hoje, 2 milhões a mais, com praticamente a mesma infra, e batendo os 2 segundos da média. Escalabidade + velocidade.
  4. Começar com a seguinte afirmação. Performance é a sua melhor feature! Do que adianta ter todas as features do mundo, se você não as faz bem e rápido.
  5. No Front end? O que é performance no front end
  6. No Front end temos a humanas, acontece no client. fazem parte da equação, a experiencia de uso deles é o mais importante. E a maneira em como entregamos isso a eles é critico. Tanto de design/usabilidade e velocidade.
  7. No Front end temos a humanas, acontece no client. fazem parte da equação, a experiencia de uso deles é o mais importante. E a maneira em como entregamos isso a eles é critico. Tanto de design/usabilidade e velocidade.
  8. O usuário pode se comportar diferentemente de acordo com os tempos de resposta.
  9. 100ms - OK 1000ms - OK!
  10. 10000ms - NOT OK! chances altas do usuario utilizar outra ferramenta e ainda falar mal.
  11. Qual vocêss preferem? Do ponto de vista do usuario. Neste ponto, vemos que o load time não é "real". Qual é a experiencia do usuario aqui? Mobile??
  12. Estudos indicam, sites mais rapidos, geram maior.
  13. Google usa a velocidade em comparação para o Ranking. Caso do Bing - Speed == R$ - Inicio do projetom queremos aumentar o engajamento, queremos mais conversões. e foi assim que começou o projeto performance do RDStation. Mas como eu sei que o site está rápido?
  14. Começamos pelas métricas, ver os pontos, os gargalos. Utilizamos o New Relic, e lá temos uma nota. Então nosso objetivo era aumentar essa nota. Toda ferramenta de métricas tem uma, o webpage test tem o Speed Index por exemplo.
  15. Começamos pelas métricas, ver os pontos, os gargalos. Utilizamos o New Relic, e lá temos uma nota. Então nosso objetivo era aumentar essa nota. Toda ferramenta de métricas tem uma, o webpage test tem o Speed Index por exemplo.
  16. Todo o caminho entre o usuario ida-volta - 400ms só em latencia, DNS lookup - webpage.test
  17. E se esse site fosse pra ser carregado em 1 segundo?
  18. 3 segundos até carregar por completo, só renderiza em 1.6s. é bloqueado até então, enquanto baixa e monta os assets.
  19. 3 segundos até carregar por completo, só renderiza em 1.6s. é bloqueado até então, enquanto baixa e monta os assets.
  20. No Front end temos a humanas, acontece no client. fazem parte da equação, a experiencia de uso deles é o mais importante. E a maneira em como entregamos isso a eles é critico. Tanto de design/usabilidade e velocidade.
  21. A partir das métricas, nós definimos metas. Não sabiamos ao certo como atacar todos os pontos. Mas definir metas, foi um óttimo começo, começamos a estudar formas de melhorar, investigar, analisar, etc. Formamos um time somente para atacar estas melhorias.
  22. A cultura da RD é ágil, principalmente do time de produto. Agile é nossa base. Por isso nosso objetivo é colocar UX neste processo, e não o contrário. Quando falamos em Agile, falamos em uma cultura! Não temos somente backlogs, sprints, reviews, dailies... Nós temos a necessidade de trabalhar de forma ágil porque é esse o nosso combustível. É como funcionamos e é como sabemos trabalhar. Nosso produtos têm deploys constantes. Tem dias em que deployamos mais de 10 pull requests, e isso é motivo de orgulho para nós. Preferimos pedir licença do que pedir desculpas.
  23. Critical Rendering Path. HTML é parseado incrementalmente e vai fazendo o download de assets. Cria a DOM e o CSSOM para montar a Render Tree e finalmente Renderizar. Porém é bloqueado sempre que encontra o algo CSS e Javascripts sincronos. Pois Javascripts podem modificar tanto o DOM quanto o CSSOM. Por razões de Usabilidade o Browser bloqueia a renderização, pois seria péssimo renderizar sem estilos.
  24. Eliminate Javascript from the CRP POR ISSO COLOCAMOS O JAVASCRIPT NO FUNDO DA PAGINA!!! Mas o browser fica sem fazer nada enquanto é bloqueado? Não, o Parser é inteligente, enquanto a renderização é bloqueada ele continua a parsear e baixar os assets. Porém o usuário pode ficar vendo uma tela branca.
  25. Não bloqueie o PARSER. Essa é a regra.
  26. Somente o necessárrio para que o Browser consiga fazer renderizar o mais cedo possivel - No XYZ plugins - No full framework
  27. Delegue eventos, carregue tudo assincronamente.
  28. tags scripts bloqueiam, async nelas!
  29. ASYNC! Uma promessa ao browser dizendo que o seu código não vai fazer mudanca alguma no DOM ou no CSSOM, logo ele não irá bloquear
  30. Quase ninguem usa, dias atras postaram isso D:
  31. 3G sofrida de todos nós
  32. O mais importante, analise suas páginas, o seu site, defina os pontos criticos. O que não for critico, carregue depois
  33. Note que não existe nenhum css externo
  34. O que o usuário irá olhar primeiro? qual o objetivo daquela página para o usuário? Falar do exemplo do Google.com.br, se entrar no google.com.br vai ver CSS inline. É uma balança. Inline de css vai contra os principios do povo ;) Falar também das técnicas de LocalStorage
  35. Realmente você usa todo aquele CSS? aquele framework de CSS, realmente usa ele inteiro? Você cria um projeto novo e adiciona um framework de css por 'adicionar', é um tiro no pé.
  36. Obviamente, latencia, networking...
  37. Otimizar e comprimir as imagens, usar sprites, isso diminui o tamanho delas consideravelmente… Quem gosta de abrir um site e fazer download de uma jpeg de 3mb ? Seu plano de dados do celular agradece.
  38. Juntar tudo!
  39. GZIP EM TODOS OS ASSETS! Simples e fácil, pode configurar no próprio servidor, nginx/apache
  40. $$$$$ Netflix $$$$ MICROSOFT/BING
  41. Falar do exemplo de latencia dos 400ms do nodejs.org
  42. Falar do exemplo de latencia dos 400ms do nodejs.org
  43. Ajudar o browser. Pré-renderizar, fazer o fetch do DNS, fazer fetch de assets que serão usados nas próximas páginas para cache
  44. Falar do exemplo de latencia dos 400ms do nodejs.org
  45. O mais importante, analise suas páginas, o seu site, defina os pontos criticos. O que não for critico, carregue depois
  46. Mostrar o demo ou pegar screenshots
  47. Mostrar o demo ou pegar screenshots
  48. Mostrar o demo ou pegar screenshots
  49. Mostrar o demo ou pegar screenshots
  50. Mostrar o demo ou pegar screenshots
  51. Mostrar o demo ou pegar screenshots
  52. Mostrar o demo ou pegar screenshots
  53. Mostrar o demo ou pegar screenshots
  54. Mostrar o demo ou pegar screenshots
  55. Hands on. Vamos analisar! minha rede lenta.. 400ms só no backend. OK! porémm 14 segundos até carregar por completo.. WTF o que acham?
  56. 8 javascripts, 8 csss, dezenas de imagens, essa tela fica em branco, pelo menos não tem imagem de 5mb
  57. 7 fucking seconds? um CSS de 242kb no final da pagina? wtf
  58. EASY WAY OUT. NGX_PAGESPEED
  59. HOPE FOR THE FUTURE
  60. Web Tools -> Audit, Timeline (Critical Path)
  61. O mais importante, analise suas páginas, o seu site, defina os pontos criticos. O que não for critico, carregue depois
  62. Usabilidade é importante, seus usuários são importantes são humanos, nós temos muito preconceito com eles.
  63. Ajude o browser, ele otimiza o que pode, mas somente você conhece a sua aplicação, defina os pontos mais criticos, e os otimize :) Use as ferramentas, e métricas pra te auxiliarem
  64. Utilizando essas técnicas, muito provavelmente você irá economizar recursos, seus usuários vão ficar mais felizes, engajados, e não vão falar mal!
  65. Começar com a seguinte afirmação. Performance é a sua melhor feature! Do que adianta ter todas as features do mundo, se você não as faz bem e rápido.
  66. Alguem tem alguma razão sobre o porque não investir nisso?? SHUT UP AND TAKE MY MONEY