SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Precisamos de um
barco maior
Introdução ao dimensionamento de
aplicações
Quem sou eu?
Oi! Eu sou o Jackson! Eu gosto de
me descrever como desenvolvedor e
líder técnico, com um conhecimento
muito forte em desenvolvimento web
e móvel.
Desde 1998 desenvolvo websites e
aplicações web, mas em 2009 mudei
minha carreira para o
desenvolvimento mobile.
JACKSON FERREIRA DE
ANDRADE MAFRA
http://about.me/jacksonfdam
https://bitbucket.org/jacksonfdam
https://github.com/jacksonfdam
http://linkedin.com/in/jacksonfdam
@jacksonfdam
Agenda
Por que precisamos escalar?
Primeiros passos - o que eu poderia fazer hoje?
Escala horizontal e vertical
Proteção contra ameaças
Principais conceitos
e termos
Existem várias ideias importantes ao
considerar as várias opções de ajuste
disponíveis.
● Aplicação
● Instância do aplicativo
● Trabalhador
● Conexão do Navegador
Aplicação
Instancia
Usuário Final
Aplicação
Instancia
Usuário Final
Worker
Aplicação
Instancia
Usuário Final
Worker Worker
Aplicação
Instancia
Usuário Final
Worker Worker Worker
Aplicação
Instancia
Usuário Final
Worker Worker Worker
Instancia
Worker Worker
Aplicação
Instancia
Usuário Final
Worker Worker Worker
Instancia
Worker
Aplicação
Instancia
Usuário Final
Worker Worker Worker
Aplicação
Instancia
Usuário Final
Worker
Aplicação
Instancia
Usuário Final
Worker
Por que precisamos escalar?
Desempenho lento
Usuários tentando acessar seu aplicativo, mas
a espera por recursos disponíveis faz com que
ele seja lento
Interrupções
Hardware não pode acompanhar - erros para
alguns usuários
Indisponibilidade
Carga alta, eventualmente, faz com que seu
servidor de crash, levando tudo para baixo
Primeiros passos - o que
eu poderia fazer hoje?
Separação de interesses
● Não apenas web / db
○ Servidor separado para lidar com
tarefas / cron na fila
● Quando você trabalha com sua arquitetura,
considere se componentes diferentes da sua
plataforma podem ser independentes
○ Eles podem se comunicar usando APIs
quando necessário
Primeiros passos - o que
eu poderia fazer hoje?
Otimização
● Não é estritamente escala, mas atinge o
mesmo
● Mais rendimento do seu hardware existente
● Instale algo como NewRelic, ative seu log
de consultas lentas do banco de dados
● Enfrente os gargalos comuns
O que é Scaling Vertical?
Em outras palavras - um servidor maior
Simples de configurar
Maior custo
Ponto único de falha
O que é Scaling
Horizontal?
Um cluster é simplesmente um grupo de
servidores.
Um balanceador de carga distribui a carga
de trabalho entre os servidores em um
cluster.
A qualquer momento, um novo servidor da
Web pode ser adicionado ao cluster
existente para lidar com mais solicitações
de usuários que acessam seu aplicativo;
isso é escala horizontal.
O que é Scaling
Horizontal?
O balanceador de carga tem uma única
responsabilidade: decidir qual servidor do
cluster receberá uma solicitação que foi
interceptada.
Ele basicamente age como um proxy reverso,
tornando o processo perfeito para o
usuário.
O que é Scaling
Horizontal?
Desacoplar, desacoplar, desacoplar
O que é Scaling
Horizontal?
Preparar um sistema para escalabilidade
envolve muito desacoplamento, porque é
essencial ter servidores menores com menos
responsabilidades, em vez de um servidor
gigante e completo.
Esta é realmente a essência da escala
horizontal.
Quebrar o aplicativo em partes também
ajudará a medir e identificar os gargalos
reais que você pode ter.
O que é Scaling
Horizontal?
O dimensionamento só funciona se você
dimensionar a coisa certa
Muitas vezes, o banco de dados começa a
lutar antes dos nós da web
Use uma ferramenta de monitoramento de
desempenho para priorizar
O que é Scaling
Horizontal?
Muitos servidores menores trabalhando em
uníssono
Você pode ter clusters diferentes de servidores
para web, db etc.
Mais complicado de configurar
Particularmente se você confiar em armazenar
coisas no sistema de arquivos
Construído em redundância, expansível
O que é Scaling
Horizontal?
Bancos de dados de escala horizontal
A expansão horizontal dos bancos de dados é
obtida por um dos dois métodos
- Sharding
- Replicação
Ambos são válidos, mas potencialmente têm seus
problemas
O que é Scaling
Horizontal?
Sharding
Os dados são compartilhados entre diferentes
servidores
Cada servidor contém dados diferentes
O servidor de banco de dados ou sua camada de
aplicativo precisam saber qual banco de dados
usar para buscar os dados específicos
O que é Scaling
Horizontal?
Replicação
Ao contrário do sharding, um banco de dados
replicado terá o banco de dados inteiro em todas
as instâncias
Isso significa que você pode consultar qualquer
instância do banco de dados e obter os mesmos
dados dele
Na maioria das vezes...
O que é Scaling
Horizontal?
Caching - Por que Conteúdo dinâmico é ruim
- Servir conteúdo estático é sempre mais rápido
- Tudo o que requer 'trabalho' para ser gerado
será lento
- Chamadas de API de terceiros
- Consultas de banco de dados
- Até processamento de dados
- Use um cache de memória para melhorar os
tempos de resposta e reduzir o carregamento
do servidor
O que é Scaling
Horizontal?
Caching - Por quanto tempo devo armazenar em
cache?
- Dados diferentes podem ser armazenados em
cache por diferentes períodos de tempo
- Particularmente em áreas de tráfego intenso
(como nossas lojas da Web), mesmo o
armazenamento em cache por 1 minuto pode
salvar um grande número de solicitações de
banco de dados
- Os dados do relatório são armazenados em
cache por 15 minutos
- Alguns dados "fixos" nas APIs são armazenados
em cache por uma hora ou mais
Proteção contra ameaças
Sem perceber, você pode estar
potencialmente solicitando mensagens em
trânsito ilegítimo
Ataques DDOS
Consumidores de API enlouqueceram
Crawlers desonestos
Proteção contra ameaças
Considere o que seria um número razoável
de solicitações
Em muitos casos, até 1 pedido por segundo
seria provavelmente alto
Como ponto de partida, a limitação da taxa
de toda a plataforma da API excluiria os
infratores piores
O que estamos fazendo
melhor desta vez?
Faça uso de um serviço como o CloudFlare
Caches páginas estáticas
Fornece um CDN
Protege-nos contra uma variedade de ataques
através de perfis de tráfego, limitação de
taxas e inteligência compartilhada
O que estamos fazendo
melhor desta vez?
Em um mundo ideal, a escalabilidade é
considerada durante a construção original
No entanto, isso geralmente não é o caso, mas
ainda há coisas que você pode fazer
É fundamental entender seu perfil primeiro - use
ferramentas como o NewRelic e meça sua
plataforma
Isole as partes problemáticas da sua aplicação
de qualquer outra coisa, isso tornará muito mais
fácil escalar onde for necessário
Refeências
Horizontally Scaling PHP Applications: A Practical
Overview
https://blog.digitalocean.com/horizontally-scaling-p
hp-applications/
PHP UK Conference 2017 - Chris Sherry - WordPress
for the Modern PHP Developer
https://www.youtube.com/watch?v=v57UWTXla3M
A Modern PHP Toolset for WordPress
https://www.youtube.com/watch?v=k_41RGd97EA
Refeências
General Guidelines for Server Sizing
https://wiki.processmaker.com/index.php/ProcessMaker
_Server_Sizing
Using and scaling PHP
https://help.fortrabbit.com/php-pro
Obrigado
@jacksonfdam

