AWS Certified Cloud Practitioner

Post 3 of 25

12%

Complete

Cloud Architecture9 min read

AWS Cloud Practitioner #3: Superpoderes de la Nube - Elasticity, Scalability y HA

Comprende las ventajas clave de cloud computing: elasticity, scalability, high availability y agility. Aprende cómo AWS implementa estos conceptos.

🎯 Lo que Aprenderás Hoy

Al finalizar este post, podrás:

  • Diferenciar entre Elasticity y Scalability
  • Comprender High Availability y Fault Tolerance
  • Explicar Agility en el contexto cloud
  • Identificar cómo AWS implementa estos conceptos

El Problema Real

Es Black Friday. Tu eCommerce normalmente recibe:

  • Tráfico normal: 1,000 usuarios/hora
  • Black Friday: 50,000 usuarios/hora (50x más)

Con infraestructura tradicional:

plaintext
Opción A: Provisionar para 1,000 usuarios
Resultado: Sitio se cae en Black Friday ❌
Pérdida: $500,000 en ventas
 
Opción B: Provisionar para 50,000 usuarios
Costo anual: $120,000
Utilización: 2% (98% desperdiciado)
Resultado: Funciona en Black Friday ✓
         Pero desperdicias $117,600/año ❌

Con cloud:

plaintext
Provisionar para 1,000 usuarios normales
En Black Friday: escalar automáticamente a 50,000
Después: volver a 1,000
 
Costo anual: $12,000 (solo pagas por uso real)
Ahorro: $108,000 (90%)
Resultado: Sitio funciona + costos optimizados ✓✓

Esto es elasticity en acción.


Metodología Bottom-Up

Vamos a explorar cada "superpoder" individualmente:

  1. Elasticity (elasticidad)
  2. Scalability (escalabilidad)
  3. High Availability (alta disponibilidad)
  4. Agility (agilidad)

Luego veremos cómo se combinan en una arquitectura cloud completa.


🔸 Superpoder 1: Elasticity

¿Qué es?

Elasticity es la capacidad de aumentar o disminuir recursos automáticamente basándose en la demanda actual.

Piensa en un elástico: se estira cuando lo jalas, vuelve a su forma original cuando lo sueltas.

Características Clave

  • Automático: No intervención manual
  • Bidireccional: Escala hacia arriba Y hacia abajo
  • Basado en demanda: Responde a métricas reales (CPU, memoria, requests)
  • Objetivo: Optimizar costos mientras se mantiene performance

Ejemplo Visual

plaintext
Tráfico durante el día:
 
00:00-06:00  ▁▁▁  → 2 servers
06:00-09:00  ▃▃▃  → 5 servers (aumenta)
09:00-18:00  ▇▇▇  → 10 servers (pico)
18:00-21:00  ▅▅▅  → 6 servers (disminuye)
21:00-24:00  ▂▂▂  → 3 servers (disminuye más)
 
Solo pagas por servers usados en cada momento

AWS: Auto Scaling

En AWS, la elasticity se implementa con Auto Scaling:

yaml
Auto Scaling Configuration:
  Min: 2 instances    # Mínimo siempre corriendo
  Max: 20 instances   # Máximo permitido
  Desired: 2          # Estado inicial
 
  Scaling Policy:
    Metric: CPU Utilization
    Target: 70%
 
    If CPU > 70% → add instances
    If CPU < 30% → remove instances

Ejemplo código:

bash
# Crear Auto Scaling Group
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name my-asg \
  --launch-configuration-name my-config \
  --min-size 2 \
  --max-size 20 \
  --desired-capacity 2 \
  --availability-zones us-east-1a us-east-1b
Success

Beneficio Real: Netflix usa elasticity para escalar de 800 instancias EC2 en horas valle a 10,000+ instancias en horas pico. Solo paga por lo que usa.


🔸 Superpoder 2: Scalability

¿Qué es?

Scalability es la capacidad de manejar crecimiento agregando recursos.

A diferencia de elasticity (automático y temporal), scalability es sobre capacidad total.

Tipos de Scalability

Vertical Scaling (Scale Up/Down)

  • Aumentar el tamaño de un recurso
  • Ejemplo: Cambiar de t2.micro (1 vCPU, 1GB RAM) a t2.xlarge (4 vCPU, 16GB RAM)
  • Límite: Hay un máximo físico
  • Downtime: Usualmente requiere restart

Horizontal Scaling (Scale Out/In)

  • Aumentar la cantidad de recursos
  • Ejemplo: De 2 servers a 10 servers
  • Límite: Casi ilimitado
  • Downtime: Zero (se agregan sin afectar existentes)

Comparación

plaintext
Vertical Scaling (Scale Up):
┌─────────┐       ┌─────────────┐
│ Small   │  -->  │   Large     │
│ Server  │       │   Server    │
└─────────┘       └─────────────┘
  1 vCPU             4 vCPUs
  1GB RAM            16GB RAM
 
Horizontal Scaling (Scale Out):
┌───┐            ┌───┐┌───┐┌───┐┌───┐
│ S │    -->     │ S ││ S ││ S ││ S │
└───┘            └───┘└───┘└───┘└───┘
1 server          4 servers

