escalabilidade de aplicações web

Post on 27-Jun-2015

4.314 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação feita no

TRANSCRIPT

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

top related