AWS CodeDeploy

Servicio que automatiza el despliegue de aplicaciones en EC2, Lambda y ECS, logrando releases seguros mediante actualizaciones rolling y despliegues blue/green

Descripción general

AWS CodeDeploy es un servicio completamente administrado que automatiza el despliegue de aplicaciones en instancias EC2, servidores on-premises, funciones Lambda y servicios ECS. Define scripts de hook en cada fase del despliegue (BeforeInstall, AfterInstall, ApplicationStart, etc.) mediante el archivo AppSpec, permitiendo un control detallado del proceso de despliegue. Soporta estrategias de despliegue rolling, blue/green y canary, minimizando el tiempo de inactividad y permitiendo rollback automático en caso de fallo.

Diseño del control de despliegue con archivo AppSpec y hooks de ciclo de vida

El archivo AppSpec (appspec.yml) es el archivo de configuración central que define el comportamiento del despliegue en CodeDeploy. Para despliegues EC2/on-premises, especifica la sección files (qué archivos copiar y dónde), la sección permissions (propietario y permisos de los archivos) y la sección hooks (scripts a ejecutar en cada fase del ciclo de vida). Los hooks del ciclo de vida se ejecutan en orden: BeforeInstall, AfterInstall, ApplicationStart, ValidateService, permitiendo ejecutar scripts personalizados en cada fase como detener servicios, ejecutar migraciones de base de datos, iniciar aplicaciones y verificar health checks. Para despliegues Lambda, se especifican las versiones de la función y la configuración de cambio de tráfico. Para despliegues ECS, se definen la definición de tarea, el servicio y la configuración del balanceador de carga. La separación de la lógica de despliegue del código de la aplicación permite que el equipo de operaciones gestione las estrategias de despliegue de forma independiente.

Práctica de despliegues blue/green y releases canary

El despliegue blue/green de CodeDeploy prepara un nuevo entorno (green) idéntico al entorno actual (blue), despliega la nueva versión en green y cambia el tráfico de una vez. Si se detecta un problema, se puede hacer rollback instantáneamente devolviendo el tráfico al entorno blue. Para ECS, se crean nuevas tareas detrás del target group del ALB y se cambia el tráfico del listener. Para EC2, se crean nuevas instancias en un Auto Scaling Group y se reemplazan las antiguas. El release canary envía primero un pequeño porcentaje del tráfico (por ejemplo, 10%) a la nueva versión, verifica métricas y logs, y si no hay problemas, cambia gradualmente el tráfico restante. CodeDeploy soporta configuraciones como Linear10PercentEvery1Minute y Canary10Percent5Minutes, permitiendo seleccionar la velocidad de cambio de tráfico según los requisitos. La configuración de rollback automático permite revertir automáticamente al detectar fallos en CloudWatch Alarms o health checks del despliegue.

Integración con CodePipeline y posicionamiento en pipelines CI/CD

CodeDeploy se posiciona como la etapa de despliegue dentro de los pipelines CI/CD nativos de AWS. La configuración típica es: CodePipeline detecta cambios en el código fuente, CodeBuild ejecuta compilación y pruebas, y CodeDeploy despliega en el entorno de producción. La separación de responsabilidades entre compilación (CodeBuild) y despliegue (CodeDeploy) permite que cada servicio se especialice en su función. Los grupos de despliegue definen los destinos del despliegue (instancias EC2 por tags, servicios ECS, funciones Lambda), pudiendo configurar diferentes estrategias de despliegue para desarrollo, staging y producción. Las puertas de aprobación manual permiten insertar aprobación humana antes del despliegue a producción. La integración con CloudWatch Alarms permite monitorear la tasa de errores y latencia después del despliegue y ejecutar rollback automático si se superan los umbrales. Comparado con herramientas de despliegue de terceros como Spinnaker o ArgoCD, CodeDeploy tiene la ventaja de no requerir gestión de infraestructura adicional y de integrarse de forma fluida con servicios AWS.

共有するXB!