Pular para o conteúdo principal

Lab: Concepção de Arquitetura HA

Objetivo do Lab​

Neste lab, você irá projetar uma arquitetura altamente disponível para uma aplicação web. Você irá analisar os requisitos, identificar os SPOF e propor uma solução robusta.

Parte 1: Cenário​

Contexto​

ShopOnline é uma plataforma de e-commerce que sofre perdas financeiras a cada minuto de indisponibilidade. A diretoria exige uma arquitetura com 99,9% de disponibilidade.

Requisitos​

┌─────────────────────────────────────────────────────────────┐
│ REQUISITOS SHOPONLINE │
├─────────────────────────────────────────────────────────────┤
│ │
│ DISPONIBILIDADE │
│ • 99,9% uptime (máx 8,76h downtime/ano) │
│ • Failover automático < 2 minutos │
│ • Zero perda de dados │
│ │
│ PERFORMANCE │
│ • Tempo de resposta < 500ms │
│ • Suporte a 10.000 usuários simultâneos │
│ • Picos de carga x3 durante promoções │
│ │
│ SEGURANÇA │
│ • HTTPS obrigatório │
│ • Banco de dados não exposto à Internet │
│ • Conformidade PCI-DSS (pagamento) │
│ │
│ ORÇAMENTO │
│ • Máximo $2.000/mês │
│ │
└─────────────────────────────────────────────────────────────┘

Arquitetura Atual (a melhorar)​

┌─────────────────────────────────────────────────────────────┐
│ ARQUITETURA ATUAL │
├─────────────────────────────────────────────────────────────┤
│ │
│ Internet │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ VPC │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Subnet Pública (AZ-a) │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────────────────────┐ │ │ │
│ │ │ │ EC2 Instance │ │ │ │
│ │ │ │ (Web + App + API) │ │ │ │
│ │ │ │ t3.large │ │ │ │
│ │ │ │ IP: 52.x.x.x │ │ │ │
│ │ │ └───────────┬─────────────┘ │ │ │
│ │ │ │ │ │ │
│ │ └────────────────────┼──────────────────────────┘ │ │
│ │ │ │ │
│ │ ┌────────────────────┼──────────────────────────┐ │ │
│ │ │ Subnet Privada (AZ-a) │ │ │
│ │ │ │ │ │ │
│ │ │ ┌───────────▼─────────────┐ │ │ │
│ │ │ │ RDS │ │ │ │
│ │ │ │ MySQL 5.7 │ │ │ │
│ │ │ │ Single-AZ │ │ │ │
│ │ │ └─────────────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ │ │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Parte 2: Análise dos SPOF​

Exercício 2.1: Identificar os SPOF​

Analise a arquitetura atual e liste todos os pontos de falha única:

#ComponenteTipo de SPOFImpacto se falhar
1???
2???
3???
4???
💡 Solução
#ComponenteTipo de SPOFImpacto se falhar
1EC2 únicoComputeSite completamente fora do ar
2RDS Single-AZDatabasePossível perda de dados
3Apenas uma AZInfraestruturaTudo fora se AZ cair
4IP público na EC2AcessoSem failover possível
5Sem LBDistribuiçãoImpossível escalar

Exercício 2.2: Calcular a Disponibilidade Atual​

Se cada componente tem 99% de disponibilidade individual, qual é a disponibilidade total?

Arquitetura em série: Disp = Disp_EC2 × Disp_RDS × Disp_AZ
💡 Solução
Disp = 0.99 × 0.99 × 0.99 = 0.970 = 97%

Downtime anual = 3% × 365 dias = 10,95 dias

Está LONGE dos 99,9% exigidos (8,76 horas)!

Parte 3: Concepção da Solução​

Exercício 3.1: Desenhar a Arquitetura Alvo​

Projete uma arquitetura que atinja 99,9% de disponibilidade.

Componentes a incluir:

  • Application Load Balancer
  • Instâncias EC2 Multi-AZ
  • RDS Multi-AZ
  • Auto Scaling Group

Template para completar:

