Automatización y DevOps en AWS
Introducción
La transformación DevOps no es solo una cuestión de herramientas: es un cambio de cultura y de metodología. Se basa en tres pilares: la automatización, la colaboración y la fiabilidad continua (observabilidad, cumplimiento de los SLO y capacidad de rollback). En AWS, estos principios cobran vida gracias a un rico ecosistema: infraestructura como código, pipelines de CI/CD, orquestación, observabilidad y despliegue progresivo.
Este capítulo explora cómo construir un ciclo completo de automatización en AWS, desde la creación de infraestructuras con Terraform, CloudFormation o el CDK, hasta los pipelines de despliegue y las estrategias avanzadas de puesta en producción.
Infraestructura como código: Terraform, CloudFormation y AWS CDK
1. El principio de la infraestructura como código (IaC)
La Infrastructure as Code (IaC) consiste en describir la infraestructura en forma de código, en lugar de configurarla manualmente en la consola de AWS. Este paradigma aporta varias ventajas importantes:
-
Trazabilidad: cada cambio se versiona en Git.
-
Reproducibilidad: la misma configuración se puede implementar en varios entornos.
-
Automatización: los despliegues se vuelven rápidos, coherentes y auditables.
En lugar de hacer un "clic" en la consola, se escriben archivos que describen los recursos que se van a crear: VPC, subredes, roles de IAM, S3, EC2, EKS… Estos archivos se ejecutan mediante herramientas especializadas, lo que garantiza que el estado real se corresponda con la configuración declarada.

Ciclo de gestión de IaC (esquema conceptual, ilustrado aquí con la terminología de Terraform): código → plan → aplicar → detección de desviaciones
2. AWS CloudFormation: la solución nativa
AWS CloudFormation es el servicio nativo de IaC de AWS. Permite describir "stacks" mediante archivos YAML o JSON.
Un ejemplo sencillo de creación de un bucket de S3:
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName:...CI/CD con AWS CodePipeline, GitOps y ArgoCD
1. El proceso de CI/CD en AWS
La integración continua (CI) y la implementación continua (CD) son fundamentales para DevOps. AWS ofrece una suite completa e integrada:
-
CodeCommit: repositorio Git gestionado,
-
CodeBuild: ejecución de compilaciones, pruebas y empaquetado,
-
CodeDeploy: implementación automática en EC2, ECS y Lambda,
-
CodePipeline: orquestación de los pasos.
Un pipeline típico en YAML:
Stages:
- Name: Source
Actions:
- Name: Checkout
ActionTypeId:
Category: Source
Owner: AWS
Provider: CodeCommit
- Name: Build
Actions:
- Name: RunBuild
ActionTypeId:
Category: Build
Owner: AWS
Provider: CodeBuild

Cadena de CI/CD: Commit → Build → Test → Deploy → Monitor
Buena práctica
Configura...
Gestión de las puestas en producción: Blue/Green, Canary y Feature Flags
1. Despliegue Blue/Green
El despliegue Blue/Green consiste en mantener dos entornos idénticos:
-
Blue: versión en producción,
-
Green: nueva versión.
Una vez validada, la conmutación se realiza a través del Load Balancer (ALB) o Route 53. En caso de incidencia, el rollback reversión es inmediato.
Ejemplo concreto
Un servicio ECS implementa una nueva imagen de Docker en la definición de tarea «green». Una vez superadas las pruebas, CodeDeploy redirige el tráfico de "blue" a "green".
Ventaja
Sin tiempo de inactividad. El usuario nunca percibe la transición.

Despliegue blue/green: dos entornos activos alternados
2. Despliegue Canary
El despliegue Canary consiste en exponer la nueva versión a un pequeño porcentaje de usuarios antes de su generalización. Se habla de "muestra de control", tal y como se hace en el sector.
En AWS, se puede gestionar este enrutamiento progresivo con:
-
CodeDeploy (ECS/Lambda),
-
App Mesh o API Gateway (enrutamiento ponderado),
-
Políticas de enrutamiento ponderado de Route 53.
Ejemplo concreto
Un API recibe el 5 % del tráfico en la nueva versión (v2). Si no se detecta ninguna alerta en un plazo de 15 minutos, se va aumentando progresivamente hasta el 100 %.
Buenas prácticas
Definir criterios objetivos de éxito:...