¿Cuál Usar?

EscenarioTipoRazón
Base de datos (single instance)VerticalDB tradicionales no distribuyen fácil
Web serversHorizontalStateless, fácil de distribuir
Legacy app (no cloud-native)VerticalNo diseñada para distribuir
MicroservicesHorizontalDiseñados para escalar horizontalmente
Tip

Regla de oro: Horizontal scaling es preferido en cloud porque:

  • Sin límite teórico
  • Zero downtime
  • Fault tolerance incluido
  • Aprovecha elasticity

AWS: Implementación

javascript
// Horizontal scaling con Auto Scaling
const scalingPolicy = {
  PolicyName: 'scale-on-load',
  AdjustmentType: 'ChangeInCapacity',
  ScalingAdjustment: 2,  // Agregar 2 instancias
  Cooldown: 300          // Esperar 5 min antes de escalar de nuevo
};
 
// Vertical scaling (cambiar instance type)
aws ec2 modify-instance-attribute \
  --instance-id i-1234567890abcdef0 \
  --instance-type t2.xlarge

🔸 Superpoder 3: High Availability

¿Qué es?

High Availability (HA) es la capacidad de un sistema de permanecer operacional incluso cuando componentes fallan.

Objetivo: Minimizar downtime.

Métricas de Disponibilidad

AvailabilityDowntime/añoNivel
99%3.65 díasAceptable para apps internas
99.9%8.76 horasBueno
99.99%52.6 minutosExcelente
99.999%5.26 minutos"Five nines" - Excepcional

Cómo Lograr HA en AWS

1. Multi-AZ Deployment

plaintext
Region: us-east-1
  ├── AZ-A: Web Server 1, DB Primary
  ├── AZ-B: Web Server 2, DB Standby
  └── AZ-C: Web Server 3
 
Load Balancer distribuye tráfico entre AZs

Si AZ-A falla → AZ-B y AZ-C continúan sirviendo.

2. Load Balancing

bash
# Elastic Load Balancer distribuye tráfico
aws elbv2 create-load-balancer \
  --name my-load-balancer \
  --subnets subnet-a subnet-b subnet-c \
  --scheme internet-facing

3. Health Checks

yaml
Health Check:
  Protocol: HTTP
  Port: 80
  Path: /health
  Interval: 30 seconds
  Timeout: 5 seconds
  Unhealthy threshold: 2
 
Action: Si server falla 2 health checks consecutivos,
        remover del pool y reemplazar

HA vs Fault Tolerance

High Availability:

  • Minimiza downtime
  • Puede haber breve interrupción
  • Ejemplo: Failover a standby (toma 30 segundos)

Fault Tolerance:

  • Zero downtime
  • Sistema continúa sin interrupción visible
  • Más costoso (redundancia completa)
  • Ejemplo: Active-Active en múltiples AZs
Info

En el examen: High Availability acepta breve downtime. Fault Tolerance NO acepta ningún downtime.


🔸 Superpoder 4: Agility

¿Qué es?

Agility es la capacidad de innovar rápidamente y experimentar sin grandes inversiones.

En cloud: Lanzar recursos en minutos, no meses.

Componentes de Agility

1. Speed to Market

plaintext
On-premise:
  Planear → Aprobar → Comprar → Instalar → Configurar
  Tiempo: 3-6 meses
 
Cloud:
  Click → Recursos listos
  Tiempo: 5 minutos

2. Experimentación Económica

plaintext
Idea nueva → Lanzar en cloud → Probar

         ¿Funciona?
            ↙      ↘
          Sí       No
           ↓        ↓
       Escalar   Apagar
       (costo    (costo
       crece)    = $0)

3. Enfoque en Negocio

En lugar de gastar tiempo en:

  • Gestionar data centers
  • Parchar servidores
  • Configurar redes
  • Instalar hardware

Te enfocas en:

  • Desarrollar features
  • Atender clientes
  • Innovar productos

Ejemplo Real: Startup MVP

Sin cloud:

  • Inversión inicial: $50,000
  • Tiempo setup: 3 meses
  • Riesgo: Si MVP falla, perdiste $50K

Con cloud:

  • Inversión inicial: $0
  • Tiempo setup: 1 semana
  • Costo mensual: $200
  • Si MVP falla: Apagar, costo total = $200

Resultado: Probaste idea 12x más rápido y 250x más barato.


🔗 Combinando los Superpoderes

Ahora veamos cómo estos conceptos trabajan juntos en una arquitectura real:

Arquitectura Ejemplo: App Web Global