┌─────────────────────────────────────────────────────────────────────────┐
│ SUA ARQUITETURA │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Internet │
│ │ │
│ [Desenhe aqui] │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
💡 Solução Arquitetura
┌─────────────────────────────────────────────────────────────────────────┐
│ ARQUITETURA HA SHOPONLINE │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Internet │
│ │ │
│ ┌──────▼──────┐ │
│ │ IGW │ │
│ └──────┬──────┘ │
│ │ │
│ ┌──────────────────────────────┼──────────────────────────────┐ │
│ │ VPC │ (10.0.0.0/16) │ │
│ │ │ │ │
│ │ ┌──────────────────────────┴────────────────────────────┐ │ │
│ │ │ SUBNETS PÚBLICAS │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │
│ │ │ │ Public AZ-a │ │ Public AZ-b │ │ │ │
│ │ │ │ 10.0.1.0/24 │ │ 10.0.2.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ ALB │◄─┼────────┼──│ ALB │ │ │ │ │
│ │ │ │ │ node │ │ │ │ node │ │ │ │ │
│ │ │ │ └─────┬─────┘ │ │ └─────┬─────┘ │ │ │ │
│ │ │ └────────┼────────┘ └────────┼────────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ └───────────┼──────────────────────────┼────────────────┘ │ │
│ │ │ │ │ │
│ │ ┌───────────┼──────────────────────────┼────────────────┐ │ │
│ │ │ │ SUBNETS PRIVADAS (App) │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌────────▼────────┐ ┌────────▼────────┐ │ │ │
│ │ │ │ Private AZ-a │ │ Private AZ-b │ │ │ │
│ │ │ │ 10.0.11.0/24 │ │ 10.0.12.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ EC2 (ASG) │ │ │ │ EC2 (ASG) │ │ │ │ │
│ │ │ │ │ min:2 │ │ │ │ max:6 │ │ │ │ │
│ │ │ │ └─────┬─────┘ │ │ └─────┬─────┘ │ │ │ │
│ │ │ └────────┼────────┘ └────────┼────────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ └───────────┼──────────────────────────┼────────────────┘ │ │
│ │ │ │ │ │
│ │ ┌───────────┼──────────────────────────┼────────────────┐ │ │
│ │ │ │ SUBNETS PRIVADAS (DB) │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌────────▼────────┐ ┌────────▼────────┐ │ │ │
│ │ │ │ DB AZ-a │ │ DB AZ-b │ │ │ │
│ │ │ │ 10.0.21.0/24 │ │ 10.0.22.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ RDS │◄─┼────────┼──│ RDS │ │ │ │ │
│ │ │ │ │ Primary │ │ sync │ │ Standby │ │ │ │ │
│ │ │ │ └───────────┘ │ │ └───────────┘ │ │ │ │
│ │ │ └─────────────────┘ └─────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘

Exercício 3.2: Tabela de Configuração​

Complete a tabela de configuração para sua arquitetura:

ComponenteConfiguraçãoJustificativa
ALB??
EC2Tipo: ?, Número min: ?, max: ??
RDSTipo: ?, Multi-AZ: ??
ASGScaling policy: ??
💡 Solução
ComponenteConfiguraçãoJustificativa
ALBInternet-facing, 2 AZDistribuição + HA
EC2t3.medium, min:2, max:62 para HA, 6 para picos
RDSdb.t3.medium, Multi-AZ: SimFailover automático + 0 perda de dados
ASGTarget Tracking CPU 70%Escala automática conforme carga

Parte 4: Estimativa de Custos​

Exercício 4.1: Calcular o Custo Mensal​

Estime o custo mensal da sua arquitetura:

ServiçoConfiguraçãoCusto/mês
ALB1 ALB + uso?
EC22-6 t3.medium?
RDSdb.t3.medium Multi-AZ?
NAT Gateway2 (HA)?
Data TransferEstimado?
TOTAL?
💡 Solução Estimativa
ServiçoConfiguraçãoCusto/mês
ALB1 ALB + uso~$25
EC22 t3.medium (mínimo)~$60
RDSdb.t3.medium Multi-AZ~$100
NAT Gateway2 + dados~$70
EBS100GB gp3~$20
Data Transfer~100GB~$10
TOTAL~$285/mês

✅ Dentro do orçamento de $2.000/mês com margem para scaling

Parte 5: Plano de Teste HA​

Exercício 5.1: Cenários de Teste​

Descreva como você testaria a alta disponibilidade:

TesteAçãoResultado Esperado
Failover EC2??
Failover RDS??
Falha AZ??
💡 Solução
TesteAçãoResultado Esperado
Failover EC2Terminar 1 instânciaASG lança nova, ALB redireciona
Failover RDSReboot com failoverStandby vira primary, < 2min
Falha AZDesativar subnet AZ-aTráfego 100% na AZ-b
Scale OutGerar cargaNovas instâncias automáticas
Health CheckParar nginxALB remove instância unhealthy

Entregável Final​

Documento a Produzir​

Crie um documento "Arquitetura HA ShopOnline" contendo:

  1. Análise do ambiente atual (SPOF identificados)
  2. Diagrama da arquitetura alvo (com todos os componentes)
  3. Tabela de configuração (detalhada)
  4. Estimativa de custos
  5. Plano de teste HA
  6. Cálculo de disponibilidade teórica

Critérios de Avaliação​

CritérioPontos
SPOF corretamente identificados/15
Arquitetura coerente e completa/25
Configuração justificada/20
Custos dentro do orçamento/15
Plano de teste pertinente/15
Qualidade do documento/10
Total/100

Próxima semana: Auto Scaling