Mais conteúdo relacionado

Mais procurados

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 nuvemAmazon Web Services LATAM
 
Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceAmazon Web Services LATAM
 
Migrando Aplicações Legadas para Nuvem
Migrando Aplicações Legadas para NuvemMigrando Aplicações Legadas para Nuvem
Migrando Aplicações Legadas para NuvemRafael Dos Santos
 
Deixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDeixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDanilo Pinotti
 
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...iMasters
 
Cloud & AWS: Da teoria à prática
Cloud & AWS: Da teoria à práticaCloud & AWS: Da teoria à prática
Cloud & AWS: Da teoria à práticaRicardo Martins ☁
 
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+ApacheDell Technologies
 
Cloud Computing - Pratices & Patterns
Cloud Computing - Pratices & PatternsCloud Computing - Pratices & Patterns
Cloud Computing - Pratices & PatternsAlan Carlos
 
Migrando Aplicações legadas para o Microsoft Azure
Migrando Aplicações legadas para o Microsoft AzureMigrando Aplicações legadas para o Microsoft Azure
Migrando Aplicações legadas para o Microsoft AzureRafael Dos Santos
 
URL Amigáveis com Apache mod_rewrite
URL Amigáveis com Apache mod_rewriteURL Amigáveis com Apache mod_rewrite
URL Amigáveis com Apache mod_rewriteenilapb
 
