SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
Clusterização de
   Aplicações
      PHP
    Diego Thomaz Flores
QUEM?
Analista e programador PHP há 8 anos, já
desenvolveu projetos para o Ministério do
Turismo, EMBRATUR, Fundação Getúlio Vargas,
Telefonica e Agência Click e Folha de São Paulo.

É Gerente de Projetos na 3YZ Performance Digital,
em Porto Alegre, agência especializada em
marketing e posicionamento online de marcas.

É responsável pela ECRAYON Tecnologia Criativa,
estúdio de desenvolvimento de sistemas web-
based.
AGENDA

•   Camadas de Execução
•   Webserver
•   Database
•   Codificação
•   Cache
•   Load Balance
•   Client-side scripting
Para fazer uma aplicação rodar bem numa
estrutura clusterizada, ela precisa ser
escrita para uma estrutura clusterizada!
CAMADAS DE EXECUÇÃO
• Conteúdo estático
• Scripts e bibliotecas client-side
• Scripts server-side
• Banco de Dados
• Webserver
WEBSERVER
DISTRIBUIÇÃO DE CONTEÚDO

Diferentes domínios para diferentes tipos de conteúdos
      http://www.exemplo.com        (PHP, dinâmico)
      http://estatico.exemplo.com (imagens, CSS, HTML, documentos)
WEBSERVER
APACHE PREFORK                APACHE WORKER

• Grande consumo de memória   • Menor consumo de memória
• Rápido                      • Apache 2.0+
• Pouco escalável             • Mais escalável
• Até 2 CPUs                  • Multi-thread
                              • 2 CPUs ou mais
WEBSERVER
OUTRAS OPÇÕES: servidores mais leves


  • lighttpd
  • tux
  • thttpd
  • nginx
Aplicações web geralmente não utilizam
processos que comprometam o
processamento, porém geram milhares de
dados e queries.

Dessa forma, em aplicações bem escritas, o
mais provável é que a base de dados entre
em colapso primeiro.
DATABASE
DIMENSIONAMENTO E TIPIFICAÇÃO CORRETA DOS DADOS

   INT, TINYINT, BIGINT, FLOAT, DOUBLE
   CHAR, VARCHAR, TEXT, BLOG



InnoDB vs. MyISAM

   InnoDB -> Foreign Keys, Constraints, Transactions
   MyISAM -> Data storage
DATABASE
READ-TO-WRITE RATIO – R2W

A parte mais importante na clusterização da base de dados é a
definição da taxa de leitura por escrita (read-to-write ratio).

            R2W > 30 reads = Configuração Master-Slave
DATABASE
CONFIGURAÇÃO MASTER-MASTER

    • Utilizada para problemas de storage
    • Exige atenção nas Primary Keys (par-ímpar)
    • Não indicada para mais de 2 servidores
DATABASE
CONFIGURAÇÃO MASTER-SLAVE

UP SIDE
      • SELECT são executadas no Slave
      • INSERT, UPDATE, DELETE são executadas no Master

DOWN SIDE
   • Lag de sincronização
   • Lag de replicação
           Evite funções resolvidas em tempo de execução: NOW()
DATABASE
SHARDING: ‘particionando’ o banco de dados

UP SIDE
      • Aplicável em schemas, tables e rows
      • Distribui os dados de maneira organizada
      • Cria um modelo semântico

DOWN SIDE
   • Exige máquinas fisicamente distintas
   • Impede JOINs entre elementos em máquinas diferentes
CODIFICAÇÃO
DESIGN PATTERNS

BOAS PRÁTICAS
     Atenção aos tempos de processamento das funções nativas
     Aspas simples vs. aspas duplas
     Defina apenas as variáveis que fazem sentido


OPCode OTIMIZADO
     PECL::APC
     Xcache
     Zend Platform
CACHE
STORAGE: formas de implementação

    • INDIVIDUAL
          Fácil, mas com diferença de conteúdo por tempo de execução


    • CENTRALIZADO
          Fácil, mas Single Point of Failure


    • DISTRIBUÍDO
          Difícil, porém correto e elegante
CACHE
MEMORY: memcached

    • Data cache
    • View cache
    • PECL::memcache (3.0.2+ para redundância)
