2. Objetivos
• Construir arquiteturas escaláveis horizontalmente
• Arquiteturas tolerantes a falhas em múltiplos componentes
• Gestão de Mudança e deploys sem dor
3. Desafios Comuns
• Controle do Estado em instâncias individuais
• Componentes que permitam aumentar linearmente a escrita
• Alta disponibilidade geográfica
• Processos de deploy mais leves e seguros
4. Controle do Estado em instâncias individuais
• Sessões Web/HTTP
• Uploads e gerenciamento de arquivos locais
• Caches locais
6. Controle do Estado em instâncias individuais
• Sessões Web/HTTP
• Repositório de sessão compartilhado: Memcached, Redis,
DynamoDB, etc
• Uploads e gerenciamento de arquivos locais
• Sistema de arquivos distribuído e compartilhado: S3, Azure Blob,
OpenStack Swift, GlusterFS, etc
• Caches locais
• Sistemas de cache distribuídos: memcached, redis, Infinispan, Elastic
Search, etc
7. Controle do Estado em instâncias individuais
Arquiteturas de micro-serviços
8. Componentes que aumentem linearmente a escrita
• Bancos de dados relacionais são os vilões comuns
• Capacidade de escrita limitada pela capacidade de 1 único nó
• Topologias multi-master são raras e normalmente caras
10. Componentes que aumentem linearmente a escrita
• Usar outros tipos de bancos de dados em conjunto com o relacional
• Muitos bancos NoSql suportam particionamento: CAP Theorem
• Implementar o máximo de processamento assíncrono, com
abordagens de retentativas e capacidade de controlar a vazão
11. Alta disponibilidade geográfica
• Falhas em datacenters individuais são comuns
• Falhas em componentes individuais são ainda mais comuns
• Cada vez mais precisaremos de arquiteturas distribuídas de alto volume
13. Alta disponibilidade geográfica
• Falhas em datacenters individuais são comuns
• Topologias multi-datacenter, com nuvens públicas ou híbridas
• Falhas em componentes individuais são ainda mais comuns
• Privilegiar componentes de software que permitam replicação
distribuída e preferencialmente sharding
• Cada vez mais precisaremos de arquiteturas distribuídas de alto volume
• Avaliar o uso de componentes clusterizáveis e sem limitações de
armazenamento, escrita e leitura
20. Private PaaS, micro-serviços
• Facilidade de promover aplicações e configurações para Produção,
com migrações a quente
• Tempos baixíssimos de deploy
• Componentes mais granulares, mais fácil isolar impactos