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:
| # | Componente | Tipo de SPOF | Impacto se falhar |
|---|---|---|---|
| 1 | ? | ? | ? |
| 2 | ? | ? | ? |
| 3 | ? | ? | ? |
| 4 | ? | ? | ? |
💡 Solução
| # | Componente | Tipo de SPOF | Impacto se falhar |
|---|---|---|---|
| 1 | EC2 único | Compute | Site completamente fora do ar |
| 2 | RDS Single-AZ | Database | Possível perda de dados |
| 3 | Apenas uma AZ | Infraestrutura | Tudo fora se AZ cair |
| 4 | IP público na EC2 | Acesso | Sem failover possível |
| 5 | Sem LB | Distribuição | Impossí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:
| Componente | Configuração | Justificativa |
|---|---|---|
| ALB | ? | ? |
| EC2 | Tipo: ?, Número min: ?, max: ? | ? |
| RDS | Tipo: ?, Multi-AZ: ? | ? |
| ASG | Scaling policy: ? | ? |
💡 Solução
| Componente | Configuração | Justificativa |
|---|---|---|
| ALB | Internet-facing, 2 AZ | Distribuição + HA |
| EC2 | t3.medium, min:2, max:6 | 2 para HA, 6 para picos |
| RDS | db.t3.medium, Multi-AZ: Sim | Failover automático + 0 perda de dados |
| ASG | Target 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ço | Configuração | Custo/mês |
|---|---|---|
| ALB | 1 ALB + uso | ? |
| EC2 | 2-6 t3.medium | ? |
| RDS | db.t3.medium Multi-AZ | ? |
| NAT Gateway | 2 (HA) | ? |
| Data Transfer | Estimado | ? |
| TOTAL | ? |
💡 Solução Estimativa
| Serviço | Configuração | Custo/mês |
|---|---|---|
| ALB | 1 ALB + uso | ~$25 |
| EC2 | 2 t3.medium (mínimo) | ~$60 |
| RDS | db.t3.medium Multi-AZ | ~$100 |
| NAT Gateway | 2 + dados | ~$70 |
| EBS | 100GB 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:
| Teste | Ação | Resultado Esperado |
|---|---|---|
| Failover EC2 | ? | ? |
| Failover RDS | ? | ? |
| Falha AZ | ? | ? |
💡 Solução
| Teste | Ação | Resultado Esperado |
|---|---|---|
| Failover EC2 | Terminar 1 instância | ASG lança nova, ALB redireciona |
| Failover RDS | Reboot com failover | Standby vira primary, < 2min |
| Falha AZ | Desativar subnet AZ-a | Tráfego 100% na AZ-b |
| Scale Out | Gerar carga | Novas instâncias automáticas |
| Health Check | Parar nginx | ALB remove instância unhealthy |
Entregável Final
Documento a Produzir
Crie um documento "Arquitetura HA ShopOnline" contendo:
- Análise do ambiente atual (SPOF identificados)
- Diagrama da arquitetura alvo (com todos os componentes)
- Tabela de configuração (detalhada)
- Estimativa de custos
- Plano de teste HA
- Cálculo de disponibilidade teórica
Critérios de Avaliação
| Critério | Pontos |
|---|---|
| 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