escalabilidade de aplicações web
DESCRIPTION
Apresentação feita noTRANSCRIPT
Escalabilidade de Aplicações Web
Renato Lucindo
Agenda
• Aplicações Web
• Escalabilidadeo Verticalo Horizontal
• Alta Disponibilidade
• Problemas
• BORG
Aplicações Web
•Aplicação: Front-end + Negócio
•CRUD
•Problemas de Escala: Dados
Escalabilidade
• Capacidade do sistema de assimilar uma carga crescenteo Conexõeso Processamento
• Escala verticalo Adicionar recursos físicos a um nóo Otimizar o código para assimilar mais carga
• Escala horizontalo Adicionar mais nós ao sistema
Escalabilidade Vertical
• Adicionar: CPU, Memória, Disco, etc...• Escalabilidade em um único nó
o Número de conexõeso Usuários simultâneoso Operações por segundo
• Front-end + Negócio
• Otimizar utilização de recursoso I/Oo Memóriao CPU
Escalabilidade Vertical
• Patterns de programação concorrente e tratamento de eventos.
• POSA 2
Escalabilidade Horizontal
• Adicionar mais nós para assimilar mais trabalhoo Escalabilidade linear ou melhor
• Front-end + Negócio: Stateless
• Dadoso Cacheo Filao Master/Slaveo Particionamento
Escalabilidade Horizontal - Cache
Escalabilidade Horizontal - Cache
• Benefícioso Escala nas operações de leitura
• Consequencias o Alteração na lógica de negócio para tratar cacheo Dados inconsistenteso "There are only two hard things in Computer Science:
cache invalidation and naming things" - Phil Karlton
Escalabilidade Horizontal - Fila
Escalabilidade Horizontal - Fila
• Benefícioso Escalabilidade na escrita
• Conseqüênciaso Alteração na lógica de negócio para tratar a filao Dados inconsistentes
Escalabilidade Horizontal - Master/Slave
Escalabilidade Horizontal - Master/Slave
• Benefícioso Escalabilidade na leitura
• Consequenciaso Alteração na lógica de negócio para decidir de onde ler e
onde escrevero Dados inconsistentes
Escalabilidade Horizontal - Particionamento
Escalabilidade Horizontal - Particionamento
• Benefícioso Escalabilidade de leitura e escrita
• Conseqüênciaso Alteração da lógica de negócio para tratar partiçõeso De-normalização dos dadoso Ausência de joins entre partições
joins na camada da aplicaçãoo Dados inconsistentes
Escalabilidade Horizontal
Alta Disponibilidade
• Tolerância a falhas de hardware e softwareo Eliminação de pontos únicos de falha
• Redundânciao Failover
• Réplicaso Quantidade de cópiaso Granularidade das cópias
Problemas
• Complexidade• Consistência dos dados
o (R + W) < N (consistência tardia)• Dificuldade de manipulação dos dados• Dados NoSQL
o Contadoreso Listas/Conjuntoso Árvores/Grafos
BORG
BORG
BORG
• Banco de dados Chave-Valor• 3 anos de desenvolvimento• Erlang• Interface REST
o Memcachedo Subconjunto REDIS
• Múltiplos backendso Memória (com LRU)o Mnesiao MySQL
• Réplicas• Particionamento• NoSQL
o Fila, Contadores, Conjuntos, etc
Fim
Obrigado! Perguntas?
http://uol.com/trabalhe
Renato Lucindo - @rlucindo