CACHE
PECL::memcache->SESSION

    • INDIVIDUAL
          Stickyness: o usuário #1 acessa sempre o server #1


    • CENTRALIZADO
          Consistente, mas Single Point of Failure


    • DISTRIBUÍDO
          Replicação e redundância
LOAD BALANCE
LOAD BALANCE
ROUND-ROBIN DNS
    • Não garante tolerância a falhas nem alta disponibilidade

SOFTWARES ESPECIALIZADOS
    • Geralmente exigem redundância de dados, aumentando o
      custo total em função de hardware

CAPACITY PLANNING
    • Precisam ser definidos a partir de dados reais e não por
      estimativas
LOAD BALANCE
STRESS TEST
     • Em ambiente de homologação e produção

MONITORAMENTO E DEFINIÇÃO DE ESTATÍSTICAS
   • Apache ab, Siege (aplicação)
   • Ganglia, Nagios (OS e serviços)
   • Firebug, YSlow (client-side)
   • Xdebug           (server-side)
CLIENT-SIDE SCRIPTING
BENCHMARKING DE BIBLIOTECAS
    • Nem sempre a mais famosa tem melhor performance

USO CORRETO DOS TIPOS DE IMAGENS
     • JPG, GIF, PNG: cada um tem sua hora e local
     • Exportação e recorte para web fazem bem
CLIENT-SIDE SCRIPTING
COMPRESSÃO DE JAVASCRIPT
CLIENT-SIDE SCRIPTING
COMPRESSÃO DE JAVASCRIPT
REFERÊNCIAS
•   PHP Architect - Volume 8, Issue 3, March 2009
    http://www.phparch.com



• SCHLOSSNAGLE, George. Advanced PHP Programming. Sams, 2004.



•   MINETTO, Elton Luís. Desenvolvendo aplicações web escaláveis
    http://www.eltonminetto.net/docs/app_web_escalaveis_xxe.pdf
Obrigado!
     @diegotf
diegotf@gmail.com

Contenu connexe

Tendances

Frontline - Rails3.1
Frontline - Rails3.1Frontline - Rails3.1
Frontline - Rails3.1
Daniel Lopes
 

Tendances (20)

Jud con presentation_brazil_sergio-fantin
Jud con presentation_brazil_sergio-fantinJud con presentation_brazil_sergio-fantin
Jud con presentation_brazil_sergio-fantin
 
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
 
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
 
SQL Server over SMB3
SQL Server over SMB3SQL Server over SMB3
SQL Server over SMB3
 
Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Frontline - Rails3.1
Frontline - Rails3.1Frontline - Rails3.1
Frontline - Rails3.1
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
 
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
 
