Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Quem?
        Nome: Filipe La Ruina
        Empresa: Cortex Intelligence
        Desenvolvedor Web a um bom tempo
              Serviços web escaláveis
                   Bolsa de Mulher
                   Novo Serviço no futuro ;)
              Com uma paixão por desenvolvimento de jogos
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    O que é Escalabilidade?
        Não é performance (mas ela afeta)
        Manter a performance
        Escalável = Aguenta aumento de tráfego
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Comofas?
        Verticalmente (mais forte)
               Compre servidores mais fortes
               Mais rápido de fazer
               Mais caro
        Horizontalmente (maior quantidade)          vamos falar desse :)

               Mais servidores
               Mais difícil (arquitetura tem que acompanhar)
               Mais barato (bem mais a longo prazo)
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Servidor
        Use PHP 5.3 (e 5.4 quando sair)
        Arquitetura ”separada”
        Cache
               APC (http://br.php.net/apc)
               Memcache (http://br2.php.net/memcache)
        Faça filas
               Gearman (http://br2.php.net/gearman)
                     Perfeito para atividades não-síncronas
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Arquitetura
        Banco
              Master Slave
                    Read/Write entre 80/20 – 90/10 %
        Load balancer
              Hardware
                    Mais caro
                    Mais rápido
              Software
                    Barato
                    Perlbal
                    Apache mod_proxy
                    ...
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Arquitetura
        Servidores de Memcache
              Armazena Sessões
              Armazena resultados de queries
        Servidores de Gearman
              Armazena seus Jobs
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Cliente
        HTTP Cache
               Menos Requests
               Cabeçalhos de Cache
                     Cache-Control: max-age
                     Expires
                     Etag
        Javascript e CSS
               Minify
               Gzip
               Otimizações
        Servidor de arquivos estáticos
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Dicas Gerais
        Evite acesso a disco
        Faça cache de memória
        Meça onde está seu gargalo
        Cache x1000
        Ative o APC
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Ferramentas
        Google PageSpeed
        Firebug
        Yahoo YSlow
        Xdebug (profiling)
        HipHop para análise estática
         (http://talks.php.net/show/latinoware/18)
Técnicas para ser escalável com PHP
PHP'n Rio 2011


    Links
        http://code.google.com/speed/articles/
        http://highscalability.com/
        http://duartes.org/gustavo/blog/post/what-your-
         computer-does-while-you-wait
        http://www.slideshare.net/techdude/scalable-web-
         architectures-common-patterns-and-approaches
Técnicas para ser escalável com PHP
PHP'n Rio 2011




                 Obrigado!
                       @filipelaruina
                  filaruina@gmail.com

Técnicas para ser escalável com PHP

  • 1.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Quem?  Nome: Filipe La Ruina  Empresa: Cortex Intelligence  Desenvolvedor Web a um bom tempo  Serviços web escaláveis  Bolsa de Mulher  Novo Serviço no futuro ;)  Com uma paixão por desenvolvimento de jogos
  • 2.
    Técnicas para serescalável com PHP PHP'n Rio 2011  O que é Escalabilidade?  Não é performance (mas ela afeta)  Manter a performance  Escalável = Aguenta aumento de tráfego
  • 3.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Comofas?  Verticalmente (mais forte)  Compre servidores mais fortes  Mais rápido de fazer  Mais caro  Horizontalmente (maior quantidade) vamos falar desse :)  Mais servidores  Mais difícil (arquitetura tem que acompanhar)  Mais barato (bem mais a longo prazo)
  • 4.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Servidor  Use PHP 5.3 (e 5.4 quando sair)  Arquitetura ”separada”  Cache  APC (http://br.php.net/apc)  Memcache (http://br2.php.net/memcache)  Faça filas  Gearman (http://br2.php.net/gearman)  Perfeito para atividades não-síncronas
  • 5.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Arquitetura  Banco  Master Slave  Read/Write entre 80/20 – 90/10 %  Load balancer  Hardware  Mais caro  Mais rápido  Software  Barato  Perlbal  Apache mod_proxy  ...
  • 6.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Arquitetura  Servidores de Memcache  Armazena Sessões  Armazena resultados de queries  Servidores de Gearman  Armazena seus Jobs
  • 7.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Cliente  HTTP Cache  Menos Requests  Cabeçalhos de Cache  Cache-Control: max-age  Expires  Etag  Javascript e CSS  Minify  Gzip  Otimizações  Servidor de arquivos estáticos
  • 8.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Dicas Gerais  Evite acesso a disco  Faça cache de memória  Meça onde está seu gargalo  Cache x1000  Ative o APC
  • 9.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Ferramentas  Google PageSpeed  Firebug  Yahoo YSlow  Xdebug (profiling)  HipHop para análise estática (http://talks.php.net/show/latinoware/18)
  • 10.
    Técnicas para serescalável com PHP PHP'n Rio 2011  Links  http://code.google.com/speed/articles/  http://highscalability.com/  http://duartes.org/gustavo/blog/post/what-your- computer-does-while-you-wait  http://www.slideshare.net/techdude/scalable-web- architectures-common-patterns-and-approaches
  • 11.
    Técnicas para serescalável com PHP PHP'n Rio 2011 Obrigado! @filipelaruina filaruina@gmail.com