escalabilidade de aplicações web

22
Escalabilidade de Aplicações Web Renato Lucindo

Upload: renato-lucindo

Post on 27-Jun-2015

4.314 views

Category:

Technology


2 download

DESCRIPTION

Apresentação feita no

TRANSCRIPT

Page 1: Escalabilidade de Aplicações Web

Escalabilidade de Aplicações Web

Renato Lucindo

Page 2: Escalabilidade de Aplicações Web

Agenda

• Aplicações Web

• Escalabilidadeo Verticalo Horizontal

• Alta Disponibilidade

• Problemas

• BORG

Page 3: Escalabilidade de Aplicações Web

Aplicações Web

•Aplicação: Front-end + Negócio

•CRUD

•Problemas de Escala: Dados

Page 4: Escalabilidade de Aplicações Web

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 

Page 5: Escalabilidade de Aplicações Web

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 

Page 6: Escalabilidade de Aplicações Web

Escalabilidade Vertical

• Patterns de programação concorrente e tratamento de eventos.

• POSA 2

Page 7: Escalabilidade de Aplicações Web

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

Page 8: Escalabilidade de Aplicações Web

Escalabilidade Horizontal - Cache

Page 9: Escalabilidade de Aplicações Web

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 

Page 10: Escalabilidade de Aplicações Web

Escalabilidade Horizontal - Fila

Page 11: Escalabilidade de Aplicações Web

Escalabilidade Horizontal - Fila

• Benefícioso Escalabilidade na escrita

• Conseqüênciaso Alteração na lógica de negócio para tratar a filao Dados inconsistentes

Page 12: Escalabilidade de Aplicações Web

Escalabilidade Horizontal - Master/Slave

Page 13: Escalabilidade de Aplicações Web

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

Page 14: Escalabilidade de Aplicações Web

Escalabilidade Horizontal - Particionamento

Page 15: Escalabilidade de Aplicações Web

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

Page 16: Escalabilidade de Aplicações Web

Escalabilidade Horizontal

Page 17: Escalabilidade de Aplicações Web

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

Page 18: Escalabilidade de Aplicações Web

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

Page 19: Escalabilidade de Aplicações Web

BORG

Page 20: Escalabilidade de Aplicações Web

BORG

Page 21: Escalabilidade de Aplicações Web

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

Page 22: Escalabilidade de Aplicações Web

Fim

Obrigado! Perguntas?

http://uol.com/trabalhe

Renato Lucindo - @rlucindo