Escalabilidade de Aplicações Web Renato Lucindo
Agenda Aplicações Web Escalabilidade Vertical Horizontal Alta Disponibilidade Problemas BORG
Aplicações Web Aplicação: Front-end + Negócio C R UD Problemas de Escala: Dados
Escalabilidade Capacidade do sistema de assimilar uma carga crescente Conexões Processamento   Escala vertical Adicionar recursos físicos a um nó Otimizar  o código para assimilar mais carga Escala horizontal Adicionar mais nós ao sistema 
Escalabilidade Vertical Adicionar: CPU, Memória, Disco, etc... Escalabilidade em um único nó Número de conexões Usuários simultâneos Operações por segundo Front-end + Negócio Otimizar utilização de recursos I/O Memória CPU 
Escalabilidade Vertical Patterns de programação concorrente e tratamento de eventos. POSA 2
Escalabilidade Horizontal Adicionar mais nós para assimilar mais trabalho Escalabilidade linear ou melhor Front-end + Negócio: Stateless Dados Cache Fila Master/Slave Particionamento
Escalabilidade Horizontal - Cache
Escalabilidade Horizontal - Cache Benefícios Escala nas operações de leitura Consequencias  Alteração na lógica de negócio para tratar cache Dados inconsistentes "There are only two hard things in Computer Science: cache invalidation and naming things" - Phil Karlton 
Escalabilidade Horizontal - Fila
Escalabilidade Horizontal - Fila Benefícios Escalabilidade na escrita Conseqüências Alteração na lógica de negócio para tratar a fila Dados inconsistentes
Escalabilidade Horizontal - Master/Slave
Escalabilidade Horizontal - Master/Slave Benefícios Escalabilidade na leitura Consequencias Alteração na lógica de negócio para decidir de onde ler e onde escrever Dados inconsistentes
Escalabilidade Horizontal - Particionamento
Escalabilidade Horizontal - Particionamento Benefícios Escalabilidade de leitura e escrita Conseqüências Alteração da lógica de negócio para tratar partições De-normalização dos dados Ausência de  joins  entre partições joins  na camada da aplicação Dados inconsistentes
Escalabilidade Horizontal
Alta Disponibilidade Tolerância a falhas de hardware e software Eliminação de pontos únicos de falha Redundância Failover Réplicas Quantidade de cópias Granularidade das cópias
Problemas Complexidade Consistência dos dados (R + W) < N (consistência tardia) Dificuldade de manipulação dos dados Dados NoSQL Contadores Listas/Conjuntos Árvores/Grafos
BORG
BORG
BORG Banco de dados Chave-Valor 3 anos de desenvolvimento Erlang Interface REST Memcached Subconjunto REDIS Múltiplos backends Memória (com LRU) Mnesia MySQL Réplicas Particionamento NoSQL Fila, Contadores, Conjuntos, etc
Fim Obrigado! Perguntas? http://uol.com/trabalhe Renato Lucindo - @rlucindo

Escalabilidade de Aplicações Web