Lab: Concepção de um Diagrama VPC
Objetivo do Lab
Neste lab, você irá conceber e documentar uma arquitetura VPC completa no papel ou utilizando uma ferramenta de diagramação. Este é um exercício fundamental, pois no ambiente corporativo, você sempre deverá planejar antes de criar.
A capacidade de desenhar e explicar uma arquitetura de rede é essencial para qualquer profissional de cloud.
Parte 1: Cenário
Contexto
Você é arquiteto de cloud na TechnoShop, uma empresa de e-commerce. Foi solicitado a você projetar a infraestrutura AWS para o novo aplicativo deles.
Requisitos
┌─────────────────────────────────────────────────────────────┐
│ REQUISITOS TECHNOSHOP │
├─────────────────────────────────────────────────────────────┤
│ │
│ APLICAÇÃO │
│ • Site acessível pela Internet │
│ • Servidores de aplicação (API backend) │
│ • Banco de dados MySQL │
│ │
│ SEGURANÇA │
│ • Banco de dados NÃO acessível pela Internet │
│ • Servidores de aplicação protegidos │
│ • Apenas o Load Balancer exposto à Internet │
│ │
│ DISPONIBILIDADE │
│ • Aplicação disponível mesmo se uma AZ falhar │
│ • Mínimo 2 zonas de disponibilidade │
│ │
│ REDE │
│ • Servidores de aplicação devem poder baixar │
│ atualizações da Internet │
│ │
└─────────────────────────────────────────────────────────────┘
Parte 2: Exercício de Concepção
Etapa 1: Definir o CIDR do VPC
Escolha um range de endereços para seu VPC:
Perguntas para se fazer:
- Quantos endereços IP você precisa?
- Qual faixa RFC 1918 utilizar?
- Qual prefixo CIDR escolher?
Sua resposta:
VPC CIDR : ________________
Justificativa : ________________
💡 Solução sugerida
VPC CIDR : 10.0.0.0/16
Justificativa :
- 65.536 endereços = mais que suficiente
- Faixa 10.x.x.x = padrão para empresas
- /16 permite criar vários subnets /24
Etapa 2: Planejar os Subnets
Complete a tabela a seguir:
| Nome | Tipo | AZ | CIDR | Uso |
|---|---|---|---|---|
| public-1a | Público | us-east-1a | ? | ? |
| public-1b | Público | us-east-1b | ? | ? |
| private-app-1a | Privado | us-east-1a | ? | ? |
| private-app-1b | Privado | us-east-1b | ? | ? |
| private-db-1a | Privado | us-east-1a | ? | ? |
| private-db-1b | Privado | us-east-1b | ? | ? |
💡 Solução sugerida
| Nome | Tipo | AZ | CIDR | Uso |
|---|---|---|---|---|
| public-1a | Público | us-east-1a | 10.0.1.0/24 | ALB, NAT GW |
| public-1b | Público | us-east-1b | 10.0.2.0/24 | ALB, NAT GW |
| private-app-1a | Privado | us-east-1a | 10.0.11.0/24 | Servidores App |
| private-app-1b | Privado | us-east-1b | 10.0.12.0/24 | Servidores App |
| private-db-1a | Privado | us-east-1a | 10.0.21.0/24 | MySQL Master |
| private-db-1b | Privado | us-east-1b | 10.0.22.0/24 | MySQL Replica |
Etapa 3: Definir as Route Tables
Para cada tipo de subnet, defina as rotas:
Route Table Pública:
| Destino | Target |
|---|---|
| ? | ? |
| ? | ? |
Route Table Privada App (1a):
| Destino | Target |
|---|---|
| ? | ? |
| ? | ? |
Route Table Privada DB:
| Destino | Target |
|---|---|
| ? | ? |
💡 Solução sugerida
Route Table Pública:
| Destino | Target |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | igw-xxx |
Route Table Privada App (1a):
| Destino | Target |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | nat-1a |
Route Table Privada DB:
| Destino | Target |
|---|---|
| 10.0.0.0/16 | local |
| (Sem rota para Internet) | - |
Etapa 4: Desenhar a Arquitetura
Desenhe o diagrama completo da arquitetura. Utilize:
- Draw.io (gratuito)
- Lucidchart
- Papel e caneta
Elementos a incluir:
- VPC com seu CIDR
- Todos os subnets com seus CIDR
- Internet Gateway
- NAT Gateways (onde posicionar?)
- Load Balancer (onde posicionar?)
- Instâncias EC2 (servidores app)
- Banco de dados
- Setas de tráfego
💡 Diagrama Solução
┌─────────────────────────────────────────────────────────────────────────┐
│ ARQUITETURA TECHNOSHOP │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ INTERNET │
│ │ │
│ │ │
│ ┌──────▼──────┐ │
│ │ IGW │ │
│ └──────┬──────┘ │
│ │ │
│ ┌──────────────────────────────┼──────────────────────────────┐ │
│ │ VPC │ (10.0.0.0/16) │ │
│ │ │ │ │
│ │ ┌──────────────────────────┼────────────────────────────┐ │ │
│ │ │ │ │ │ │
│ │ │ ┌───────────────────────▼───────────────────────┐ │ │ │
│ │ │ │ APPLICATION LOAD BALANCER │ │ │ │
│ │ │ │ (alb-web) │ │ │ │
│ │ │ └───────────────────────┬───────────────────────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ ┌─────────────────┐ │ ┌─────────────────┐ │ │ │
│ │ │ │ PUBLIC 1a │ │ │ PUBLIC 1b │ │ │ │
│ │ │ │ 10.0.1.0/24 │ │ │ 10.0.2.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌─────────────┐ │ │ │ ┌─────────────┐ │ │ │ │
│ │ │ │ │ NAT GW 1a │ │ │ │ │ NAT GW 1b │ │ │ │ │
│ │ │ │ └──────┬──────┘ │ │ │ └──────┬──────┘ │ │ │ │
│ │ │ └────────┼────────┘ │ └────────┼────────┘ │ │ │
│ │ │ │ │ │ │ │ │
│ │ └───────────┼──────────────┼──────────────┼──────────────┘ │ │
│ │ │ │ │ │ │
│ │ ┌───────────┼──────────────┼──────────────┼──────────────┐ │ │
│ │ │ │ │ │ │ │ │
│ │ │ ┌────────▼────────┐ │ ┌────────▼────────┐ │ │ │
│ │ │ │ PRIVATE APP 1a │◄────┴────►│ PRIVATE APP 1b │ │ │ │
│ │ │ │ 10.0.11.0/24 │ │ 10.0.12.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ EC2 App 1 │ │ │ │ EC2 App 2 │ │ │ │ │
│ │ │ │ └─────┬─────┘ │ │ └─────┬─────┘ │ │ │ │
│ │ │ └────────┼────────┘ └────────┼────────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ └───────────┼─────────────────────────────┼───────────────┘ │ │
│ │ │ │ │ │
│ │ ┌───────────┼─────────────────────────────┼───────────────┐ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌────────▼────────┐ ┌────────▼────────┐ │ │ │
│ │ │ │ PRIVATE DB 1a │ │ PRIVATE DB 1b │ │ │ │
│ │ │ │ 10.0.21.0/24 │ │ 10.0.22.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ MySQL │◄────────────►│ │ MySQL │ │ │ │ │
│ │ │ │ │ Primary │ Replicação │ │ Standby │ │ │ │ │
│ │ │ │ └───────────┘ │ │ └───────────┘ │ │ │ │
│ │ │ └─────────────────┘ └─────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
Parte 3: Perguntas de Análise
Pergunta 1: Fluxo de Tráfego
Descreva o caminho do tráfego para um usuário que acessa o site:
Usuário → ? → ? → ? → Banco de dados
💡 Resposta
Usuário
→ Internet
→ IGW
→ ALB (subnet público)
→ EC2 App (subnet privado app)
→ MySQL (subnet privado db)
Pergunta 2: Atualização de Software
Como um servidor de aplicação pode baixar uma atualização da Internet?
💡 Resposta
O servidor de aplicação está em um subnet privado. Ele utiliza o NAT Gateway:
- EC2 App envia uma requisição para a Internet
- O tráfego segue a rota 0.0.0.0/0 → NAT Gateway
- NAT Gateway traduz o IP privado em IP público (Elastic IP)
- O tráfego passa pelo IGW para a Internet
- A resposta retorna pelo mesmo caminho
Pergunta 3: Falha de AZ
O que acontece se a zona us-east-1a falhar?
💡 Resposta
Impacto:
- EC2 App 1a: indisponível
- NAT GW 1a: indisponível
- MySQL Primary (se estiver em 1a): failover para Standby
O que continua funcionando:
- ALB redireciona para EC2 App 1b
- NAT GW 1b gerencia o tráfego de saída de 1b
- MySQL Standby assume
Lição: A arquitetura multi-AZ garante a continuidade do serviço.
Pergunta 4: Segurança
Por que o banco de dados está em um subnet sem acesso à Internet?
💡 Resposta
Razões de segurança:
- Superfície de ataque reduzida: Sem IP público = sem acesso direto
- Defesa em profundidade: Mesmo que um atacante comprometa o app, não pode exfiltrar dados diretamente
- Conformidade: Requisitos PCI-DSS, HIPAA, etc.
- Princípio do menor privilégio: O banco não precisa de Internet
Parte 4: Entregável
Crie um Documento
Produza um documento PDF ou Word contendo:
-
Página de título: Nome do projeto, seu nome, data
-
Tabela de endereçamento IP:
- VPC CIDR
- Todos os subnets com seus CIDR
-
Diagrama de arquitetura:
- Diagrama claro e legível
- Legenda dos componentes
-
Tabelas de roteamento:
- Uma tabela por tipo de subnet
- Com justificativas
-
Análise de segurança:
- Quais componentes estão expostos?
- Como os demais estão protegidos?
-
Análise de disponibilidade:
- Como a arquitetura lida com uma falha de AZ?
Critérios de Avaliação
| Critério | Pontos |
|---|---|
| CIDR correto e justificado | /10 |
| Subnets bem planejados | /20 |
| Rotas corretas | /20 |
| Diagrama claro e completo | /25 |
| Análise de segurança | /15 |
| Análise de disponibilidade | /10 |
| Total | /100 |
Bônus: Comandos CLI
Se quiser criar esta arquitetura com LocalStack, seguem os comandos:
# Criar o VPC
aws --endpoint-url=http://localhost:4566 ec2 create-vpc \
--cidr-block 10.0.0.0/16 \
--tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=technoshop-vpc}]'
# Criar os subnets públicos
aws --endpoint-url=http://localhost:4566 ec2 create-subnet \
--vpc-id vpc-xxx \
--cidr-block 10.0.1.0/24 \
--availability-zone us-east-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-1a}]'
# Criar o Internet Gateway
aws --endpoint-url=http://localhost:4566 ec2 create-internet-gateway \
--tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=technoshop-igw}]'
# ... continue com os outros recursos
Resumo
Este lab permitiu que você:
- ✅ Compreendesse o processo de concepção de VPC
- ✅ Planejasse um endereçamento IP coerente
- ✅ Definisse tabelas de roteamento apropriadas
- ✅ Analisasse segurança e disponibilidade
- ✅ Documentasse uma arquitetura cloud
Próxima semana: Segurança de Rede