SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
PERFORMANCE
              FRONT-END              Com resultado




segunda-feira, 29 de outubro de 12
GIOVANNI KEPPELEN
                                     http://github.com/keppelen/talks
segunda-feira, 29 de outubro de 12
http://braziljs.org
segunda-feira, 29 de outubro de 12
+20 Milhões usuários
                                     +22 Milhões acessos por mês
                                     +75 Milhões pageviews mês
                 Presente em 4 países(Brasil, Argentina Chile, México)
segunda-feira, 29 de outubro de 12
“1 - FIRST AND FOREMOST, WE
  BELIEVE THAT SPEED IS MORE
 THAN A FEATURE. SPEED IS THE
  MOST IMPORTANT FEATURE.”

                                                                                       Fred Wilson


                     http://www.businessinsider.com/10-golden-principles-successful-web-apps-2010-3
segunda-feira, 29 de outubro de 12
segunda-feira, 29 de outubro de 12
segunda-feira, 29 de outubro de 12
E AI? COMO FAZER MEUS
             USUÁRIOS FICAREM ASSIM?




segunda-feira, 29 de outubro de 12
COMO ERA?
                                        ERA TRISTE MESMO.




    * Load página em 9.5s
    * Vários e vários padrões
    * Pouca documentação (quase nenhuma)
    * Código redundante
    * Crescimento muito acelerado
    * Novos Serviços

segunda-feira, 29 de outubro de 12
PRECISAMOS FAZER ALGO!!!


                             MAS O QUE É MAIS
                               IMPORTANTE?

segunda-feira, 29 de outubro de 12
OTIMIZAR
                                     DEFINIR PADRÕES
                                       REUTILIZAR
                                        AGILIZAR
                                      DOCUMENTAR
segunda-feira, 29 de outubro de 12
segunda-feira, 29 de outubro de 12
OTIMIZAR
                                     DEFINIR PADRÕES
                                       REUTILIZAR
                                        AGILIZAR
                                      DOCUMENTAR
segunda-feira, 29 de outubro de 12
O QUE CONSEGUIMOS COM
                ISSO?




segunda-feira, 29 de outubro de 12
O QUE CONSEGUIMOS COM
                ISSO?




    * Aumento de 70% na criação de novas páginas e manutenção do código
    * Com isso temos mais tempo para criar coisas novas.

segunda-feira, 29 de outubro de 12
TANTAS REGRAS O QUE FAZER?


            Habilite GZIP                      Junte arquivos Javascript
            Minifique Javascript               Junte arquivos CSS
            Minifique CSS                      Use Sprites
            Comprima HTML                      Coloque o Javascript no fim
            Não redimensione imagens no HTML   Coloque o CSS no topo
            Otimize as imagens                 Adie o carregamento do que puder
            Pense no formato das imagens       Otimize o First-View
            Diminua Cookies e headers          Use ferramentas de diagnóstico




segunda-feira, 29 de outubro de 12
ANALISANDO A APLICAÇÃO
         Concluimos que fazer os seguintes tópicos traria resultado, e
                       seria de grande importância.


 1- Servir sempre o conteúdo estático, sem ir ao banco toda vez que um “usuário” entrasse
 ou desse F5 na página.


 2 - Minificar e juntar arquivos CSS/JS/


 3 - Diminuir requests (img)




segunda-feira, 29 de outubro de 12
1 - SERVIR CONTEÚDO ESTÁTICO
                                     Tecnologia usada NGINX




segunda-feira, 29 de outubro de 12
1 - SERVIR CONTEÚDO ESTÁTICO
                * Isso era o “pecado” de nossa aplicação.
     * Era necessário 20 a 45 servidores para dar conta dos acessos.

                                     * Load da página em 8s a 10s. Inaceitável :-)




