Cerramos el Capítulo 30 juntando los dos grandes hilos del libro: por un lado, Terraform (la infraestructura como código, que dominamos en las Partes II-V) y, por otro, la estructura multi-cuenta que acabamos de ver. La pregunta natural es: si gestionamos toda nuestra infraestructura con Terraform, y ahora tenemos muchas cuentas, ¿cómo aplicamos Terraform de forma ordenada a toda esa estructura? Aquí es donde todo lo aprendido converge en una práctica de nivel experto.
El reto: Terraform sobre decenas de cuentas
Hasta ahora, implícitamente, hemos usado Terraform sobre una cuenta. Pero una empresa con la estructura del subcapítulo 30.1 tiene decenas de cuentas (por entorno, equipo, proyecto). Gestionar la infraestructura de todas ellas con Terraform, de forma coherente y sin caos, requiere aplicar bien las técnicas que ya conoces. La buena noticia: ya tienes todas las piezas, solo hay que combinarlas a escala.
El reto: aplicar Terraform de forma ordenada a: cuenta dev-equipoA cuenta prod-equipoA cuenta dev-equipoB cuenta prod-equipoB ... (decenas de cuentas) → sin duplicar código, sin mezclar estados, con consistencia
Las piezas que ya conoces (y que ahora encajan)
Lo bonito de este subcapítulo es que no hay nada nuevo que aprender: es la culminación de técnicas que ya dominas. Repasémoslas en el contexto multi-cuenta:
- Módulos: define una vez, reutiliza en todas las cuentas
Recuerda los módulos (Capítulo 18): bloques reutilizables de infraestructura. En un entorno multi-cuenta son esenciales: defines tu infraestructura estándar (una red, una aplicación...) una vez como módulo, y la reutilizas en todas las cuentas que la necesiten. Esto garantiza consistencia (todas las cuentas usan la misma definición) y evita duplicar código.
Un módulo "red-estándar" (definido una vez) → se usa en la cuenta dev-A, prod-A, dev-B, prod-B... → todas las cuentas tienen una red consistente, sin repetir código
- Estado separado por cuenta: aislamiento
Recuerda la importancia del estado (Capítulo 11) y los backends remotos (Capítulo 20). En multi-cuenta, cada cuenta (o cada combinación cuenta+entorno) debe tener su propio estado separado, igual que separábamos entornos (Capítulo 19). Así, gestionar una cuenta no afecta a las demás: el aislamiento de la infraestructura como código refleja el aislamiento de las cuentas.
Estado separado por cuenta: estado de dev-A (independiente) estado de prod-A (independiente) → aplicar cambios en una cuenta NO toca el estado de otra
- Gestión de entornos: la estructura que ya vimos
Recuerda las técnicas para gestionar múltiples entornos (Capítulo 19): directorios por entorno, variables por entorno (.tfvars), y herramientas como Terragrunt (subcapítulo 19.3) para mantener el código DRY. Estas mismas técnicas se aplican ahora a múltiples cuentas: cada cuenta es, en cierto modo, otro «entorno» que configurar con las mismas variables-pattern y estructura ordenada.
- CI/CD: despliegues controlados a cada cuenta
Recuerda el CI/CD para Terraform (Capítulo 22): pipelines que aplican los cambios de forma controlada, con revisión y plan antes de apply. A escala multi-cuenta, los pipelines despliegan a cada cuenta de forma automatizada y segura, con los controles adecuados (especialmente estrictos para las cuentas de producción).
La idea clave: las mismas prácticas, aplicadas con disciplina a escala
El mensaje central: gestionar Terraform en multi-cuenta no requiere magia nueva, sino aplicar con disciplina las buenas prácticas que ya conoces, a mayor escala. Módulos para reutilizar, estados separados para aislar, estructura de entornos para organizar, y CI/CD para desplegar con control.
Multi-cuenta con Terraform =
Módulos (Cap. 18) → reutilización y consistencia
+ Estado separado (Cap. 20) → aislamiento por cuenta
+ Gestión de entornos (Cap. 19) → organización ordenada
+ CI/CD (Cap. 22) → despliegues controlados
──────────────────────────────────────────────
= infraestructura como código a escala empresarialAnalogía: gestionar Terraform en multi-cuenta es como dirigir una cadena de restaurantes con recetas estandarizadas. No reinventas la cocina en cada local: tienes recetas únicas (módulos) que cada restaurante (cuenta) sigue igual, garantizando la misma calidad en todos. Cada restaurante lleva su propia caja y cocina (estado separado), así que un problema en uno no afecta a otro. Tienes un manual de operaciones común (estructura de entornos) y un proceso estándar de apertura de locales nuevos (CI/CD). El secreto no es una técnica nueva, sino aplicar las mismas buenas prácticas con disciplina en todos los locales.
Cómo encaja con Control Tower
Terraform y Control Tower (subcapítulo 30.2) trabajan juntos, en niveles distintos:
- Control Tower gobierna la estructura organizativa: crea las cuentas, aplica los guardrails, monta la landing zone (los «cimientos» y las «normas comunes»).
- Terraform despliega la infraestructura concreta dentro de cada cuenta: las redes, los servidores, las aplicaciones (lo que «construyes encima» de los cimientos).
Control Tower → prepara y gobierna las CUENTAS (la landing zone)
│
▼
Terraform → construye la INFRAESTRUCTURA dentro de cada cuentaAmbos se complementan: uno prepara el terreno multi-cuenta, el otro construye sobre él de forma reproducible.
Ejemplo del mundo real: una empresa con 30 cuentas gestiona toda su infraestructura con Terraform aplicando las prácticas que conoce. Tienen una biblioteca de módulos (red estándar, aplicación estándar, base de datos estándar) versionados (recuerda el subcapítulo 18.4), que todos los equipos reutilizan: así, la red de la cuenta de un equipo es idéntica en estructura a la de otro, sin duplicar código. Cada cuenta+entorno tiene su estado separado en backends remotos (Capítulo 20), de modo que desplegar en
dev-equipoAjamás puede afectar aprod-equipoB. Usan Terragrunt (subcapítulo 19.3) para mantener todo DRY across cuentas, y pipelines de CI/CD (Capítulo 22) que aplican los cambios con revisión yplanprevio, con aprobaciones extra para producción. El resultado: gestionan 30 cuentas con la misma consistencia, seguridad y control que tendrían con una, porque aplicaron las buenas prácticas con disciplina a escala. Eso es infraestructura como código de nivel experto.
Lo que debes recordar
- Gestionar Terraform sobre decenas de cuentas (multi-cuenta) requiere aplicar con disciplina las técnicas que ya conoces, no aprender magia nueva. Todas las piezas ya las tienes.
- Las piezas que encajan:
- Módulos (Cap. 18): define la infraestructura una vez y reutilízala en todas las cuentas → consistencia sin duplicar código.
- Estado separado por cuenta (Caps. 11, 20): cada cuenta con su propio estado → aislamiento (cambiar una no afecta a otra).
- Gestión de entornos (Cap. 19): directorios,
.tfvars, Terragrunt → organización ordenada de muchas cuentas. - CI/CD (Cap. 22): pipelines con revisión y
plan→ despliegues controlados a cada cuenta (estrictos en producción).
- Como una cadena de restaurantes con recetas estandarizadas: mismas recetas (módulos), cocina propia por local (estado separado), manual común (entornos), proceso de apertura estándar (CI/CD).
- Control Tower (gobierna las cuentas/landing zone) y Terraform (construye la infraestructura dentro de cada cuenta) se complementan en niveles distintos.
¡Has completado el Capítulo 30 y dominas la organización multi-cuenta y las landing zones! En el Capítulo 31, que cierra la Parte VII, veremos una disciplina muy actual que lleva todo esto un paso más allá: el Platform Engineering y las plataformas internas para desarrolladores.
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