plaintext
┌─────────────────────────────────────────────────────┐
│  REGION: us-east-1                                  │
│                                                     │
│  ┌──────────────┐                                  │
│  │ CloudFront   │  ← AGILITY: Lanzado en minutos   │
│  │ (Edge Cache) │                                   │
│  └──────┬───────┘                                  │
│         │                                           │
│  ┌──────▼───────────┐                              │
│  │ Load Balancer    │  ← HIGH AVAILABILITY         │
│  └─────┬─────┬──────┘                              │
│        │     │                                      │
│   ┌────▼─┐ ┌▼────┐                                │
│   │ AZ-A │ │ AZ-B│  ← FAULT TOLERANCE             │
│   │      │ │     │                                 │
│   │ ┌──┐ │ │ ┌──┐│                                │
│   │ │EC│ │ │ │EC││  ← ELASTICITY: Auto Scale 2-20 │
│   │ │2 │ │ │ │2 ││                                 │
│   │ └──┘ │ │ └──┘│                                │
│   │ ┌──┐ │ │ ┌──┐│                                │
│   │ │EC│ │ │ │EC││  ← SCALABILITY: Horizontal     │
│   │ │2 │ │ │ │2 ││                                 │
│   │ └──┘ │ │ └──┘│                                │
│   │      │ │     │                                 │
│   │ ┌────▼─▼─────┴┐                               │
│   │ │ RDS Multi-AZ │ ← HIGH AVAILABILITY           │
│   │ └──────────────┘                               │
│   └────────────────────┘                            │
└─────────────────────────────────────────────────────┘

Cómo funciona:

  1. Agility: Toda la infraestructura lanzada en 1 hora
  2. Scalability: Horizontal scaling de EC2 instances
  3. Elasticity: Auto Scaling basado en tráfico (2 a 20 instancias)
  4. High Availability: Multi-AZ deployment + Load Balancer
  5. Fault Tolerance: Si AZ falla, sistema sigue operando

Casos de Uso Reales

Airbnb: Elasticity en Acción

Desafío: Tráfico varía masivamente (New Year's Eve vs. Tuesday morning).

Solución:

  • Auto Scaling de 200 a 2,000 instancias en horas pico
  • Elastic Load Balancing
  • Multi-region para usuarios globales

Resultado:

  • Ahorro del 75% vs. provisionar para pico constante
  • Performance consistente bajo cualquier carga

Capital One: High Availability

Requisito: Banca online NO puede tener downtime.

Solución:

  • Multi-AZ en todas las capas
  • Active-Active deployment
  • Automated failover (< 30 segundos)

Resultado:

  • 99.99% uptime
  • Confianza de clientes
  • Cumplimiento regulatorio

✅ Best Practices

Para Elasticity

  • Define métricas correctas: No solo CPU, también memoria, network, custom metrics
  • Configura cooldown periods: Evita scaling loops
  • Usa predictive scaling: ML puede predecir tráfico futuro

Para Scalability

  • Diseña stateless: Aplicaciones sin estado escalan mejor horizontalmente
  • Usa managed services: RDS, DynamoDB ya escalan por ti
  • Database scaling: Read replicas para escalabilidad de lectura

Para High Availability

  • Mínimo 2 AZs: Siempre, para producción
  • Health checks agresivos: Detectar fallos rápido
  • Automated recovery: No esperes intervención manual

📝 Preparación para el Examen

Puntos Clave

  • 📌 Elasticity = escalar automáticamente up/down basado en demanda
  • 📌 Scalability = capacidad de crecer (vertical u horizontal)
  • 📌 High Availability = minimizar downtime (Multi-AZ)
  • 📌 Fault Tolerance = zero downtime (más costoso que HA)
  • 📌 Agility = innovar rápido sin grandes inversiones

Pregunta de Práctica

Una aplicación experimenta picos de tráfico impredecibles. Necesitas que automáticamente agregue servers durante picos y los remueva cuando el tráfico baja. ¿Qué concepto es este?

A) Scalability B) Elasticity C) High Availability D) Fault Tolerance

Success

Respuesta: B) Elasticity

Elasticity es la capacidad de escalar automáticamente up y down basándose en demanda actual. AWS Auto Scaling implementa esto.

Por qué no las otras:

  • A) Scalability es capacidad general, pero no implica automaticidad
  • C) HA es sobre disponibilidad, no sobre ajuste de recursos
  • D) Fault Tolerance es sobre tolerancia a fallos, no scaling

🎓 Resumen

Los 4 Superpoderes de la Nube:

  1. Elasticity: Escalar automáticamente con la demanda
  2. Scalability: Capacidad de crecer (vertical u horizontal)
  3. High Availability: Minimizar downtime (Multi-AZ)
  4. Agility: Innovar rápido sin inversión inicial

Cómo se relacionan:

plaintext
Scalability (capacidad)

Elasticity (automatización del scaling)

High Availability (redundancia)

Agility (velocidad de implementación)
  ||
Todo junto = Cloud-Native Architecture

⏭️ Próximo Post

En el Post #4 exploraremos el Modelo de Responsabilidad Compartida:

  • ¿Qué gestiona AWS?
  • ¿Qué gestionas TÚ?
  • Security OF the cloud vs Security IN the cloud
  • Implicaciones para compliance

📚 Recursos


Tags: #AWS #CloudPractitioner #Elasticity #Scalability #HighAvailability #AutoScaling

Post 3 de 25 - Serie AWS Cloud Practitioner Certification

Written by Jhonny Lorenzo

Researcher at TrautsLab

Related Articles

Recent Articles

Comments