AWS Certified Cloud Practitioner

Post 6 of 25

24%

Complete

Cloud Architecture12 min read

AWS Cloud Practitioner #6: Amazon EC2 - Tu Servidor en la Nube

Domina Amazon EC2: instance types, familias, pricing models (On-Demand, Reserved, Spot), y aprende cuándo usar cada opción para optimizar costos y performance.

🎯 Lo que Aprenderás Hoy

Al finalizar este post, podrás:

  • Explicar qué es Amazon EC2 y casos de uso
  • Identificar instance types y familias (T, M, C, R, etc.)
  • Comparar pricing models: On-Demand vs. Reserved vs. Spot vs. Dedicated
  • Elegir la opción correcta según el caso de uso
  • Comprender conceptos clave: AMI, Security Groups, User Data

El Problema Real

Trabajas en una startup. Tu CTO dice:

"Necesitamos un servidor para nuestra aplicación web. Presupuesto limitado."

Opciones:

plaintext
Opción 1: Comprar servidor físico
Costo: $5,000 upfront + $200/mes mantenimiento
Tiempo setup: 2-3 semanas
Flexibilidad: 0
 
Opción 2: Amazon EC2
Costo: $0 upfront + $8.35/mes (t2.micro)
Tiempo setup: 5 minutos
Flexibilidad: Cambia tipo de instancia cuando quieras

EC2 gana por: menor costo, velocidad, flexibilidad.


¿Qué es Amazon EC2?

Amazon EC2 (Elastic Compute Cloud) es un servicio que te permite rentar servidores virtuales en la nube.

Info

Analogía: Es como Uber vs. comprar un auto.

Comprar servidor físico: Alto costo inicial, mantenimiento constante, depreciation EC2: Pagas solo por las horas que usas, sin mantenimiento de hardware, actualizas cuando quieras

Características Clave

1. Elastic (elástico)

plaintext
Puedes:
- Lanzar 1 instancia o 1,000 en minutos
- Escalar hacia arriba o abajo según demanda
- Cambiar instance type sin perder datos

2. Complete control

plaintext
Tienes acceso root/admin:
- Instala cualquier software
- Configura firewall
- Gestiona OS

3. Flexible pricing

plaintext
4 modelos de precios (explicaremos abajo):
- On-Demand (por hora)
- Reserved (descuento por compromiso)
- Spot (hasta 90% descuento)
- Dedicated (hardware exclusivo)

4. Integrated

plaintext
Se integra con otros servicios AWS:
- EBS (storage)
- VPC (networking)
- IAM (security)
- CloudWatch (monitoring)

Conceptos Fundamentales

1. Instance (Instancia)

Una instance es un servidor virtual en EC2.

plaintext
Piensa en ello como una computadora en la nube:
- Tiene CPU, RAM, Storage, Network
- Corre un OS (Linux, Windows, etc.)
- Puede ejecutar aplicaciones como cualquier servidor

2. AMI (Amazon Machine Image)

Un AMI es una plantilla que contiene:

  • Sistema operativo (Amazon Linux, Ubuntu, Windows, etc.)
  • Software pre-instalado
  • Configuraciones
bash
# Lanzar instance con AMI de Amazon Linux
aws ec2 run-instances \
  --image-id ami-0c55b159cbfafe1f0 \  # AMI ID
  --instance-type t2.micro
 
# Tipos de AMIs:
# - AWS-provided: Amazon Linux, Ubuntu, Windows Server
# - AWS Marketplace: Con software pre-instalado (WordPress, etc.)
# - Custom: Tus propias AMIs con tu configuración

3. Instance Type

Define las especificaciones del servidor:

  • CPU: Número de vCPUs
  • Memory: RAM
  • Storage: Instance storage (ephemeral)
  • Network: Bandwidth
plaintext
Ejemplo: t2.micro
- 1 vCPU
- 1 GB RAM
- EBS-only storage
- Low to Moderate network
 
Ejemplo: c5.4xlarge
- 16 vCPUs
- 32 GB RAM
- EBS-only storage
- Up to 10 Gbps network

Instance Families (Familias de Instancias)

AWS organiza instances en familias según su propósito.

