SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Escalabilidade
Augusto Pascutti
Guia do mochileiro para
na Web
Agenda
• O que é escalabilidade
• A arquitetura da web
• Escalando sua aplicação
O que é escalabilidade?
servercliente
servercliente
😄 😴
servercliente
😄 😴
servercliente
😄 😇
cliente
cliente
cliente
servercliente
😴 😱
cliente
cliente
cliente
cliente
cliente
cliente
cliente
cliente
cliente
cliente
cliente
“É a habilidade de um processo
suportar uma demanda
crescente de trabalho. De
forma sustentável.”
Fácil de confundir com
performance.
Trabalho
________
Tempo
Performance =
Trabalho
________
Recurso
Escalabilidade ~=
O problema da
escalabilidade.
Todo recurso tem um
limite.
Todo recurso tem um
limite.
Processador
Todo recurso tem um
limite.
Processador
RAM
Todo recurso tem um
limite.
Processador
RAM
Rede
Todo recurso tem um
limite.
Processador
RAM
Rede
Disco
Todo recurso tem um
limite.
Processador
RAM
Rede
Disco
Dinheiro
Um sistema só escala se
arquitetado com este
objetivo.
A arquitetura da web
Cliente
+
Servidor
Frontend
+
Backend
Front
+
Back
Front
+
Back
Front
+
Back
HTML
CSS
JavaScript
Imagem
Som
Vídeo
Front
+
Back
TCP/IP
HTTP
HTTPS
Front
+
Back
Respostas
Persistência
Negócios
Is we 😎
Caronas para escalar
Caronas
1. Não otimize antes
2. Meça tudo que for possível
3. Leitura? Cache
4. Escrita? Não use o sistema de arquivos
5. Distribua a carga
Leitura
• Cache no navegador do usuário
• Cache de páginas inteiras (borda)
• Cache de imagens/scripts/css (CDN)
• Cache como storage (Redis, Memcache, Mongo)
• Cache de código (OPCache)
Escrita
• Meça memória, cpu, io (NewRelic)
• Grave sessões em um banco de dados (Redis)
• Mantenha uploads em “cloud”
• Use filas para processos longos (RabbitMQ)
Distribua
• Vários servidores web
• Separe leitura e escrita no banco de dados
• Baixo timeout (limite de tempo)
Nossa APP
Rotas HTTP
• GET /
• GET /quote/random
• GET /quote/index/:id
• GET /people/me
• POST /people/me
servercache
cliente
LB server
session
servercache
cliente
LB server
session
servercache
cliente
LB server
session
servercache
cliente
LB server
session
Repo: http://github.com/augustohp/
palestra-escalabilidade
?
Avalie: https://joind.in/15203

Mais conteúdo relacionado

Semelhante a Guia do mochileiro para escalabilidade

Rails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Rails Summit 2008 - Web Operations - George Guimarães - PagestackerRails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Rails Summit 2008 - Web Operations - George Guimarães - PagestackerGeorge Guimarães
 
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
 
Elasticsearch com node.js
Elasticsearch com node.jsElasticsearch com node.js
Elasticsearch com node.jsKirmayr tomaz
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Ricardo Ferreira
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaAndrei Tognolo
 
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
 
TDC2018FLN | Trilha Arquitetura - Architecting for Resilience
TDC2018FLN | Trilha Arquitetura - Architecting for ResilienceTDC2018FLN | Trilha Arquitetura - Architecting for Resilience
TDC2018FLN | Trilha Arquitetura - Architecting for Resiliencetdc-globalcode
 
Architecting For Resilience
Architecting For ResilienceArchitecting For Resilience
Architecting For ResilienceFabiano Modos
 
Como fazer uma aplicacao que nao cai
Como fazer uma aplicacao que nao caiComo fazer uma aplicacao que nao cai
Como fazer uma aplicacao que nao caiAlexander Ramos
 
API's do HTML5 - Davidson Alencar - WebBR2013
API's do HTML5 - Davidson Alencar - WebBR2013API's do HTML5 - Davidson Alencar - WebBR2013
API's do HTML5 - Davidson Alencar - WebBR2013Davidson Alencar
 
Speed up! Critical css to the rescue
Speed up! Critical css to the rescueSpeed up! Critical css to the rescue
Speed up! Critical css to the rescuemelidevelopers
 
Samba Tech Analytics: Arquiteturas e tecnologias por trás da análise de vídeo...
Samba Tech Analytics: Arquiteturas e tecnologias por trás da análise de vídeo...Samba Tech Analytics: Arquiteturas e tecnologias por trás da análise de vídeo...
Samba Tech Analytics: Arquiteturas e tecnologias por trás da análise de vídeo...Big Data Week São Paulo
 
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...Rafael Schettino
 
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovar
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovarLiberte-se dos bancos de dados comerciais para economizar, crescer e inovar
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovarAmazon Web Services LATAM
 