Acelerando sites e aplicações Web com uma CDN
Acelerando sites e aplicações Web com uma CDNAcelerando sites e aplicações Web com uma CDN
Acelerando sites e aplicações Web com uma CDNJose Papo, MSc
 
Webinar: Como explorar os recursos de aprendizagem da AWS
Webinar: Como explorar os recursos de aprendizagem da AWSWebinar: Como explorar os recursos de aprendizagem da AWS
Webinar: Como explorar os recursos de aprendizagem da AWSAmazon Web Services LATAM
 
Acelerando sites e aplicacoes moveis com uma CDN
Acelerando sites e aplicacoes moveis com uma CDNAcelerando sites e aplicacoes moveis com uma CDN
Acelerando sites e aplicacoes moveis com uma CDNAmazon Web Services LATAM
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsJorge Walendowsky
 
O que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 diasO que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 diasAmazon Web Services LATAM
 
Boas práticas de arquitetura e operações
Boas práticas de arquitetura e operaçõesBoas práticas de arquitetura e operações
Boas práticas de arquitetura e operaçõesAmazon Web Services LATAM
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxDell Technologies
 

Mais procurados (20)

Adicionando segurança web: AWS WAF
Adicionando segurança web: AWS WAFAdicionando segurança web: AWS WAF
Adicionando segurança web: AWS WAF
 
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
 
Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration Service
 
Migrando Aplicações Legadas para Nuvem
Migrando Aplicações Legadas para NuvemMigrando Aplicações Legadas para Nuvem
Migrando Aplicações Legadas para Nuvem
 
Deixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDeixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidas
 
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
 
Otimizacao de custo summit 2015
Otimizacao de custo summit 2015Otimizacao de custo summit 2015
Otimizacao de custo summit 2015
 
Cloud & AWS: Da teoria à prática
Cloud & AWS: Da teoria à práticaCloud & AWS: Da teoria à prática
Cloud & AWS: Da teoria à prática
 
JavaEE
JavaEEJavaEE
JavaEE
 
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
 
Cloud Computing - Pratices & Patterns
Cloud Computing - Pratices & PatternsCloud Computing - Pratices & Patterns
Cloud Computing - Pratices & Patterns
 
Migrando Aplicações legadas para o Microsoft Azure
Migrando Aplicações legadas para o Microsoft AzureMigrando Aplicações legadas para o Microsoft Azure
Migrando Aplicações legadas para o Microsoft Azure
 
URL Amigáveis com Apache mod_rewrite
URL Amigáveis com Apache mod_rewriteURL Amigáveis com Apache mod_rewrite
URL Amigáveis com Apache mod_rewrite
 
Acelerando sites e aplicações Web com uma CDN
Acelerando sites e aplicações Web com uma CDNAcelerando sites e aplicações Web com uma CDN
Acelerando sites e aplicações Web com uma CDN
 
