Saltar al contenido principal

Lab: Diseño de un Esquema VPC

Objetivo del Lab​

En este laboratorio, usted va a diseñar y documentar una arquitectura VPC completa en papel o con una herramienta de diagramas. Es un ejercicio fundamental porque en la empresa, siempre deberá planificar antes de crear.

Competencia Clave

La capacidad de dibujar y explicar una arquitectura de red es esencial para cualquier profesional cloud.

Parte 1: Escenario​

Contexto​

Usted es arquitecto cloud en TechnoShop, una empresa de comercio electrónico. Se le pide diseñar la infraestructura AWS para su nueva aplicación.

Requisitos​

┌─────────────────────────────────────────────────────────────┐
│ REQUISITOS TECHNOSHOP │
├─────────────────────────────────────────────────────────────┤
│ │
│ APLICACIÓN │
│ • Sitio web accesible desde Internet │
│ • Servidores de aplicación (API backend) │
│ • Base de datos MySQL │
│ │
│ SEGURIDAD │
│ • Base de datos NO accesible desde Internet │
│ • Servidores de aplicación protegidos │
│ • Solo el Load Balancer expuesto a Internet │
│ │
│ DISPONIBILIDAD │
│ • Aplicación disponible incluso si una AZ falla │
│ • Mínimo 2 zonas de disponibilidad │
│ │
│ RED │
│ • Los servidores de aplicación deben poder descargar │
│ actualizaciones desde Internet │
│ │
└─────────────────────────────────────────────────────────────┘

Parte 2: Ejercicio de Diseño​

Paso 1: Definir el CIDR del VPC​

Elija un rango de direcciones para su VPC:

Preguntas para hacerse:

  • ¿Cuántas direcciones IP necesita?
  • ¿Qué rango RFC 1918 utilizar?
  • ¿Qué prefijo CIDR elegir?

Su respuesta:

VPC CIDR : ________________
Justificación : ________________
💡 Solución sugerida
VPC CIDR : 10.0.0.0/16
Justificación :
- 65,536 direcciones = más que suficiente
- Rango 10.x.x.x = estándar para empresas
- /16 permite crear muchas subredes /24

Paso 2: Planificar las Subredes​

Complete la siguiente tabla:

NombreTipoAZCIDRUso
public-1aPúblicaus-east-1a??
public-1bPúblicaus-east-1b??
private-app-1aPrivadaus-east-1a??
private-app-1bPrivadaus-east-1b??
private-db-1aPrivadaus-east-1a??
private-db-1bPrivadaus-east-1b??
💡 Solución sugerida
NombreTipoAZCIDRUso
public-1aPúblicaus-east-1a10.0.1.0/24ALB, NAT GW
public-1bPúblicaus-east-1b10.0.2.0/24ALB, NAT GW
private-app-1aPrivadaus-east-1a10.0.11.0/24Servidores App
private-app-1bPrivadaus-east-1b10.0.12.0/24Servidores App
private-db-1aPrivadaus-east-1a10.0.21.0/24MySQL Principal
private-db-1bPrivadaus-east-1b10.0.22.0/24MySQL Réplica

Paso 3: Definir las Tablas de Rutas​

Para cada tipo de subred, defina las rutas:

Tabla de Rutas Pública:

DestinoDestino (Target)
??
??

Tabla de Rutas Privada App (1a):

DestinoDestino (Target)
??
??

Tabla de Rutas Privada DB:

DestinoDestino (Target)
??
💡 Solución sugerida

Tabla de Rutas Pública:

DestinoDestino (Target)
10.0.0.0/16local
0.0.0.0/0igw-xxx

Tabla de Rutas Privada App (1a):

DestinoDestino (Target)
10.0.0.0/16local
0.0.0.0/0nat-1a

Tabla de Rutas Privada DB:

DestinoDestino (Target)
10.0.0.0/16local
(Sin ruta a Internet)-

Paso 4: Dibujar la Arquitectura​

Dibuje el esquema completo de la arquitectura. Utilice:

  • Draw.io (gratuito)
  • Lucidchart
  • Papel y lápiz