AWS Auto Scaling #Parte1
AWS Auto Scaling #Parte1AWS Auto Scaling #Parte1
AWS Auto Scaling #Parte1Guilherme Elias
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Giovanni Bassi
 
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
 

Semelhante a Guia do mochileiro para escalabilidade (20)

Rails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Rails Summit 2008 - Web Operations - George Guimarães - PagestackerRails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Rails Summit 2008 - Web Operations - George Guimarães - Pagestacker
 
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
 
Elasticsearch com node.js
Elasticsearch com node.jsElasticsearch com node.js
Elasticsearch com node.js
 
Auto scaling
Auto scalingAuto scaling
Auto scaling
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
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)
 
TDC2018FLN | Trilha Arquitetura - Architecting for Resilience
TDC2018FLN | Trilha Arquitetura - Architecting for ResilienceTDC2018FLN | Trilha Arquitetura - Architecting for Resilience
TDC2018FLN | Trilha Arquitetura - Architecting for Resilience
 
Architecting For Resilience
Architecting For ResilienceArchitecting For Resilience
Architecting For Resilience
 
Como fazer uma aplicacao que nao cai
Como fazer uma aplicacao que nao caiComo fazer uma aplicacao que nao cai
Como fazer uma aplicacao que nao cai
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 
API's do HTML5 - Davidson Alencar - WebBR2013
API's do HTML5 - Davidson Alencar - WebBR2013API's do HTML5 - Davidson Alencar - WebBR2013
API's do HTML5 - Davidson Alencar - WebBR2013
 
Speed up! Critical css to the rescue
Speed up! Critical css to the rescueSpeed up! Critical css to the rescue
Speed up! Critical css to the rescue
 
Samba Tech Analytics: Arquiteturas e tecnologias por trás da análise de vídeo...
Samba Tech Analytics: Arquiteturas e tecnologias por trás da análise de vídeo...Samba Tech Analytics: Arquiteturas e tecnologias por trás da análise de vídeo...
Samba Tech Analytics: Arquiteturas e tecnologias por trás da análise de vídeo...
 
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...
 
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovar
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovarLiberte-se dos bancos de dados comerciais para economizar, crescer e inovar
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovar
 
Meetup Everis Cassandra
Meetup Everis CassandraMeetup Everis Cassandra
Meetup Everis Cassandra
 
AWS Auto Scaling #Parte1
AWS Auto Scaling #Parte1AWS Auto Scaling #Parte1
AWS Auto Scaling #Parte1
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)
 
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
 

Mais de Augusto Pascutti

Melhorando sua API com DSLs
Melhorando sua API com DSLsMelhorando sua API com DSLs
Melhorando sua API com DSLsAugusto Pascutti
 
Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Augusto Pascutti
 
TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)Augusto Pascutti
 
Falhando miseralvelmente com PHP
Falhando miseralvelmente com PHPFalhando miseralvelmente com PHP
Falhando miseralvelmente com PHPAugusto Pascutti
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven DevelopmentAugusto Pascutti
 
Como escalar aplicações PHP
Como escalar aplicações PHPComo escalar aplicações PHP
Como escalar aplicações PHPAugusto Pascutti
 
PHP - O que, porquê e como
PHP - O que, porquê e comoPHP - O que, porquê e como
PHP - O que, porquê e comoAugusto Pascutti
 
Testar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorTestar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorAugusto Pascutti
 
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!Augusto Pascutti
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Boas Práticas, Práticas !
Boas Práticas, Práticas !Boas Práticas, Práticas !
Boas Práticas, Práticas !Augusto Pascutti
 

Mais de Augusto Pascutti (20)

Errors
ErrorsErrors
Errors
 
Melhorando sua API com DSLs
Melhorando sua API com DSLsMelhorando sua API com DSLs
Melhorando sua API com DSLs
 
Porque VIM?
Porque VIM?Porque VIM?
Porque VIM?
 
Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.
 
TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)
 
Falhando miseralvelmente com PHP
Falhando miseralvelmente com PHPFalhando miseralvelmente com PHP
Falhando miseralvelmente com PHP
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven Development
 
Orientação a objetos v2
Orientação a objetos v2Orientação a objetos v2
Orientação a objetos v2
 
Under engineer
Under engineerUnder engineer
Under engineer
 
Como escalar aplicações PHP
Como escalar aplicações PHPComo escalar aplicações PHP
Como escalar aplicações PHP
 
The small things
The small thingsThe small things
The small things
 
Somos jardineiros
Somos jardineirosSomos jardineiros
Somos jardineiros
 
PHP - O que, porquê e como
PHP - O que, porquê e comoPHP - O que, porquê e como
PHP - O que, porquê e como
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Testar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorTestar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhor
 
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Boas Práticas, Práticas !
Boas Práticas, Práticas !Boas Práticas, Práticas !
Boas Práticas, Práticas !
 
Mitos do PHP
Mitos do PHPMitos do PHP
Mitos do PHP
 

Guia do mochileiro para escalabilidade