Webinar: Como explorar os recursos de aprendizagem da AWS
Webinar: Como explorar os recursos de aprendizagem da AWSWebinar: Como explorar os recursos de aprendizagem da AWS
Webinar: Como explorar os recursos de aprendizagem da AWS
 
Acelerando sites e aplicacoes moveis com uma CDN
Acelerando sites e aplicacoes moveis com uma CDNAcelerando sites e aplicacoes moveis com uma CDN
Acelerando sites e aplicacoes moveis com uma CDN
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.js
 
O que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 diasO que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 dias
 
Boas práticas de arquitetura e operações
Boas práticas de arquitetura e operaçõesBoas práticas de arquitetura e operações
Boas práticas de arquitetura e operações
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
 

Semelhante a Dimensionando aplicações para escalabilidade

Iniciando com serviços de bancos de dados gerenciados na AWS
Iniciando com serviços de bancos de dados gerenciados na AWSIniciando com serviços de bancos de dados gerenciados na AWS
Iniciando com serviços de bancos de dados gerenciados na AWSAmazon Web Services LATAM
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxMarceloRosenbrock1
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoDarlan Segalin
 
Latinoware 2012 - Desenvolvendo Interfaces com Holy
Latinoware 2012 - Desenvolvendo Interfaces com HolyLatinoware 2012 - Desenvolvendo Interfaces com Holy
Latinoware 2012 - Desenvolvendo Interfaces com HolyDextra
 
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...Leandro Guimarães
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPFlávio Lisboa
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)Flávio Lisboa
 
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...tdc-globalcode
 
Monitoramento da infra para aplicações na nuvem
Monitoramento da infra para aplicações na nuvemMonitoramento da infra para aplicações na nuvem
Monitoramento da infra para aplicações na nuvemThais Moura
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataforma[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataformaAlessandro Almeida
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +finalEscalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +finalAmazon Web Services LATAM
 

Semelhante a Dimensionando aplicações para escalabilidade (20)

Iniciando com serviços de bancos de dados gerenciados na AWS
Iniciando com serviços de bancos de dados gerenciados na AWSIniciando com serviços de bancos de dados gerenciados na AWS
Iniciando com serviços de bancos de dados gerenciados na AWS
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
 
Latinoware 2012 - Desenvolvendo Interfaces com Holy
Latinoware 2012 - Desenvolvendo Interfaces com HolyLatinoware 2012 - Desenvolvendo Interfaces com Holy
Latinoware 2012 - Desenvolvendo Interfaces com Holy
 
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHP
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)
 
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
 