Nomenclatura

plaintext
Ejemplo: c5.2xlarge
 
c    = Family (Compute Optimized)
5    = Generation (5ta generación)
2x   = Size dentro de la familia
large = Base size

Familias Principales

1. General Purpose (T, M, A)

Para workloads balanceados (CPU, memory, network).

plaintext
Familia T (Burstable):
t2.micro, t2.small, t2.medium, t3.large
 
Características:
- Baseline CPU performance
- Puede hacer "burst" cuando necesita más CPU
- Acumula "CPU credits" cuando está idle
- Ideal para: Web servers, dev environments
 
Ejemplo:
t2.micro: 1 vCPU, 1 GB RAM, $8.35/mes
Baseline: 10% CPU constant
Burst: 100% CPU temporalmente (usa credits)
 
Caso de uso:
Blog con 1,000 visitas/día
- 90% del tiempo: usa 10% CPU (acumula credits)
- Picos de tráfico: burst a 100% CPU
plaintext
Familia M (Balanced):
m5.large, m5.xlarge, m5.2xlarge
 
Características:
- Balance entre compute, memory, network
- Performance consistente
- Ideal para: Aplicaciones empresariales, backends
 
Ejemplo:
m5.large: 2 vCPUs, 8 GB RAM, $69.35/mes
 
Caso de uso:
Aplicación web empresarial con tráfico constante

2. Compute Optimized (C)

Para workloads que requieren mucho CPU.

plaintext
Familia C:
c5.large, c5.xlarge, c5.2xlarge
 
Características:
- Ratio CPU:Memory alto
- High-performance processors
- Ideal para: Batch processing, gaming servers, scientific modeling
 
Ejemplo:
c5.large: 2 vCPUs, 4 GB RAM, $61.32/mes
(Comparado con m5.large: 2 vCPUs, 8 GB RAM)
← Menos RAM, mismo CPU, más barato
 
Caso de uso:
Video encoding: Procesar 1000 videos/día
Necesita: Mucho CPU, poco RAM

3. Memory Optimized (R, X)

Para workloads que requieren mucha RAM.

plaintext
Familia R:
r5.large, r5.xlarge, r5.2xlarge
 
Características:
- Ratio Memory:CPU alto
- Hasta 768 GB RAM
- Ideal para: In-memory databases, big data analytics
 
Ejemplo:
r5.large: 2 vCPUs, 16 GB RAM, $90.25/mes
(Comparado con m5.large: 2 vCPUs, 8 GB RAM)
← Doble RAM, mismo CPU
 
Caso de uso:
Redis cache con 10GB de data en memoria

4. Storage Optimized (I, D)

Para workloads que requieren mucho I/O de disco.

plaintext
Familia I:
i3.large, i3.xlarge
 
Características:
- NVMe SSD storage local
- High IOPS (Input/Output Operations Per Second)
- Ideal para: NoSQL databases, data warehousing
 
Caso de uso:
Cassandra database con 1TB de datos locales

5. Accelerated Computing (P, G, F)

Para workloads que requieren GPU o FPGA.

plaintext
Familia P (GPU):
p3.2xlarge, p3.8xlarge
 
Características:
- NVIDIA Tesla V100 GPUs
- Ideal para: Machine Learning, video rendering
 
Caso de uso:
Entrenar modelos de deep learning

Comparación Visual

FamilyvCPURAMUso PrincipalEjemplo
T1-80.5-32 GBWeb servers, dev/testBlog WordPress
M2-968-384 GBGeneral purpose appsBackend API
C2-964-192 GBCompute-intensiveVideo encoding
R2-9616-768 GBMemory-intensiveRedis cache
I2-6415-512 GBStorage I/ONoSQL database
P8-9661-768 GBGPU workloadsML training

Pricing Models (Modelos de Precios)

1. On-Demand

¿Qué es? Pagas por hora o segundo, sin compromiso.

plaintext
Características:
✅ No upfront payment
✅ No long-term commitment
✅ Puedes terminar cuando quieras
❌ Más caro que otras opciones
 
Pricing:
t2.micro: $0.0116/hora = $8.35/mes (24/7)
t2.small: $0.023/hora = $16.79/mes

