Fundamentos cloud
"Si tu servidor cae a las 3 AM de un domingo, es problema tuyo. Si el datacenter de AWS cae, es problema de muchos — y AWS tiene un equipo entero que se despierta a arreglarlo."
Qué vas a aprender en este capítulo
Antes de profundizar en herramientas, necesitamos entender qué es la nube, los modelos de servicio, cómo se organizan los proveedores globalmente, y los servicios fundamentales que vas a usar todo el tiempo.
1.1 Modelos de servicio cloud
💡 Intuición
Pensá en la pizza:
- On-premise: la hacés vos (compras ingredientes, masa, horno, cocinás).
- IaaS (Infrastructure as a Service): te dan el horno y los ingredientes; vos cocinás.
- PaaS (Platform as a Service): te dan la pizza armada lista para hornear; solo la metés al horno.
- SaaS (Software as a Service): pedís pizza por delivery, llega lista.
- FaaS (Function as a Service): no querés pizza completa — solo querés un trozo, lo pagás por trozo.
📐 Fundamento
| Modelo | Vos gestionás | Proveedor gestiona | Ejemplos |
|---|---|---|---|
| On-premise | Todo | Nada | Tu propio datacenter |
| IaaS | OS, runtime, app, datos | Hardware, virtualización, networking | EC2, Compute Engine, DigitalOcean Droplets |
| PaaS | App, datos | Hardware, OS, runtime, escalado | Heroku, Vercel, App Engine |
| SaaS | Solo configuración | Todo | Gmail, Slack, Salesforce |
| FaaS / Serverless | Solo código de funciones | Todo lo demás, escalado a 0 | Lambda, Cloud Functions |
Trade-offs:
Más control ←─────────────────────────────→ Menos control
Más responsabilidad Menos responsabilidad
Más costo de operación Más costo por unidad
On-premise → IaaS → PaaS → FaaS → SaaS
Modelo de responsabilidad compartida:
| Capa | On-prem | IaaS | PaaS | SaaS |
|---|---|---|---|---|
| Datos del usuario | TÚ | TÚ | TÚ | TÚ |
| Configuración de seguridad | TÚ | TÚ | TÚ | TÚ |
| Aplicación | TÚ | TÚ | TÚ | Proveedor |
| Runtime | TÚ | TÚ | Proveedor | Proveedor |
| OS | TÚ | TÚ | Proveedor | Proveedor |
| Virtualización | TÚ | Proveedor | Proveedor | Proveedor |
| Servidores físicos | TÚ | Proveedor | Proveedor | Proveedor |
| Red, datacenter | TÚ | Proveedor | Proveedor | Proveedor |
Importante: incluso en SaaS, vos sos responsable de la seguridad de tus datos (configuración de permisos, contraseñas, etc.).
1.2 Arquitectura global
📐 Fundamento
Conceptos:
- Region: zona geográfica (ej:
us-east-1Virginia,sa-east-1São Paulo). Cada región es independiente. - Availability Zone (AZ): datacenter dentro de una región (ej:
us-east-1a,us-east-1b). Cada región tiene 2-6 AZs aisladas. - Edge location: nodos de CDN, cerca de los usuarios.
Mundo
└── Region (us-east-1, Virginia)
├── AZ us-east-1a (datacenter A)
├── AZ us-east-1b (datacenter B)
└── AZ us-east-1c (datacenter C)
↑ aisladas eléctricamente y de red
↑ una falla en una AZ no afecta a las otras
¿Por qué importa?
- Alta disponibilidad: distribuir la app entre múltiples AZs. Si una AZ se cae, la app sigue funcionando.
- Latencia: elegir region cercana a usuarios (clientes en El Salvador →
us-east-1osa-east-1). - Compliance: algunos países requieren que los datos no salgan del país (Argentina, Brasil, EU).
- Costo: el precio varía por región.
us-east-1suele ser la más barata.
Servicios regionales vs globales:
- Globales: IAM, CloudFront (CDN), Route 53 (DNS).
- Regionales: EC2, RDS, S3 (los buckets son regionales aunque accesibles globalmente).
- AZ-locales: EBS volumes, instancias EC2 individuales.
1.3 Servicios fundamentales de AWS
📐 Fundamento
Compute:
- EC2 (Elastic Compute Cloud): VMs. Es IaaS.
- Lambda: funciones serverless.
- ECS / EKS: orquestación de contenedores (EKS = Kubernetes managed).
- Elastic Beanstalk: PaaS estilo Heroku.
Storage:
- S3 (Simple Storage Service): object storage. Para archivos, backups, sitios estáticos.
- EBS (Elastic Block Store): volúmenes de disco para EC2.
- EFS (Elastic File System): NFS compartido.
Bases de datos:
- RDS: PostgreSQL/MySQL/etc. managed.
- Aurora: versión optimizada de RDS, más cara pero mejor.
- DynamoDB: NoSQL serverless.
- ElastiCache: Redis/Memcached managed.
Networking:
- VPC (Virtual Private Cloud): tu propia red privada en AWS.
- Route 53: DNS.
- CloudFront: CDN.
- API Gateway: gateway para APIs.
Identity:
- IAM (Identity and Access Management): usuarios, roles, permisos.
Ejemplo práctico — desplegar una API en EC2:
# 1. Crear instancia EC2 con AWS CLI
aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--instance-type t3.micro \
--key-name mi-key \
--security-group-ids sg-12345 \
--subnet-id subnet-67890
# 2. Conectarse por SSH
ssh -i mi-key.pem ubuntu@ec2-x-x-x-x.compute.amazonaws.com
# 3. Instalar y ejecutar tu app
sudo apt update && sudo apt install python3-pip
pip3 install fastapi uvicorn
uvicorn main:app --host 0.0.0.0 --port 80
S3 — almacenar archivos:
import boto3
s3 = boto3.client('s3')
# Subir archivo
s3.upload_file('factura_123.pdf', 'la-esquina-facturas', 'facturas/2026/factura_123.pdf')
# Generar URL temporal (presigned URL) para descarga
url = s3.generate_presigned_url(
'get_object',
Params={'Bucket': 'la-esquina-facturas', 'Key': 'facturas/2026/factura_123.pdf'},
ExpiresIn=3600 # válida por 1 hora
)
print(url) # https://la-esquina-facturas.s3.amazonaws.com/...?X-Amz-Signature=...
Hosting estático con S3 + CloudFront:
# Crear bucket público para website
aws s3 mb s3://la-esquina-frontend
aws s3 website s3://la-esquina-frontend/ --index-document index.html
# Subir SPA buildeada
aws s3 sync ./dist/ s3://la-esquina-frontend/
# Crear CloudFront distribution para CDN + HTTPS
# (más fácil con Terraform o Console)
1.4 IAM — el servicio más importante
💡 Intuición
IAM controla quién puede hacer qué en tu cuenta AWS. Es la primera línea de defensa. Una IAM mal configurada es la causa #1 de brechas de seguridad en cloud.
Regla de oro: principio de mínimo privilegio. Cada usuario/aplicación tiene SOLO los permisos que necesita, nada más.
📐 Fundamento
Componentes de IAM:
- Users: personas o aplicaciones con credenciales propias.
- Groups: colecciones de users (ej: "developers", "admins").
- Roles: identidades temporales (asumibles por usuarios o servicios).
- Policies: documentos JSON que definen permisos.
Ejemplo de política IAM:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermitirLecturaBucketFacturas",
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::la-esquina-facturas",
"arn:aws:s3:::la-esquina-facturas/*"
]
},
{
"Sid": "DenegarBorrar",
"Effect": "Deny",
"Action": "s3:DeleteObject",
"Resource": "*"
}
]
}
Roles para EC2 (mejor que usar credenciales hardcodeadas):
# MAL — credenciales en código
s3 = boto3.client('s3',
aws_access_key_id='AKIA...',
aws_secret_access_key='...')
# BIEN — la EC2 tiene un rol asignado, boto3 lo detecta automáticamente
s3 = boto3.client('s3') # usa el rol de la instancia
Errores comunes:
- Usar la cuenta root para tareas diarias (crear usuarios IAM separados).
- Subir credenciales a Git (usar
git-secretspara detectarlas). - Permisos
*:*en vez de explícitos. - No habilitar MFA en cuenta root y admins.
1.5 Ejercicios
✏️ Ejercicio 1.1 — Modelo cloud apropiado
Para cada caso, elegí el modelo apropiado (IaaS, PaaS, SaaS, FaaS) y justificá:
a. Necesitás mandar emails transaccionales (confirmaciones, resets de contraseña). b. Tenés una app legacy en PHP que necesita un kernel Linux específico. c. Querés un endpoint que se ejecute cuando se sube una imagen a S3, para generar thumbnails. d. Necesitás un CRM para tu equipo de ventas.
Solución
a. SaaS — usar SendGrid, AWS SES, Resend. No tiene sentido construir ni gestionar un servidor de email propio (deliverability, listas de spam, IPs bloqueadas...).
b. IaaS — necesitás control total del OS. EC2 o equivalente.
c. FaaS / Serverless — Lambda triggered por S3 event. Solo se ejecuta cuando hay un upload, no pagás cuando no hay actividad.
d. SaaS — usar Salesforce, HubSpot, Pipedrive. Construir un CRM desde cero es absurdo cuando hay opciones excelentes existentes.
1.6 Para profundizar
- AWS Documentation (docs.aws.amazon.com).
- AWS Well-Architected Framework.
- AWS Free Tier — 12 meses de servicios gratis para aprender.
- Siguiente: Infrastructure as Code con Terraform.
Definiciones nuevas: cloud computing, IaaS, PaaS, SaaS, FaaS, modelo de responsabilidad compartida, region, availability zone, edge location, EC2, S3, RDS, VPC, IAM, role, policy, principio de mínimo privilegio, presigned URL.