Elementos a incluir:

  • VPC con su CIDR
  • Todas las subredes con sus CIDR
  • Internet Gateway
  • NAT Gateways (¿dónde colocarlas?)
  • Load Balancer (¿dónde colocarlo?)
  • Instancias EC2 (servidores app)
  • Base de datos
  • Flechas de tráfico
💡 Esquema Solución
┌─────────────────────────────────────────────────────────────────────────┐
│ ARQUITECTURA 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 │ │ │ │ │
│ │ │ │ │ Principal│ Replicación │ │ Standby │ │ │ │ │
│ │ │ │ └───────────┘ │ │ └───────────┘ │ │ │ │
│ │ │ └─────────────────┘ └─────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────────┘

Parte 3: Preguntas de Análisis​

Pregunta 1: Flujo de Tráfico​

Describa el camino del tráfico para un usuario que accede al sitio web:

Usuario → ? → ? → ? → Base de datos
💡 Respuesta
Usuario 
→ Internet
→ IGW
→ ALB (subred pública)
→ EC2 App (subred privada app)
→ MySQL (subred privada db)

Pregunta 2: Actualización de Software​

¿Cómo puede un servidor de aplicación descargar una actualización desde Internet?

💡 Respuesta

El servidor de aplicación está en una subred privada. Utiliza el NAT Gateway:

  1. EC2 App envía una solicitud hacia Internet
  2. El tráfico sigue la ruta 0.0.0.0/0 → NAT Gateway
  3. NAT Gateway traduce la IP privada en IP pública (Elastic IP)
  4. El tráfico pasa por el IGW hacia Internet
  5. La respuesta regresa por el mismo camino

Pregunta 3: Falla de AZ​

¿Qué sucede si la zona us-east-1a falla?

💡 Respuesta

Impacto:

  • EC2 App 1a: no disponible
  • NAT GW 1a: no disponible
  • MySQL Principal (si está en 1a): cambia a Standby

Lo que sigue funcionando:

  • ALB redirige a EC2 App 1b
  • NAT GW 1b gestiona el tráfico saliente de 1b
  • MySQL Standby toma el relevo

Lección: La arquitectura multi-AZ asegura la continuidad del servicio.

Pregunta 4: Seguridad​

¿Por qué la base de datos está en una subred sin acceso a Internet?

💡 Respuesta

Razones de seguridad:

  1. Superficie de ataque reducida: Sin IP pública = sin acceso directo
  2. Defensa en profundidad: Incluso si un atacante compromete la app, no puede exfiltrar directamente los datos
  3. Cumplimiento: Requisitos PCI-DSS, HIPAA, etc.
  4. Principio de menor privilegio: La base de datos no necesita Internet

Parte 4: Entregable​

Cree un Documento​

Genere un documento PDF o Word que contenga:

  1. Página de título: Nombre del proyecto, su nombre, fecha

  2. Tabla de direccionamiento IP:

    • VPC CIDR
    • Todas las subredes con sus CIDR
  3. Esquema de arquitectura:

    • Diagrama claro y legible
    • Leyenda de los componentes
  4. Tablas de ruteo:

    • Una tabla por tipo de subred
    • Con justificaciones
  5. Análisis de seguridad:

    • ¿Qué componentes están expuestos?
    • ¿Cómo están protegidos los demás?
  6. Análisis de disponibilidad:

    • ¿Cómo gestiona la arquitectura una falla de AZ?

Criterios de Evaluación​

CriterioPuntos
CIDR correcto y justificado/10
Subredes bien planificadas/20
Rutas correctas/20
Esquema claro y completo/25
Análisis de seguridad/15
Análisis de disponibilidad/10
Total/100

Bonus: Comandos CLI​

Si desea crear esta arquitectura con LocalStack, aquí están los comandos:

# Crear el 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}]'

# Crear las subredes públicas
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}]'

# Crear el Internet Gateway
aws --endpoint-url=http://localhost:4566 ec2 create-internet-gateway \
--tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=technoshop-igw}]'

# ... continuar con los demás recursos

Resumen​

Este laboratorio le ha permitido:

  • ✅ Comprender el proceso de diseño VPC
  • ✅ Planificar un direccionamiento IP coherente
  • ✅ Definir tablas de ruteo apropiadas
  • ✅ Analizar la seguridad y la disponibilidad
  • ✅ Documentar una arquitectura cloud

Próxima semana: Seguridad de Red