¿Cuándo usar?

plaintext
✅ Workloads impredecibles
✅ Dev/test environments
✅ Apps nuevas (no sabes tráfico aún)
✅ Short-term spikes
 
Ejemplo:
Lanzas nueva app, no sabes si tendrá éxito
Usa On-Demand primeros 3 meses
Luego migra a Reserved si es exitosa

2. Reserved Instances (RI)

¿Qué es? Comprometes 1 o 3 años, obtienes hasta 75% descuento.

plaintext
Opciones:
- 1 año: ~40% descuento
- 3 años: ~60% descuento
 
Payment options:
1. All Upfront: Pagas todo por adelantado (mayor descuento)
2. Partial Upfront: Pagas parte ahora, resto mensual
3. No Upfront: Pagas mensual (menor descuento)
 
Flexibility:
- Standard RI: No puedes cambiar instance type (mayor descuento)
- Convertible RI: Puedes cambiar instance type (menor descuento)

Ejemplo de ahorro:

plaintext
Workload: Servidor web 24/7
 
On-Demand (t2.small):
$0.023/hora × 730 horas/mes × 12 meses = $201.48/año
 
Reserved 1 año (No Upfront):
~40% descuento = $120.89/año
Ahorro: $80.59/año (40%)
 
Reserved 3 años (All Upfront):
~60% descuento = $80.59/año
Ahorro: $120.89/año (60%)

¿Cuándo usar?

plaintext
✅ Workloads estables y predecibles
✅ Apps que correrán 24/7 por años
✅ Producción (después de validar tráfico)
 
Ejemplo:
Base de datos principal de tu empresa
Sabes que correrá 24/7 por 3 años mínimo
→ Usa Reserved Instance (3 años, All Upfront)

Standard vs. Convertible:

plaintext
Standard RI:
- Instance type: t2.small → NO PUEDES cambiar a t2.medium
- Mayor descuento (~60%)
- Usa si: Sabes exactamente qué necesitas
 
Convertible RI:
- Instance type: t2.small → PUEDES cambiar a t2.medium, m5.large, etc.
- Menor descuento (~54%)
- Usa si: Puede que necesites cambiar specs

3. Spot Instances

¿Qué es? Compras capacidad no utilizada de AWS. Hasta 90% descuento.

Catch: AWS puede terminar tu instance con 2 minutos de aviso si necesita la capacidad.

plaintext
Pricing:
On-Demand t2.medium: $0.0464/hora
Spot t2.medium: $0.0139/hora (70% descuento)
 
Cómo funciona:
1. Defines "maximum price" que estás dispuesto a pagar
2. Si Spot price ≤ tu max price → instance corre
3. Si Spot price > tu max price → AWS termina tu instance

¿Cuándo usar?

plaintext
✅ Workloads tolerantes a interrupciones
✅ Batch processing
✅ Data analysis
✅ Image processing
✅ CI/CD builds
 
❌ NO uses para:
❌ Databases
❌ Production web servers
❌ Cualquier cosa que no pueda ser interrumpida
 
Ejemplo CORRECTO:
Procesamiento de 10,000 imágenes
- Si instance termina a mitad → retoma después
- Ahorro: 70%
 
Ejemplo INCORRECTO:
Base de datos MySQL
- Si instance termina → data loss, downtime

Spot Fleet:

bash
# Lanza múltiples Spot Instances con fallback
 
aws ec2 request-spot-fleet \
  --spot-fleet-request-config '{
    "TargetCapacity": 10,
    "LaunchSpecifications": [
      {"InstanceType": "c5.large"},
      {"InstanceType": "c5.xlarge"},
      {"InstanceType": "m5.large"}
    ]
  }'
 
# AWS lanzará combinación óptima basado en precio

4. Dedicated Hosts

¿Qué es? Servidor físico completo dedicado para tu uso.

plaintext
Características:
- Hardware físico completo para ti
- Puedes ver sockets, cores, host ID
- Necesario para: Software licensing (Windows Server, SQL Server)
- Más caro que otras opciones
 
Pricing:
On-Demand: $2.000+/hora
Reserved: Hasta 70% descuento

¿Cuándo usar?

