Empezamos el Capítulo 24: Observabilidad, una de las habilidades que más distingue a un profesional que sabe operar en producción. Tener una aplicación funcionando no basta: necesitas saber qué está pasando dentro de ella en todo momento. ¿Va bien? ¿Hay errores? ¿Está saturada? Para eso existe la observabilidad, y en AWS la herramienta central es CloudWatch. Empezamos por sus tres pilares: logs, métricas y alarmas.
El problema: operar a ciegas
Imagina que tienes tu aplicación desplegada en producción. Los usuarios la usan. Y de repente... empieza a ir lenta, o algunos usuarios reportan errores. Sin observabilidad, estás a ciegas:
- ¿Cuántos errores se están produciendo? No lo sabes.
- ¿El servidor está saturado de CPU? Ni idea.
- ¿Qué pasó exactamente cuando falló? No hay rastro.
- ¿Cuándo empezó el problema? Imposible saberlo.
Operar así es como conducir con los ojos cerrados. La observabilidad son los instrumentos del salpicadero de tu aplicación: te dicen qué pasa, para que puedas reaccionar.
Qué es CloudWatch
CloudWatch es el servicio de observabilidad de AWS: recopila y muestra información sobre el funcionamiento de tus recursos y aplicaciones. Es donde miras para saber si todo va bien. Tiene varios componentes; en este subcapítulo vemos los tres fundamentales.
Pilar 1: Logs (registros)
Los logs son los mensajes de texto que tus aplicaciones y servicios van escribiendo sobre lo que hacen. Son el diario de tu aplicación:
[10:32:01] Usuario 4521 inició sesión [10:32:05] Procesando pedido #8890 [10:32:06] ERROR: no se pudo conectar a la base de datos [10:32:07] Reintentando conexión...
CloudWatch Logs recopila y guarda estos mensajes de forma centralizada. En vez de tener los logs dispersos en cada servidor (y perderlos si el servidor se apaga), llegan todos a CloudWatch, donde puedes buscarlos, filtrarlos y consultarlos.
Analogía: los logs son como el diario de a bordo de un barco: el capitán anota todo lo que ocurre («10:00 zarpamos», «12:00 tormenta a la vista», «12:30 reparada una vía de agua»). Si algo sale mal, revisas el diario para entender qué pasó y cuándo. CloudWatch Logs es el lugar donde se guardan todos esos diarios juntos, listos para consultar.
Los logs son tu primera herramienta cuando algo falla: vas a los logs del momento del fallo y lees qué pasó.
Pilar 2: Métricas
Las métricas son valores numéricos medidos a lo largo del tiempo: el uso de CPU, la cantidad de memoria, el número de peticiones por segundo, los errores por minuto... Mientras los logs son texto («qué pasó»), las métricas son números («cuánto»):
Métrica "Uso de CPU" del servidor a lo largo del día: 10:00 → 20 % 11:00 → 35 % 12:00 → 85 % ← ¡pico! 13:00 → 40 %
CloudWatch recopila automáticamente muchas métricas de tus recursos (CPU de las EC2, peticiones de un ALB, invocaciones de una Lambda...) y tú puedes enviar las tuyas propias (métricas de negocio, como «pedidos completados por minuto»). Con las métricas ves tendencias y detectas cuándo algo se sale de lo normal.
Analogía: las métricas son como los indicadores del salpicadero del coche: velocidad, revoluciones, temperatura del motor, nivel de gasolina. Son números que miras de un vistazo para saber si todo va bien. Si la aguja de la temperatura sube demasiado, sabes que hay un problema antes de que el motor se rompa.
Pilar 3: Alarmas
Aquí está la pieza que hace la observabilidad proactiva. No puedes estar mirando las métricas 24 horas al día. Una alarma vigila una métrica por ti y te avisa automáticamente cuando cruza un umbral que tú defines:
Alarma: "si el uso de CPU supera el 80 % durante 5 minutos → AVISA" Alarma: "si los errores superan 10 por minuto → AVISA" Alarma: "si la base de datos se queda sin espacio → AVISA"
Cuando se dispara una alarma, puede notificarte (por email, Slack, etc., usando SNS, recuerda el subcapítulo 15.2) o incluso disparar una acción automática (como añadir más servidores con un Auto Scaling Group, recuerda el subcapítulo 13.3).
Analogía: una alarma es como el testigo rojo del salpicadero que se enciende cuando la temperatura del motor es peligrosa, acompañado de un pitido. No tienes que mirar la aguja constantemente: el coche te avisa cuando algo importante requiere tu atención.
Cómo encajan los tres juntos
Los tres pilares trabajan en equipo para que operes con los ojos abiertos:
MÉTRICAS → te dicen QUÉ está pasando (números, tendencias) ALARMAS → te AVISAN cuando una métrica se sale de lo normal LOGS → te dicen POR QUÉ pasó (el detalle, para investigar)
El flujo típico de un incidente: salta una alarma («¡errores altos!»), miras las métricas para ver el alcance y cuándo empezó, y vas a los logs de ese momento para entender la causa exacta y arreglarlo.
Ejemplo del mundo real: una tienda online tiene una alarma sobre la métrica «errores HTTP 500». Un domingo por la noche, un cambio introduce un bug y los errores se disparan. La alarma salta y notifica al equipo de guardia por Slack en un minuto. El ingeniero mira las métricas: los errores empezaron justo tras el último despliegue, a las 22:14. Va a los logs de las 22:14 y ve: «ERROR: campo 'precio' nulo en el carrito». En 10 minutos identifica y revierte el cambio. Sin observabilidad, se habría enterado a la mañana siguiente por las quejas de clientes y la caída de ventas.
Lo que debes recordar
- Operar sin observabilidad es conducir con los ojos cerrados; necesitas saber qué pasa dentro de tu aplicación en todo momento.
- CloudWatch es el servicio de observabilidad de AWS, con tres pilares fundamentales:
- Logs: los mensajes de texto que escriben tus apps («qué pasó»), recopilados y consultables de forma centralizada. Son el diario de a bordo.
- Métricas: valores numéricos en el tiempo («cuánto»: CPU, peticiones, errores...). Son los indicadores del salpicadero; revelan tendencias.
- Alarmas: vigilan una métrica y te avisan automáticamente (o disparan acciones) cuando cruza un umbral. Son el testigo rojo que te avisa sin tener que mirar.
- Trabajan en equipo: las alarmas avisan, las métricas muestran el alcance, los logs explican la causa.
En el siguiente subcapítulo veremos cómo juntar todas estas métricas en paneles visuales con CloudWatch Dashboards.
Cloud, AWS & Terraform — De cero a experto
Capítulo 1 · Qué es el cloud computing
- 1.1 El modelo cliente-servidor tradicional
- 1.2 Problemas que venía a resolver la nube
- 1.3 On-premise vs cloud vs híbrido
- 1.4 Los tres modelos de servicio: IaaS, PaaS, SaaS
- 1.5 Los cinco pilares del cloud (según NIST)
- 1.6 Ventajas reales: elasticidad, pago por uso, disponibilidad global
Capítulo 2 · El mercado cloud y los grandes proveedores
- 2.1 AWS, Azure y GCP: diferencias y cuotas de mercado
- 2.2 Por qué aprender AWS primero
- 2.3 Conceptos que son universales entre proveedores
Capítulo 3 · Regiones, zonas de disponibilidad y edge
- 3.1 Qué es una región AWS y cómo elegirla
- 3.2 Availability Zones: alta disponibilidad desde el diseño
- 3.3 Edge locations y CloudFront
- 3.4 Latencia, resiliencia y soberanía de datos
Capítulo 4 · Cómputo: EC2
- 4.1 Instancias: tipos, familias y cuándo elegir cada una
- 4.2 AMIs, key pairs y Security Groups
- 4.3 Ciclo de vida de una instancia
- 4.4 Elastic IPs y Placement Groups
- 4.5 Savings Plans vs Reserved vs On-Demand vs Spot
Capítulo 5 · Almacenamiento: S3
- 5.1 Buckets, objetos y claves
- 5.2 Clases de almacenamiento (Standard, IA, Glacier…)
- 5.3 Versionado y ciclo de vida de objetos
- 5.4 Políticas de bucket y ACLs
- 5.5 Hosting de sitios web estáticos
Capítulo 6 · Redes: VPC
- 6.1 Qué es una VPC y por qué la necesitas
- 6.2 Subredes públicas y privadas
- 6.3 Internet Gateway y NAT Gateway
- 6.4 Route Tables y Network ACLs
- 6.5 VPC Peering y endpoints
Capítulo 7 · Identidad y acceso: IAM
- 7.1 Usuarios, grupos, roles y políticas
- 7.2 El principio de mínimo privilegio
- 7.3 Políticas basadas en identidad vs en recurso
- 7.4 MFA y credenciales temporales (STS)
- 7.5 Buenas prácticas de seguridad IAM
Capítulo 8 · Bases de datos gestionadas
- 8.1 RDS: motores, Multi-AZ y réplicas de lectura
- 8.2 Aurora y sus ventajas sobre RDS vanilla
- 8.3 DynamoDB: modelo clave-valor / documentos
- 8.4 ElastiCache para caché en memoria
- 8.5 Cuándo usar cada tipo de base de datos
Capítulo 9 · Por qué Infraestructura como Código
- 9.1 Problemas del aprovisionamiento manual
- 9.2 IaC declarativo vs imperativo
- 9.3 Terraform vs CloudFormation vs Pulumi vs CDK
- 9.4 El ciclo plan → apply → destroy
Capítulo 10 · HCL: el lenguaje de Terraform
- 10.1 Bloques resource, variable, output, locals
- 10.2 Tipos de datos: string, number, bool, list, map, object
- 10.3 Expresiones, referencias y funciones built-in
- 10.4 Condicionales y bucles (count, for_each, for)
Capítulo 11 · Providers y estado
- 11.1 Cómo funciona el provider de AWS
- 11.2 El fichero terraform.tfstate y su importancia
- 11.3 State local vs state remoto (S3 + DynamoDB)
- 11.4 Comandos esenciales: init, plan, apply, destroy, fmt, validate
Capítulo 12 · Tu primera infraestructura real en Terraform
- 12.1 Crear una VPC con subredes desde cero
- 12.2 Levantar una instancia EC2 pública
- 12.3 Asociar un Security Group y una Elastic IP
- 12.4 Outputs y referencias entre recursos
- 12.5 Flujo de trabajo en equipo: PR review de planes
Capítulo 13 · Balanceo de carga y autoescalado
- 13.1 Application Load Balancer vs Network Load Balancer
- 13.2 Target Groups, listeners y reglas
- 13.3 Auto Scaling Groups: políticas y métricas
- 13.4 Warm pools y lifecycle hooks
Capítulo 14 · Serverless con Lambda
- 14.1 El modelo de ejecución de Lambda
- 14.2 Triggers: API Gateway, S3, DynamoDB Streams, SQS
- 14.3 Gestión de dependencias y capas (Layers)
- 14.4 Cold starts y estrategias para reducirlos
- 14.5 Límites y antipatrones
Capítulo 15 · Mensajería y eventos
- 15.1 SQS: colas estándar vs FIFO, DLQ
- 15.2 SNS: topics, suscripciones, fan-out
- 15.3 EventBridge: event buses y reglas
- 15.4 Patrones: pub/sub, desacoplamiento, saga
Capítulo 16 · Entrega de contenido y DNS
- 16.1 Route 53: tipos de registros y routing policies
- 16.2 CloudFront: distribuciones, cachés y origins
- 16.3 ACM: certificados SSL/TLS gratuitos
- 16.4 WAF integrado con CloudFront
Capítulo 17 · Contenedores en AWS
- 17.1 Docker: repaso exprés de conceptos clave
- 17.2 ECR: registro privado de imágenes
- 17.3 ECS: task definitions, services, Fargate vs EC2
- 17.4 EKS: cuándo Kubernetes y cuándo no
Capítulo 18 · Módulos: reutilización y composición
- 18.1 Anatomía de un módulo Terraform
- 18.2 Variables de entrada, outputs y dependencias
- 18.3 Módulos locales vs módulos del Terraform Registry
- 18.4 Versionado de módulos con Git tags
- 18.5 Diseño de módulos genéricos vs específicos de dominio
Capítulo 19 · Workspaces y gestión de entornos
- 19.1 Workspaces de Terraform: casos de uso y limitaciones
- 19.2 Estrategia de directorios por entorno (dev/stg/prod)
- 19.3 Terragrunt: DRY para configuraciones de entorno
- 19.4 Variables de entorno y archivos .tfvars
Capítulo 20 · Backends remotos y locking
- 20.1 Configurar S3 + DynamoDB como backend
- 20.2 State locking: evitar corrupción en equipo
- 20.3 Migración de estado entre backends
- 20.4 terraform import: traer recursos existentes al estado
Capítulo 21 · Testing de infraestructura
- 21.1 Terraform validate y fmt en CI
- 21.2 Checkov y tfsec: análisis de seguridad estático
- 21.3 Terratest: tests de integración en Go
- 21.4 Contract testing entre módulos
Capítulo 22 · Terraform en CI/CD
- 22.1 Pipeline básico: lint → plan → apply en GitHub Actions
- 22.2 Atlantis: GitOps para Terraform
- 22.3 Terraform Cloud / HCP Terraform
- 22.4 Drift detection y reconciliación automática
Capítulo 23 · Seguridad en profundidad
- 23.1 AWS Organizations y Service Control Policies
- 23.2 AWS Config: compliance continuo
- 23.3 GuardDuty: detección de amenazas
- 23.4 Security Hub: visión centralizada
- 23.5 KMS: gestión de claves y rotación
- 23.6 Secrets Manager vs Parameter Store
Capítulo 24 · Observabilidad: logs, métricas y trazas
- 24.1 CloudWatch Logs, métricas y alarmas
- 24.2 CloudWatch Dashboards y Contributor Insights
- 24.3 X-Ray: trazado distribuido
- 24.4 OpenTelemetry en AWS
- 24.5 Managed Grafana y Managed Prometheus
Capítulo 25 · Optimización de costes
- 25.1 AWS Cost Explorer y presupuestos con alertas
- 25.2 Trusted Advisor y Compute Optimizer
- 25.3 Rightsizing: cómo detectar sobredimensionamiento
- 25.4 Savings Plans vs Reserved Instances: decisión estratégica
- 25.5 FinOps: cultura y procesos para controlar el gasto
Capítulo 26 · Alta disponibilidad y disaster recovery
- 26.1 RTO y RPO: definir los objetivos
- 26.2 Estrategias: backup/restore, pilot light, warm standby, multi-site
- 26.3 Route 53 health checks y failover automático
- 26.4 AWS Backup: política centralizada de copias
Capítulo 27 · Well-Architected Framework de AWS
- 27.1 Los seis pilares: excelencia operacional, seguridad, fiabilidad, eficiencia de rendimiento, optimización de costes, sostenibilidad
- 27.2 Well-Architected Tool: revisiones formales
- 27.3 Cómo aplicar el framework en decisiones de diseño
Capítulo 28 · Arquitecturas serverless a escala
- 28.1 Event-driven architecture con Lambda + EventBridge
- 28.2 Saga pattern para transacciones distribuidas
- 28.3 Step Functions: orquestación de workflows complejos
- 28.4 Lambda@Edge y CloudFront Functions
Capítulo 29 · Plataformas de datos en AWS
- 29.1 Data Lake con S3, Glue y Athena
- 29.2 Kinesis Data Streams y Firehose para streaming
- 29.3 Redshift: data warehousing a escala
- 29.4 Lake Formation: gobierno del dato
Capítulo 30 · Multi-cuenta y landing zones
- 30.1 Por qué separar workloads en cuentas distintas
- 30.2 AWS Control Tower y Account Factory
- 30.3 Gestión centralizada de logs y seguridad
- 30.4 Terraform a escala multi-cuenta con módulos compartidos
Capítulo 31 · Platform Engineering e Internal Developer Platform
- 31.1 Golden paths y abstracciones sobre Terraform
- 31.2 Service Catalog de AWS
- 31.3 Backstage como portal de desarrolladores
- 31.4 Módulos Terraform como producto interno
Capítulo 32 · Certificaciones AWS relevantes
- 32.1 Cloud Practitioner: ¿vale la pena?
- 32.2 Solutions Architect Associate → Professional
- 32.3 DevOps Engineer Professional
- 32.4 Specialty: Security, Database, Networking
- 32.5 HashiCorp Terraform Associate
Capítulo 33 · Proyectos para consolidar lo aprendido
- 33.1 Proyecto 1: blog serverless (S3 + CloudFront + Lambda + DynamoDB)
- 33.2 Proyecto 2: API REST con ECS Fargate + RDS + ALB
- 33.3 Proyecto 3: plataforma de datos con Glue + Athena + Redshift
- 33.4 Proyecto 4: landing zone multi-cuenta con Terraform y Control Tower