PHP Conference 2015: Construindo e mantendo aplicações multi-tenant (multi-c...
PHP Conference 2015:  Construindo e mantendo aplicações multi-tenant (multi-c...PHP Conference 2015:  Construindo e mantendo aplicações multi-tenant (multi-c...
PHP Conference 2015: Construindo e mantendo aplicações multi-tenant (multi-c...
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - Avançado
 
PostgreSQL Ha
PostgreSQL HaPostgreSQL Ha
PostgreSQL Ha
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWS
 
O caminho das pedras na construção de uma aplicação cloud friendly
O caminho das pedras na construção de uma aplicação cloud friendlyO caminho das pedras na construção de uma aplicação cloud friendly
O caminho das pedras na construção de uma aplicação cloud friendly
 
Inovacao em-escala-final
Inovacao em-escala-finalInovacao em-escala-final
Inovacao em-escala-final
 
Quando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoQuando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucesso
 
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorDeploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
 
Plataforma do clic rbs
Plataforma do clic rbsPlataforma do clic rbs
Plataforma do clic rbs
 

En vedette

Desenvolvendo com Segurança em PHP
Desenvolvendo com Segurança em PHPDesenvolvendo com Segurança em PHP
Desenvolvendo com Segurança em PHP
Campus Party Brasil
 

En vedette (8)

Cortes incríveis
Cortes incríveisCortes incríveis
Cortes incríveis
 
Ti verde e thineco
Ti verde e thinecoTi verde e thineco
Ti verde e thineco
 
Zf campus party_2011
Zf campus party_2011Zf campus party_2011
Zf campus party_2011
 
Técnicas de Apuração para Blogueiros
Técnicas de Apuração para BlogueirosTécnicas de Apuração para Blogueiros
Técnicas de Apuração para Blogueiros
 
Toques do brasil
Toques do brasilToques do brasil
Toques do brasil
 
Desenvolvendo com Segurança em PHP
Desenvolvendo com Segurança em PHPDesenvolvendo com Segurança em PHP
Desenvolvendo com Segurança em PHP
 
De uma garagem para a democratização do comércio on-line
De uma garagem para a democratização do comércio on-lineDe uma garagem para a democratização do comércio on-line
De uma garagem para a democratização do comércio on-line
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?
 

Similaire à ClusterizaçãO De AplicaçõEs Php

Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
iMasters
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
Marco Pinheiro
 
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
CPqD
 

Similaire à ClusterizaçãO De AplicaçõEs Php (20)

Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMR
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?
 
BIG DATA na UFSM
BIG DATA na UFSMBIG DATA na UFSM
BIG DATA na UFSM
 
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...
 
Desenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperDesenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack Developer
 
Introducao ao Amazon Redshift
Introducao ao Amazon RedshiftIntroducao ao Amazon Redshift
Introducao ao Amazon Redshift
 
Internet sem drama
Internet sem dramaInternet sem drama
Internet sem drama
 
Best pratices para desenvolvimento mobile
Best pratices para desenvolvimento mobileBest pratices para desenvolvimento mobile
Best pratices para desenvolvimento mobile
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Web seminario varnish
Web seminario varnishWeb seminario varnish
Web seminario varnish
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
 
Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvem
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
 

Plus de Campus Party Brasil

Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
Campus Party Brasil
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
Campus Party Brasil
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
Campus Party Brasil
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Campus Party Brasil
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
Campus Party Brasil
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
Campus Party Brasil
 

Plus de Campus Party Brasil (20)

Wordpress
WordpressWordpress
Wordpress
 
Buracos negros
Buracos negrosBuracos negros
Buracos negros
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivos
 
Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
 
Passeio virtual pelo LHC
Passeio virtual pelo LHCPasseio virtual pelo LHC
Passeio virtual pelo LHC
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectX
 
Blue Via
Blue ViaBlue Via
Blue Via
 
Linux para iniciantes
Linux para iniciantesLinux para iniciantes
Linux para iniciantes
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software Livre
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
 
Vida de Programador
Vida de Programador Vida de Programador
Vida de Programador
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
 
Desafio Robótica Livre
Desafio Robótica LivreDesafio Robótica Livre
Desafio Robótica Livre
 

Dernier

Dernier (9)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

ClusterizaçãO De AplicaçõEs Php

  • 1. Clusterização de Aplicações PHP Diego Thomaz Flores
  • 2. QUEM? Analista e programador PHP há 8 anos, já desenvolveu projetos para o Ministério do Turismo, EMBRATUR, Fundação Getúlio Vargas, Telefonica e Agência Click e Folha de São Paulo. É Gerente de Projetos na 3YZ Performance Digital, em Porto Alegre, agência especializada em marketing e posicionamento online de marcas. É responsável pela ECRAYON Tecnologia Criativa, estúdio de desenvolvimento de sistemas web- based.
  • 3. AGENDA • Camadas de Execução • Webserver • Database • Codificação • Cache • Load Balance • Client-side scripting
  • 4. Para fazer uma aplicação rodar bem numa estrutura clusterizada, ela precisa ser escrita para uma estrutura clusterizada!
  • 5. CAMADAS DE EXECUÇÃO • Conteúdo estático • Scripts e bibliotecas client-side • Scripts server-side • Banco de Dados • Webserver
  • 6. WEBSERVER DISTRIBUIÇÃO DE CONTEÚDO Diferentes domínios para diferentes tipos de conteúdos http://www.exemplo.com (PHP, dinâmico) http://estatico.exemplo.com (imagens, CSS, HTML, documentos)
  • 7. WEBSERVER APACHE PREFORK APACHE WORKER • Grande consumo de memória • Menor consumo de memória • Rápido • Apache 2.0+ • Pouco escalável • Mais escalável • Até 2 CPUs • Multi-thread • 2 CPUs ou mais
  • 8. WEBSERVER OUTRAS OPÇÕES: servidores mais leves • lighttpd • tux • thttpd • nginx
  • 9. Aplicações web geralmente não utilizam processos que comprometam o processamento, porém geram milhares de dados e queries. Dessa forma, em aplicações bem escritas, o mais provável é que a base de dados entre em colapso primeiro.
  • 10. DATABASE DIMENSIONAMENTO E TIPIFICAÇÃO CORRETA DOS DADOS INT, TINYINT, BIGINT, FLOAT, DOUBLE CHAR, VARCHAR, TEXT, BLOG InnoDB vs. MyISAM InnoDB -> Foreign Keys, Constraints, Transactions MyISAM -> Data storage
  • 11. DATABASE READ-TO-WRITE RATIO – R2W A parte mais importante na clusterização da base de dados é a definição da taxa de leitura por escrita (read-to-write ratio). R2W > 30 reads = Configuração Master-Slave
  • 12. DATABASE CONFIGURAÇÃO MASTER-MASTER • Utilizada para problemas de storage • Exige atenção nas Primary Keys (par-ímpar) • Não indicada para mais de 2 servidores
  • 13. DATABASE CONFIGURAÇÃO MASTER-SLAVE UP SIDE • SELECT são executadas no Slave • INSERT, UPDATE, DELETE são executadas no Master DOWN SIDE • Lag de sincronização • Lag de replicação Evite funções resolvidas em tempo de execução: NOW()
  • 14. DATABASE SHARDING: ‘particionando’ o banco de dados UP SIDE • Aplicável em schemas, tables e rows • Distribui os dados de maneira organizada • Cria um modelo semântico DOWN SIDE • Exige máquinas fisicamente distintas • Impede JOINs entre elementos em máquinas diferentes
  • 15. CODIFICAÇÃO DESIGN PATTERNS BOAS PRÁTICAS Atenção aos tempos de processamento das funções nativas Aspas simples vs. aspas duplas Defina apenas as variáveis que fazem sentido OPCode OTIMIZADO PECL::APC Xcache Zend Platform
  • 16. CACHE STORAGE: formas de implementação • INDIVIDUAL Fácil, mas com diferença de conteúdo por tempo de execução • CENTRALIZADO Fácil, mas Single Point of Failure • DISTRIBUÍDO Difícil, porém correto e elegante
  • 17. CACHE MEMORY: memcached • Data cache • View cache • PECL::memcache (3.0.2+ para redundância)
  • 18. CACHE PECL::memcache->SESSION • INDIVIDUAL Stickyness: o usuário #1 acessa sempre o server #1 • CENTRALIZADO Consistente, mas Single Point of Failure • DISTRIBUÍDO Replicação e redundância
  • 20. LOAD BALANCE ROUND-ROBIN DNS • Não garante tolerância a falhas nem alta disponibilidade SOFTWARES ESPECIALIZADOS • Geralmente exigem redundância de dados, aumentando o custo total em função de hardware CAPACITY PLANNING • Precisam ser definidos a partir de dados reais e não por estimativas
  • 21. LOAD BALANCE STRESS TEST • Em ambiente de homologação e produção MONITORAMENTO E DEFINIÇÃO DE ESTATÍSTICAS • Apache ab, Siege (aplicação) • Ganglia, Nagios (OS e serviços) • Firebug, YSlow (client-side) • Xdebug (server-side)
  • 22. CLIENT-SIDE SCRIPTING BENCHMARKING DE BIBLIOTECAS • Nem sempre a mais famosa tem melhor performance USO CORRETO DOS TIPOS DE IMAGENS • JPG, GIF, PNG: cada um tem sua hora e local • Exportação e recorte para web fazem bem
  • 25. REFERÊNCIAS • PHP Architect - Volume 8, Issue 3, March 2009 http://www.phparch.com • SCHLOSSNAGLE, George. Advanced PHP Programming. Sams, 2004. • MINETTO, Elton Luís. Desenvolvendo aplicações web escaláveis http://www.eltonminetto.net/docs/app_web_escalaveis_xxe.pdf
  • 26. Obrigado! @diegotf diegotf@gmail.com