Pular para o conteúdo principal

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.

Competência Chave

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:

NomeTipoAZCIDRUso
public-1aPúblicous-east-1a??
public-1bPúblicous-east-1b??
private-app-1aPrivadous-east-1a??
private-app-1bPrivadous-east-1b??
private-db-1aPrivadous-east-1a??
private-db-1bPrivadous-east-1b??
💡 Solução sugerida
NomeTipoAZCIDRUso
public-1aPúblicous-east-1a10.0.1.0/24ALB, NAT GW
public-1bPúblicous-east-1b10.0.2.0/24ALB, NAT GW
private-app-1aPrivadous-east-1a10.0.11.0/24Servidores App
private-app-1bPrivadous-east-1b10.0.12.0/24Servidores App
private-db-1aPrivadous-east-1a10.0.21.0/24MySQL Master
private-db-1bPrivadous-east-1b10.0.22.0/24MySQL Replica

Etapa 3: Definir as Route Tables​

Para cada tipo de subnet, defina as rotas:

Route Table Pública:

DestinoTarget
??
??

Route Table Privada App (1a):

DestinoTarget
??
??

Route Table Privada DB:

DestinoTarget
??
💡 Solução sugerida

Route Table Pública:

DestinoTarget
10.0.0.0/16local
0.0.0.0/0igw-xxx

Route Table Privada App (1a):

DestinoTarget
10.0.0.0/16local
0.0.0.0/0nat-1a

Route Table Privada DB:

DestinoTarget
10.0.0.0/16local
(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:

  1. EC2 App envia uma requisição para a Internet
  2. O tráfego segue a rota 0.0.0.0/0 → NAT Gateway
  3. NAT Gateway traduz o IP privado em IP público (Elastic IP)
  4. O tráfego passa pelo IGW para a Internet
  5. 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:

  1. Superfície de ataque reduzida: Sem IP público = sem acesso direto
  2. Defesa em profundidade: Mesmo que um atacante comprometa o app, não pode exfiltrar dados diretamente
  3. Conformidade: Requisitos PCI-DSS, HIPAA, etc.
  4. 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:

  1. Página de título: Nome do projeto, seu nome, data

  2. Tabela de endereçamento IP:

    • VPC CIDR
    • Todos os subnets com seus CIDR
  3. Diagrama de arquitetura:

    • Diagrama claro e legível
    • Legenda dos componentes
  4. Tabelas de roteamento:

    • Uma tabela por tipo de subnet
    • Com justificativas
  5. Análise de segurança:

    • Quais componentes estão expostos?
    • Como os demais estão protegidos?
  6. Análise de disponibilidade:

    • Como a arquitetura lida com uma falha de AZ?

Critérios de Avaliação​

CritérioPontos
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