Monitoramento da infra para aplicações na nuvem
Monitoramento da infra para aplicações na nuvemMonitoramento da infra para aplicações na nuvem
Monitoramento da infra para aplicações na nuvem
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataforma[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataforma
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +finalEscalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
 

Mais de Jackson F. de A. Mafra

PHP Conference 2020 - A eterna luta: compatibilidade retroativa vs. dívida té...
PHP Conference 2020 - A eterna luta: compatibilidade retroativa vs. dívida té...PHP Conference 2020 - A eterna luta: compatibilidade retroativa vs. dívida té...
PHP Conference 2020 - A eterna luta: compatibilidade retroativa vs. dívida té...Jackson F. de A. Mafra
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
O que você precisa saber sobre chatbots
O que você precisa saber sobre chatbotsO que você precisa saber sobre chatbots
O que você precisa saber sobre chatbotsJackson F. de A. Mafra
 
WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
WordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosWordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
The Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressThe Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressJackson F. de A. Mafra
 
Hangout Tempo Real Eventos - ChatOps (ChatBots e DevOps) - Como bots podem ...
Hangout  Tempo Real Eventos - ChatOps (ChatBots e DevOps)  - Como bots podem ...Hangout  Tempo Real Eventos - ChatOps (ChatBots e DevOps)  - Como bots podem ...
Hangout Tempo Real Eventos - ChatOps (ChatBots e DevOps) - Como bots podem ...Jackson F. de A. Mafra
 
Hangout Tempo Real Eventos - Android - Os primeiros passos do desenvolviment...
Hangout  Tempo Real Eventos - Android - Os primeiros passos do desenvolviment...Hangout  Tempo Real Eventos - Android - Os primeiros passos do desenvolviment...
Hangout Tempo Real Eventos - Android - Os primeiros passos do desenvolviment...Jackson F. de A. Mafra
 
Hangout Tempo Real Eventos - Javascript - Os Primeiros Passos
Hangout  Tempo Real Eventos - Javascript - Os Primeiros PassosHangout  Tempo Real Eventos - Javascript - Os Primeiros Passos
Hangout Tempo Real Eventos - Javascript - Os Primeiros PassosJackson F. de A. Mafra
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros PassosJackson F. de A. Mafra
 
Conexao kinghost - Vendas inteligentes com intelibots
Conexao kinghost - Vendas inteligentes com intelibotsConexao kinghost - Vendas inteligentes com intelibots
Conexao kinghost - Vendas inteligentes com intelibotsJackson F. de A. Mafra
 
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Jackson F. de A. Mafra
 
TDC 2015 - POA - Trilha PHP - Shit Happens
TDC 2015 - POA - Trilha PHP - Shit HappensTDC 2015 - POA - Trilha PHP - Shit Happens
TDC 2015 - POA - Trilha PHP - Shit HappensJackson F. de A. Mafra
 

Mais de Jackson F. de A. Mafra (20)

PHP Conference 2020 - A eterna luta: compatibilidade retroativa vs. dívida té...
PHP Conference 2020 - A eterna luta: compatibilidade retroativa vs. dívida té...PHP Conference 2020 - A eterna luta: compatibilidade retroativa vs. dívida té...
PHP Conference 2020 - A eterna luta: compatibilidade retroativa vs. dívida té...
 
PHP SSO no Zentyal
PHP SSO no ZentyalPHP SSO no Zentyal
PHP SSO no Zentyal
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
O que você precisa saber sobre chatbots
O que você precisa saber sobre chatbotsO que você precisa saber sobre chatbots
O que você precisa saber sobre chatbots
 
WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativos
 
WordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosWordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativos
 
The Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressThe Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPress
 
Hangout Tempo Real Eventos - ChatOps (ChatBots e DevOps) - Como bots podem ...
Hangout  Tempo Real Eventos - ChatOps (ChatBots e DevOps)  - Como bots podem ...Hangout  Tempo Real Eventos - ChatOps (ChatBots e DevOps)  - Como bots podem ...
Hangout Tempo Real Eventos - ChatOps (ChatBots e DevOps) - Como bots podem ...
 
Hangout Tempo Real Eventos - Android - Os primeiros passos do desenvolviment...
Hangout  Tempo Real Eventos - Android - Os primeiros passos do desenvolviment...Hangout  Tempo Real Eventos - Android - Os primeiros passos do desenvolviment...
Hangout Tempo Real Eventos - Android - Os primeiros passos do desenvolviment...
 
Hangout Tempo Real Eventos - Javascript - Os Primeiros Passos
Hangout  Tempo Real Eventos - Javascript - Os Primeiros PassosHangout  Tempo Real Eventos - Javascript - Os Primeiros Passos
Hangout Tempo Real Eventos - Javascript - Os Primeiros Passos
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Desmistificando o DialogFlow
Desmistificando o DialogFlowDesmistificando o DialogFlow
Desmistificando o DialogFlow
 
ChatOps (ChatBots + DevOps)
ChatOps (ChatBots + DevOps) ChatOps (ChatBots + DevOps)
ChatOps (ChatBots + DevOps)
 
Conexao kinghost - Vendas inteligentes com intelibots
Conexao kinghost - Vendas inteligentes com intelibotsConexao kinghost - Vendas inteligentes com intelibots
Conexao kinghost - Vendas inteligentes com intelibots
 
WoMakersCode 2016 - Shit Happens
WoMakersCode 2016 -  Shit HappensWoMakersCode 2016 -  Shit Happens
WoMakersCode 2016 - Shit Happens
 
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015
 
Dev Heroes
Dev HeroesDev Heroes
Dev Heroes
 
Trilha Android - Android Evolved
Trilha Android - Android EvolvedTrilha Android - Android Evolved
Trilha Android - Android Evolved
 
TDC 2015 - POA - Trilha PHP - Shit Happens
TDC 2015 - POA - Trilha PHP - Shit HappensTDC 2015 - POA - Trilha PHP - Shit Happens
TDC 2015 - POA - Trilha PHP - Shit Happens
 
Material design
Material designMaterial design
Material design
 

Dimensionando aplicações para escalabilidade

  • 1. Precisamos de um barco maior Introdução ao dimensionamento de aplicações
  • 2. Quem sou eu? Oi! Eu sou o Jackson! Eu gosto de me descrever como desenvolvedor e líder técnico, com um conhecimento muito forte em desenvolvimento web e móvel. Desde 1998 desenvolvo websites e aplicações web, mas em 2009 mudei minha carreira para o desenvolvimento mobile. JACKSON FERREIRA DE ANDRADE MAFRA http://about.me/jacksonfdam https://bitbucket.org/jacksonfdam https://github.com/jacksonfdam http://linkedin.com/in/jacksonfdam @jacksonfdam
  • 3. Agenda Por que precisamos escalar? Primeiros passos - o que eu poderia fazer hoje? Escala horizontal e vertical Proteção contra ameaças
  • 4. Principais conceitos e termos Existem várias ideias importantes ao considerar as várias opções de ajuste disponíveis. ● Aplicação ● Instância do aplicativo ● Trabalhador ● Conexão do Navegador
  • 9. Aplicação Instancia Usuário Final Worker Worker Worker Instancia Worker Worker
  • 14. Por que precisamos escalar? Desempenho lento Usuários tentando acessar seu aplicativo, mas a espera por recursos disponíveis faz com que ele seja lento Interrupções Hardware não pode acompanhar - erros para alguns usuários Indisponibilidade Carga alta, eventualmente, faz com que seu servidor de crash, levando tudo para baixo
  • 15. Primeiros passos - o que eu poderia fazer hoje? Separação de interesses ● Não apenas web / db ○ Servidor separado para lidar com tarefas / cron na fila ● Quando você trabalha com sua arquitetura, considere se componentes diferentes da sua plataforma podem ser independentes ○ Eles podem se comunicar usando APIs quando necessário
  • 16. Primeiros passos - o que eu poderia fazer hoje? Otimização ● Não é estritamente escala, mas atinge o mesmo ● Mais rendimento do seu hardware existente ● Instale algo como NewRelic, ative seu log de consultas lentas do banco de dados ● Enfrente os gargalos comuns
  • 17.
  • 18. O que é Scaling Vertical? Em outras palavras - um servidor maior Simples de configurar Maior custo Ponto único de falha
  • 19.
  • 20. O que é Scaling Horizontal? Um cluster é simplesmente um grupo de servidores. Um balanceador de carga distribui a carga de trabalho entre os servidores em um cluster. A qualquer momento, um novo servidor da Web pode ser adicionado ao cluster existente para lidar com mais solicitações de usuários que acessam seu aplicativo; isso é escala horizontal.
  • 21.
  • 22. O que é Scaling Horizontal? O balanceador de carga tem uma única responsabilidade: decidir qual servidor do cluster receberá uma solicitação que foi interceptada. Ele basicamente age como um proxy reverso, tornando o processo perfeito para o usuário.
  • 23.
  • 24. O que é Scaling Horizontal? Desacoplar, desacoplar, desacoplar
  • 25. O que é Scaling Horizontal? Preparar um sistema para escalabilidade envolve muito desacoplamento, porque é essencial ter servidores menores com menos responsabilidades, em vez de um servidor gigante e completo. Esta é realmente a essência da escala horizontal. Quebrar o aplicativo em partes também ajudará a medir e identificar os gargalos reais que você pode ter.
  • 26. O que é Scaling Horizontal? O dimensionamento só funciona se você dimensionar a coisa certa Muitas vezes, o banco de dados começa a lutar antes dos nós da web Use uma ferramenta de monitoramento de desempenho para priorizar
  • 27. O que é Scaling Horizontal? Muitos servidores menores trabalhando em uníssono Você pode ter clusters diferentes de servidores para web, db etc. Mais complicado de configurar Particularmente se você confiar em armazenar coisas no sistema de arquivos Construído em redundância, expansível
  • 28.
  • 29. O que é Scaling Horizontal? Bancos de dados de escala horizontal A expansão horizontal dos bancos de dados é obtida por um dos dois métodos - Sharding - Replicação Ambos são válidos, mas potencialmente têm seus problemas
  • 30. O que é Scaling Horizontal? Sharding Os dados são compartilhados entre diferentes servidores Cada servidor contém dados diferentes O servidor de banco de dados ou sua camada de aplicativo precisam saber qual banco de dados usar para buscar os dados específicos
  • 31. O que é Scaling Horizontal? Replicação Ao contrário do sharding, um banco de dados replicado terá o banco de dados inteiro em todas as instâncias Isso significa que você pode consultar qualquer instância do banco de dados e obter os mesmos dados dele Na maioria das vezes...
  • 32. O que é Scaling Horizontal? Caching - Por que Conteúdo dinâmico é ruim - Servir conteúdo estático é sempre mais rápido - Tudo o que requer 'trabalho' para ser gerado será lento - Chamadas de API de terceiros - Consultas de banco de dados - Até processamento de dados - Use um cache de memória para melhorar os tempos de resposta e reduzir o carregamento do servidor
  • 33.
  • 34. O que é Scaling Horizontal? Caching - Por quanto tempo devo armazenar em cache? - Dados diferentes podem ser armazenados em cache por diferentes períodos de tempo - Particularmente em áreas de tráfego intenso (como nossas lojas da Web), mesmo o armazenamento em cache por 1 minuto pode salvar um grande número de solicitações de banco de dados - Os dados do relatório são armazenados em cache por 15 minutos - Alguns dados "fixos" nas APIs são armazenados em cache por uma hora ou mais
  • 35.
  • 36. Proteção contra ameaças Sem perceber, você pode estar potencialmente solicitando mensagens em trânsito ilegítimo Ataques DDOS Consumidores de API enlouqueceram Crawlers desonestos
  • 37. Proteção contra ameaças Considere o que seria um número razoável de solicitações Em muitos casos, até 1 pedido por segundo seria provavelmente alto Como ponto de partida, a limitação da taxa de toda a plataforma da API excluiria os infratores piores
  • 38. O que estamos fazendo melhor desta vez? Faça uso de um serviço como o CloudFlare Caches páginas estáticas Fornece um CDN Protege-nos contra uma variedade de ataques através de perfis de tráfego, limitação de taxas e inteligência compartilhada
  • 39. O que estamos fazendo melhor desta vez? Em um mundo ideal, a escalabilidade é considerada durante a construção original No entanto, isso geralmente não é o caso, mas ainda há coisas que você pode fazer É fundamental entender seu perfil primeiro - use ferramentas como o NewRelic e meça sua plataforma Isole as partes problemáticas da sua aplicação de qualquer outra coisa, isso tornará muito mais fácil escalar onde for necessário
  • 40. Refeências Horizontally Scaling PHP Applications: A Practical Overview https://blog.digitalocean.com/horizontally-scaling-p hp-applications/ PHP UK Conference 2017 - Chris Sherry - WordPress for the Modern PHP Developer https://www.youtube.com/watch?v=v57UWTXla3M A Modern PHP Toolset for WordPress https://www.youtube.com/watch?v=k_41RGd97EA
  • 41. Refeências General Guidelines for Server Sizing https://wiki.processmaker.com/index.php/ProcessMaker _Server_Sizing Using and scaling PHP https://help.fortrabbit.com/php-pro