Lab : Diseño de Arquitectura HA
Objetivo del Lab
En este laboratorio, usted va a diseñar una arquitectura altamente disponible para una aplicación web. Analizará los requisitos, identificará los SPOF y propondrá una solución robusta.
Parte 1 : Escenario
Contexto
ShopOnline es una plataforma de comercio electrónico que sufre pérdidas financieras por cada minuto de indisponibilidad. La dirección exige una arquitectura con 99.9% de disponibilidad.
Requisitos
┌─────────────────────────────────────────────────────────────┐
│ REQUISITOS SHOPONLINE │
├─────────────────────────────────────────────────────────────┤
│ │
│ DISPONIBILIDAD │
│ • 99.9% uptime (máx 8.76h downtime/año) │
│ • Failover automático < 2 minutos │
│ • Cero pérdida de datos │
│ │
│ RENDIMIENTO │
│ • Tiempo de respuesta < 500ms │
│ • Soporte para 10,000 usuarios simultáneos │
│ • Picos de carga x3 durante rebajas │
│ │
│ SEGURIDAD │
│ • HTTPS obligatorio │
│ • Base de datos no expuesta a Internet │
│ • Cumplimiento PCI-DSS (pago) │
│ │
│ PRESUPUESTO │
│ • Máximo $2,000/mes │
│ │
└─────────────────────────────────────────────────────────────┘
Arquitectura Actual (a mejorar)
┌─────────────────────────────────────────────────────────────┐
│ ARQUITECTURA ACTUAL │
├─────────────────────────────────────────────────────────────┤
│ │
│ 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álisis de los SPOF
Ejercicio 2.1 : Identificar los SPOF
Analice la arquitectura actual y liste todos los puntos de fallo único:
| # | Componente | Tipo de SPOF | Impacto si falla |
|---|---|---|---|
| 1 | ? | ? | ? |
| 2 | ? | ? | ? |
| 3 | ? | ? | ? |
| 4 | ? | ? | ? |
💡 Solución
| # | Componente | Tipo de SPOF | Impacto si falla |
|---|---|---|---|
| 1 | EC2 único | Cómputo | Sitio completamente caído |
| 2 | RDS Single-AZ | Base de datos | Posible pérdida de datos |
| 3 | Solo una AZ | Infraestructura | Todo caído si AZ falla |
| 4 | IP pública en EC2 | Acceso | No hay failover posible |
| 5 | Sin LB | Distribución | Imposible escalar |
Ejercicio 2.2 : Calcular la Disponibilidad Actual
Si cada componente tiene 99% de disponibilidad individual, ¿cuál es la disponibilidad total?
Arquitectura en serie: Dispo = Dispo_EC2 × Dispo_RDS × Dispo_AZ
💡 Solución
Dispo = 0.99 × 0.99 × 0.99 = 0.970 = 97%
Downtime anual = 3% × 365 días = 10.95 días
¡Está LEJOS del 99.9% requerido (8.76 horas)!
Parte 3 : Diseño de la Solución
Ejercicio 3.1 : Dibujar la Arquitectura Objetivo
Diseñe una arquitectura que alcance 99.9% de disponibilidad.
Componentes a incluir:
- Application Load Balancer
- Instancias EC2 Multi-AZ
- RDS Multi-AZ
- Auto Scaling Group
Plantilla a completar:
┌─────────────────────────────────────────────────────────────────────────┐
│ SU ARQUITECTURA │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Internet │
│ │ │
│ [Dibuje aquí] │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
💡 Solución Arquitectura
┌─────────────────────────────────────────────────────────────────────────┐
│ ARQUITECTURA 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 │ │ │ │ │
│ │ │ │ └───────────┘ │ │ └───────────┘ │ │ │ │
│ │ │ └─────────────────┘ └─────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Ejercicio 3.2 : Tabla de Configuración
Complete la tabla de configuración para su arquitectura:
| Componente | Configuración | Justificación |
|---|---|---|
| ALB | ? | ? |
| EC2 | Tipo: ?, Número min: ?, max: ? | ? |
| RDS | Tipo: ?, Multi-AZ: ? | ? |
| ASG | Política de escalado: ? | ? |
💡 Solución
| Componente | Configuración | Justificación |
|---|---|---|
| ALB | Internet-facing, 2 AZ | Distribución + HA |
| EC2 | t3.medium, min:2, max:6 | 2 para HA, 6 para picos |
| RDS | db.t3.medium, Multi-AZ: Sí | Failover auto + 0 pérdida de datos |
| ASG | Target Tracking CPU 70% | Escalado automático según carga |
Parte 4 : Estimación de Costos
Ejercicio 4.1 : Calcular el Costo Mensual
Estime el costo mensual de su arquitectura:
| Servicio | Configuración | Costo/mes |
|---|---|---|
| ALB | 1 ALB + uso | ? |
| EC2 | 2-6 t3.medium | ? |
| RDS | db.t3.medium Multi-AZ | ? |
| NAT Gateway | 2 (HA) | ? |
| Data Transfer | Estimado | ? |
| TOTAL | ? |
💡 Solución Estimación
| Servicio | Configuración | Costo/mes |
|---|---|---|
| ALB | 1 ALB + uso | ~$25 |
| EC2 | 2 t3.medium (min) | ~$60 |
| RDS | db.t3.medium Multi-AZ | ~$100 |
| NAT Gateway | 2 + datos | ~$70 |
| EBS | 100GB gp3 | ~$20 |
| Data Transfer | ~100GB | ~$10 |
| TOTAL | ~$285/mes |
✅ Dentro del presupuesto de $2,000/mes con margen para escalado
Parte 5 : Plan de Pruebas HA
Ejercicio 5.1 : Escenarios de Prueba
Describa cómo probaría la alta disponibilidad:
| Prueba | Acción | Resultado Esperado |
|---|---|---|
| Failover EC2 | ? | ? |
| Failover RDS | ? | ? |
| Falla AZ | ? | ? |
💡 Solución
| Prueba | Acción | Resultado Esperado |
|---|---|---|
| Failover EC2 | Terminar 1 instancia | ASG lanza nueva, ALB redirige |
| Failover RDS | Reboot with failover | Standby pasa a primary, < 2min |
| Falla AZ | Desactivar subnet AZ-a | Tráfico 100% en AZ-b |
| Scale Out | Generar carga | Nuevas instancias automáticas |
| Health Check | Detener nginx | ALB retira instancia unhealthy |
Entregable Final
Documento a Producir
Cree un documento "Arquitectura HA ShopOnline" que contenga:
- Análisis del existente (SPOF identificados)
- Diagrama de arquitectura objetivo (con todos los componentes)
- Tabla de configuración (detallada)
- Estimación de costos
- Plan de pruebas HA
- Cálculo de disponibilidad teórica
Criterios de Evaluación
| Criterio | Puntos |
|---|---|
| SPOF correctamente identificados | /15 |
| Arquitectura coherente y completa | /25 |
| Configuración justificada | /20 |
| Costos dentro del presupuesto | /15 |
| Plan de pruebas pertinente | /15 |
| Calidad del documento | /10 |
| Total | /100 |
Próxima semana: Auto Scaling