arquiteturas escaláveis e tolerantes a falhas
TRANSCRIPT
Arquiteturas Escaláveis e Tolerantes a Falhas
Tech Talks
Objetivos
• Construir arquiteturas escaláveis horizontalmente
• Arquiteturas tolerantes a falhas em múltiplos componentes
• Gestão de Mudança e deploys sem dor
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
Controle do Estado em instâncias individuais
• Sessões Web/HTTP
• Uploads e gerenciamento de arquivos locais
• Caches locais
Como resolver?
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
Controle do Estado em instâncias individuais
Arquiteturas de micro-serviços
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
Como resolver?
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
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
Como resolver?
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
Alta disponibilidade geográfica
Processos de deploy mais leves e seguros
• Pipelines de CI/CD
• Private PaaS
• Arquiteturas de micro-serviços com containers
Como resolver?
Continuous Delivery/Deployment
Deployment Pipelines
Blue-Green Deployments
Stacks inteiras em Produção simultaneamente Chaveamento em poucos segundos
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
Obrigado!