segunda-feira, 29 de outubro de 12
1 - SERVIR CONTEÚDO ESTÁTICO
                                     O que ganhamos com isso?

       * Diminuimos requisições ao banco, agora ao invés de ir no
      banco toda hora que o usuário entra no site, vamos apenas de
        5 em 5min, pois alguma coisa na oferta pode ter mudado.

                     * Dimuimos de 20/45 para apenas 5/10 servidores.

      * Load da página em 6 - 7s, pois agora isso já está no cache, só
                 precisamos chamar arquivos estáticos.



segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS




segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS

      Nossa aplicação tinha mais de 4 arquivos JS na página para ser
     executado. Na maioria das vezes, eram chamados arquivos que
                     não estavam sendo utilizados.




segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                       REQUESTS CSS/JS




                                     SquishIt
                                       MAS..... PORQUE....


segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                     REQUESTS CSS/JS



           UglifyJS                         LESS
                                          Compiler
   YUI                                          Compiler
Compressor                                      (Google)

segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                     REQUESTS CSS/JS




     FÁCIL, ÁGIL, FÁCIL INSTALAÇÃO, FUNCIONA PERFEITAMENTE

segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                     REQUESTS IMAGENS




segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                     REQUESTS IMAGENS




                                     Problema!!!




segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                       REQUESTS IMAGENS




                                       Problema!!!


                                     Problema!!!

segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                       REQUESTS IMAGENS




                                       Problema!!!


                                     Problema!!!
            Problema!!!
segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                     REQUESTS IMAGENS




                              Mas porque??

segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                      REQUESTS IMAGENS


              * O carregamento das imagens era o que mais tinha
           problemas, pois eram publicada mais de 90 ofertas por dia.

                          * Como resolver isso de forma rápida e prática?

                       * Não podemos reescrever “back-end” para isso.




segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                                 REQUESTS IMAGENS




                     Lazy Load
                                     SOLUÇÃO RÁPIDA, E PARA NOSSA APLICAÇÃO SERVIU MUITO BEM




segunda-feira, 29 de outubro de 12
2 - ARQUIVOS ESTÁTICOS
                                     REQUESTS IMAGENS


        Lazy Load é um plugin jQuery. Ele atrasa o carregamento das
        imagens. Imagens fora da viewport não será carregado antes
            que o usuário role a página. Isto é o oposto do pré-
                        carregamento de imagem.

     Com isso o browser depois da rolagem so tera que carregar as
    imagnes que estiver na viewport. O que ganhamos isso? Reduzir
                          a carga no servidor.




segunda-feira, 29 de outubro de 12
O QUE CONSEGUIMOS COM
                ISSO?

                   * First View para 5s - Second View para menos de 4s

                    * de 10 request de arquivos estáticos para apenas 2

                        * Economia de $16.000,00 de servidores por dia




segunda-feira, 29 de outubro de 12
R$ 1.000.000,00


segunda-feira, 29 de outubro de 12
PRÓXIMOS PASSOS

                                      * Otimizar ainda mais. ( Claro =] )

                                         * Uso de Apis HTML5/JS

                                             * Open Social API




segunda-feira, 29 de outubro de 12
GITHUB.COM/KEPPELEN
          GITHUB.COM/PEIXEURBANO
segunda-feira, 29 de outubro de 12
Obrigado
                                     @KEPPELEN



segunda-feira, 29 de outubro de 12

Más contenido relacionado

Similar a Performance Front-end | Front In Maceió

Similar a Performance Front-end | Front In Maceió (6)

Performance Front-end
Performance Front-endPerformance Front-end
Performance Front-end
 
Palestra Puppet Hora Livre
Palestra Puppet Hora LivrePalestra Puppet Hora Livre
Palestra Puppet Hora Livre
 
A evolução dos motores de busca
A evolução dos motores de buscaA evolução dos motores de busca
A evolução dos motores de busca
 
Oficina Puppet latinoware
Oficina Puppet latinowareOficina Puppet latinoware
Oficina Puppet latinoware
 