plaintext
✅ Compliance requirements (regulaciones que requieren hardware dedicado)
✅ Server-bound software licenses (SQL Server, Windows Server)
✅ Regulatory requirements que no permiten multi-tenancy
 
Ejemplo:
Tienes licencia de Windows Server que especifica:
"Máximo 2 sockets físicos"
 
Con EC2 normal: No puedes ver hardware físico
Con Dedicated Host: Puedes ver y controlar socket count

Dedicated Hosts vs. Dedicated Instances:

plaintext
Dedicated Instances:
- Hardware dedicado, pero no sabes cuál
- Más barato
- Usa si: Solo necesitas aislamiento
 
Dedicated Hosts:
- Hardware específico que puedes ver
- Más caro
- Usa si: Necesitas license management

5. Savings Plans

¿Qué es? Comprometes cierta cantidad de gasto por hora ($/hora) por 1 o 3 años.

plaintext
Ejemplo:
Te comprometes a gastar $10/hora en compute por 1 año
→ Obtienes descuento en TODO compute que uses
 
Tipos:
1. Compute Savings Plans: Aplica a EC2, Fargate, Lambda
2. EC2 Instance Savings Plans: Solo EC2, mayor descuento
 
Descuento: Hasta 72%
 
Flexibilidad:
- Puedes cambiar instance type, OS, region
- Más flexible que Reserved Instances

Comparación de Pricing Models

ModeloDescuentoCommitmentFlexibilityUso
On-Demand0%NoAltaDev/test, nuevas apps
Reserved40-75%1-3 añosBajaWorkloads estables 24/7
Spot50-90%NoBaja*Batch, procesamiento
DedicatedVaríaOpcionalBajaCompliance, licensing
Savings Plans40-72%1-3 añosAltaGeneral, múltiples services

*Baja porque puede ser terminada


Optimización de Costos

Estrategia Híbrida

La mayoría de empresas usan combinación de pricing models.

plaintext
Arquitectura ejemplo:
┌─────────────────────────────────────┐
│ Web Application                     │
├─────────────────────────────────────┤
│ Base capacity (siempre corre):      │
│ → 5 instances m5.large              │
│ → Reserved Instances (60% ahorro)   │
│                                     │
│ Variable capacity (picos):          │
│ → 0-20 instances m5.large           │
│ → On-Demand (flexibilidad)          │
│                                     │
│ Background jobs (batch):            │
│ → Spot Instances (80% ahorro)       │
└─────────────────────────────────────┘
 
Resultado:
- Base: Optimizado con Reserved
- Picos: Manejados con On-Demand
- Batch: Optimizado con Spot
- Ahorro total: ~65%

Herramientas de Optimización

1. Right-sizing:

bash
# AWS Compute Optimizer analiza uso y recomienda
 
Ejemplo:
Tienes: m5.large (2 vCPU, 8 GB RAM)
Uso real: 20% CPU, 3 GB RAM
Recomendación: Cambiar a t3.small (2 vCPU, 2 GB RAM)
Ahorro: $30/mes

2. Auto Scaling:

bash
# Escala automáticamente basado en demanda
 
Configuración:
Min instances: 2 (Reserved)
Max instances: 10
Scale up: Cuando CPU > 70%
Scale down: Cuando CPU < 30%
 
Resultado:
Pagas solo por lo que necesitas en cada momento

3. Scheduled scaling:

bash
# Para workloads predecibles
 
Ejemplo: Tienda online
Lun-Vie 9am-6pm: 10 instances
Lun-Vie 6pm-9am: 2 instances
Sab-Dom: 3 instances
 
Ahorro: 60% vs. correr 10 instances 24/7

Otros Conceptos Clave

User Data

Script que corre cuando instance arranca por primera vez.

bash
# Ejemplo: Instalar y arrancar web server automáticamente
 
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello from $(hostname -f)</h1>" > /var/www/html/index.html
bash
# Lanzar instance con User Data
aws ec2 run-instances \
  --image-id ami-0c55b159cbfafe1f0 \
  --instance-type t2.micro \
  --user-data file://setup.sh

Uso: Automatizar setup de instances.


Metadata

