Arquiteturas escaláveis e tolerantes a falhas

21
Arquiteturas Escaláveis e Tolerantes a Falhas Tech Talks

Transcript of Arquiteturas escaláveis e tolerantes a falhas

Page 1: Arquiteturas escaláveis e tolerantes a falhas

Arquiteturas Escaláveis e Tolerantes a Falhas

Tech Talks

Page 2: Arquiteturas escaláveis e tolerantes a falhas

Objetivos

• Construir arquiteturas escaláveis horizontalmente

• Arquiteturas tolerantes a falhas em múltiplos componentes

• Gestão de Mudança e deploys sem dor

Page 3: Arquiteturas escaláveis e tolerantes a falhas

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

Page 4: Arquiteturas escaláveis e tolerantes a falhas

Controle do Estado em instâncias individuais

• Sessões Web/HTTP

• Uploads e gerenciamento de arquivos locais

• Caches locais

Page 5: Arquiteturas escaláveis e tolerantes a falhas

Como resolver?

Page 6: Arquiteturas escaláveis e tolerantes a falhas

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

Page 7: Arquiteturas escaláveis e tolerantes a falhas

Controle do Estado em instâncias individuais

Arquiteturas de micro-serviços

Page 8: Arquiteturas escaláveis e tolerantes a falhas

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

Page 9: Arquiteturas escaláveis e tolerantes a falhas

Como resolver?

Page 10: Arquiteturas escaláveis e tolerantes a falhas

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

Page 11: Arquiteturas escaláveis e tolerantes a falhas

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

Page 12: Arquiteturas escaláveis e tolerantes a falhas

Como resolver?

Page 13: Arquiteturas escaláveis e tolerantes a falhas

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

Page 14: Arquiteturas escaláveis e tolerantes a falhas

Alta disponibilidade geográfica

Page 15: Arquiteturas escaláveis e tolerantes a falhas

Processos de deploy mais leves e seguros

• Pipelines de CI/CD

• Private PaaS

• Arquiteturas de micro-serviços com containers

Page 16: Arquiteturas escaláveis e tolerantes a falhas

Como resolver?

Page 17: Arquiteturas escaláveis e tolerantes a falhas

Continuous Delivery/Deployment

Page 18: Arquiteturas escaláveis e tolerantes a falhas

Deployment Pipelines

Page 19: Arquiteturas escaláveis e tolerantes a falhas

Blue-Green Deployments

Stacks inteiras em Produção simultaneamente Chaveamento em poucos segundos

Page 20: Arquiteturas escaláveis e tolerantes a falhas

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

Page 21: Arquiteturas escaláveis e tolerantes a falhas

Obrigado!