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

Guia do mochileiro para escalabilidade