Información sobre la instance accesible desde dentro de la instance.

bash
# Desde dentro de la EC2 instance:
curl http://169.254.169.254/latest/meta-data/
 
# Obtener instance ID
curl http://169.254.169.254/latest/meta-data/instance-id
 
# Obtener public IP
curl http://169.254.169.254/latest/meta-data/public-ipv4
 
# Usar en scripts
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
aws ec2 create-tags --resources $INSTANCE_ID --tags Key=Name,Value=WebServer

Instance Lifecycle

plaintext
States de una instance:
 
pending → running → stopping → stopped → terminating → terminated
              ↑                  ↓
              └──────────────────┘
 
pending:     Arrancando
running:     Corriendo (pagas)
stopping:    Apagando
stopped:     Apagada (NO pagas compute, SÍ pagas EBS storage)
terminating: Siendo eliminada
terminated:  Eliminada (data perdida si no tenías EBS)

📝 Preparación para el Examen

Puntos Clave para Memorizar

Instance Families:

  • 📌 T: Burstable, dev/test, web servers
  • 📌 M: General purpose, balanced
  • 📌 C: Compute optimized, batch processing
  • 📌 R: Memory optimized, in-memory databases
  • 📌 I: Storage optimized, NoSQL databases
  • 📌 P/G: GPU, machine learning

Pricing Models:

  • 📌 On-Demand: No commitment, pagas por hora
  • 📌 Reserved: Commitment 1-3 años, hasta 75% descuento
  • 📌 Spot: Hasta 90% descuento, puede ser terminado
  • 📌 Dedicated: Hardware dedicado, compliance

Cuándo usar cada pricing:

  • 📌 On-Demand: Dev/test, apps nuevas
  • 📌 Reserved: Workloads estables 24/7
  • 📌 Spot: Batch processing, tolerante a interrupciones
  • 📌 Savings Plans: Flexibilidad + descuento

Preguntas de Práctica

Pregunta 1:

Una empresa necesita procesar 10,000 imágenes diariamente. El procesamiento puede ser interrumpido y retomado. ¿Qué pricing model es más cost-effective?

A) On-Demand B) Reserved Instances C) Spot Instances D) Dedicated Hosts

Success

Respuesta: C) Spot Instances

El procesamiento es tolerante a interrupciones (puede retomarse), perfecto para Spot. Ahorro de hasta 90% vs. On-Demand.

Pregunta 2:

Una aplicación requiere 16 GB de RAM y 4 vCPUs. ¿Qué familia de instances es más apropiada?

A) T (Burstable) B) C (Compute Optimized) C) R (Memory Optimized) D) M (General Purpose)

Success

Respuesta: D) M (General Purpose)

Ratio de 4 GB RAM por vCPU (16/4) es balanceado. M family es para workloads balanced. Si requiriera 32 GB RAM con 4 vCPUs (8:1 ratio), sería R family.


🎓 Resumen

Lo que aprendimos:

  1. EC2: Servidores virtuales en la nube con complete control
  2. Instance Families: T (burstable), M (balanced), C (compute), R (memory), I (storage), P (GPU)
  3. Pricing Models: On-Demand (flexible), Reserved (ahorro), Spot (mayor ahorro), Dedicated (compliance)
  4. Optimización: Usa combinación de pricing models para optimizar costos
plaintext
Decisión de Pricing:
 
¿Workload estable 24/7 por 1+ años?
  ├─ SÍ → Reserved Instance o Savings Plan
  └─ NO → ¿Es tolerante a interrupciones?
            ├─ SÍ → Spot Instance
            └─ NO → On-Demand
 
¿Necesitas compliance/licensing específico?
  └─ SÍ → Dedicated Host/Instance

⏭️ Próximo Post

En el Post #7 exploraremos Amazon S3 - Simple Storage Service:

  • Object storage en la nube
  • Storage classes (Standard, IA, Glacier)
  • Versioning, lifecycle policies
  • Security y encryption

📚 Recursos


Tags: #AWS #CloudPractitioner #EC2 #Compute #Pricing #InstanceTypes #Certification

Written by Jhonny Lorenzo

Researcher at TrautsLab

Related Articles

Recent Articles

Comments