Aula android 03
Aula android 03Aula android 03
Aula android 03
 
Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???
 

Performance Front-end | Front In Maceió

  • 1. PERFORMANCE FRONT-END Com resultado segunda-feira, 29 de outubro de 12
  • 2. GIOVANNI KEPPELEN http://github.com/keppelen/talks segunda-feira, 29 de outubro de 12
  • 4. +20 Milhões usuários +22 Milhões acessos por mês +75 Milhões pageviews mês Presente em 4 países(Brasil, Argentina Chile, México) segunda-feira, 29 de outubro de 12
  • 5. “1 - FIRST AND FOREMOST, WE BELIEVE THAT SPEED IS MORE THAN A FEATURE. SPEED IS THE MOST IMPORTANT FEATURE.” Fred Wilson http://www.businessinsider.com/10-golden-principles-successful-web-apps-2010-3 segunda-feira, 29 de outubro de 12
  • 6. segunda-feira, 29 de outubro de 12
  • 7. segunda-feira, 29 de outubro de 12
  • 8. E AI? COMO FAZER MEUS USUÁRIOS FICAREM ASSIM? segunda-feira, 29 de outubro de 12
  • 9. COMO ERA? ERA TRISTE MESMO. * Load página em 9.5s * Vários e vários padrões * Pouca documentação (quase nenhuma) * Código redundante * Crescimento muito acelerado * Novos Serviços segunda-feira, 29 de outubro de 12
  • 10. PRECISAMOS FAZER ALGO!!! MAS O QUE É MAIS IMPORTANTE? segunda-feira, 29 de outubro de 12
  • 11. OTIMIZAR DEFINIR PADRÕES REUTILIZAR AGILIZAR DOCUMENTAR segunda-feira, 29 de outubro de 12
  • 12. segunda-feira, 29 de outubro de 12
  • 13. OTIMIZAR DEFINIR PADRÕES REUTILIZAR AGILIZAR DOCUMENTAR segunda-feira, 29 de outubro de 12
  • 14. O QUE CONSEGUIMOS COM ISSO? segunda-feira, 29 de outubro de 12
  • 15. O QUE CONSEGUIMOS COM ISSO? * Aumento de 70% na criação de novas páginas e manutenção do código * Com isso temos mais tempo para criar coisas novas. segunda-feira, 29 de outubro de 12
  • 16. TANTAS REGRAS O QUE FAZER? Habilite GZIP Junte arquivos Javascript Minifique Javascript Junte arquivos CSS Minifique CSS Use Sprites Comprima HTML Coloque o Javascript no fim Não redimensione imagens no HTML Coloque o CSS no topo Otimize as imagens Adie o carregamento do que puder Pense no formato das imagens Otimize o First-View Diminua Cookies e headers Use ferramentas de diagnóstico segunda-feira, 29 de outubro de 12
  • 17. ANALISANDO A APLICAÇÃO Concluimos que fazer os seguintes tópicos traria resultado, e seria de grande importância. 1- Servir sempre o conteúdo estático, sem ir ao banco toda vez que um “usuário” entrasse ou desse F5 na página. 2 - Minificar e juntar arquivos CSS/JS/ 3 - Diminuir requests (img) segunda-feira, 29 de outubro de 12
  • 18. 1 - SERVIR CONTEÚDO ESTÁTICO Tecnologia usada NGINX segunda-feira, 29 de outubro de 12
  • 19. 1 - SERVIR CONTEÚDO ESTÁTICO * Isso era o “pecado” de nossa aplicação. * Era necessário 20 a 45 servidores para dar conta dos acessos. * Load da página em 8s a 10s. Inaceitável :-) segunda-feira, 29 de outubro de 12
  • 20. 1 - SERVIR CONTEÚDO ESTÁTICO O que ganhamos com isso? * Diminuimos requisições ao banco, agora ao invés de ir no banco toda hora que o usuário entra no site, vamos apenas de 5 em 5min, pois alguma coisa na oferta pode ter mudado. * Dimuimos de 20/45 para apenas 5/10 servidores. * Load da página em 6 - 7s, pois agora isso já está no cache, só precisamos chamar arquivos estáticos. segunda-feira, 29 de outubro de 12
  • 21. 2 - ARQUIVOS ESTÁTICOS segunda-feira, 29 de outubro de 12
  • 22. 2 - ARQUIVOS ESTÁTICOS Nossa aplicação tinha mais de 4 arquivos JS na página para ser executado. Na maioria das vezes, eram chamados arquivos que não estavam sendo utilizados. segunda-feira, 29 de outubro de 12
  • 23. 2 - ARQUIVOS ESTÁTICOS REQUESTS CSS/JS SquishIt MAS..... PORQUE.... segunda-feira, 29 de outubro de 12
  • 24. 2 - ARQUIVOS ESTÁTICOS REQUESTS CSS/JS UglifyJS LESS Compiler YUI Compiler Compressor (Google) segunda-feira, 29 de outubro de 12
  • 25. 2 - ARQUIVOS ESTÁTICOS REQUESTS CSS/JS FÁCIL, ÁGIL, FÁCIL INSTALAÇÃO, FUNCIONA PERFEITAMENTE segunda-feira, 29 de outubro de 12
  • 26. 2 - ARQUIVOS ESTÁTICOS REQUESTS IMAGENS segunda-feira, 29 de outubro de 12
  • 27. 2 - ARQUIVOS ESTÁTICOS REQUESTS IMAGENS Problema!!! segunda-feira, 29 de outubro de 12
  • 28. 2 - ARQUIVOS ESTÁTICOS REQUESTS IMAGENS Problema!!! Problema!!! segunda-feira, 29 de outubro de 12
  • 29. 2 - ARQUIVOS ESTÁTICOS REQUESTS IMAGENS Problema!!! Problema!!! Problema!!! segunda-feira, 29 de outubro de 12
  • 30. 2 - ARQUIVOS ESTÁTICOS REQUESTS IMAGENS Mas porque?? segunda-feira, 29 de outubro de 12
  • 31. 2 - ARQUIVOS ESTÁTICOS REQUESTS IMAGENS * O carregamento das imagens era o que mais tinha problemas, pois eram publicada mais de 90 ofertas por dia. * Como resolver isso de forma rápida e prática? * Não podemos reescrever “back-end” para isso. segunda-feira, 29 de outubro de 12
  • 32. 2 - ARQUIVOS ESTÁTICOS REQUESTS IMAGENS Lazy Load SOLUÇÃO RÁPIDA, E PARA NOSSA APLICAÇÃO SERVIU MUITO BEM segunda-feira, 29 de outubro de 12
  • 33. 2 - ARQUIVOS ESTÁTICOS REQUESTS IMAGENS Lazy Load é um plugin jQuery. Ele atrasa o carregamento das imagens. Imagens fora da viewport não será carregado antes que o usuário role a página. Isto é o oposto do pré- carregamento de imagem. Com isso o browser depois da rolagem so tera que carregar as imagnes que estiver na viewport. O que ganhamos isso? Reduzir a carga no servidor. segunda-feira, 29 de outubro de 12
  • 34. O QUE CONSEGUIMOS COM ISSO? * First View para 5s - Second View para menos de 4s * de 10 request de arquivos estáticos para apenas 2 * Economia de $16.000,00 de servidores por dia segunda-feira, 29 de outubro de 12
  • 36. PRÓXIMOS PASSOS * Otimizar ainda mais. ( Claro =] ) * Uso de Apis HTML5/JS * Open Social API segunda-feira, 29 de outubro de 12
  • 37. GITHUB.COM/KEPPELEN GITHUB.COM/PEIXEURBANO segunda-feira, 29 de outubro de 12
  • 38. Obrigado @KEPPELEN segunda-feira, 29 de outubro de 12