En el examen DOP-C02, las estrategias de despliegue son uno de los temas mas ampliamente evaluados. Mas alla de conocer los nombres de las estrategias, necesitas determinar cual es optima para requisitos empresariales especificos — tiempo de inactividad aceptable, velocidad de retroceso, mantenimiento de capacidad durante el despliegue y restricciones de costo. Comprender el flujo completo desde la gestion de artefactos hasta la ejecucion del despliegue es esencial.
Servicios de gestion de artefactos
Amazon ECR - Registro de imagenes de contenedores
ECR es un registro de contenedores completamente gestionado para almacenar imagenes Docker. Puntos clave de ECR para el examen:
Etiquetas de imagen vs resumen de imagen: La etiqueta es mutable — una nueva imagen enviada a ECR con la etiqueta no garantiza que las tareas ya en ejecucion usaran la nueva imagen, porque ECS puede usar una version en cache. Los resumenes de imagen (hashes SHA256) son identificadores inmutables que fijan una imagen exacta. Especificar una imagen como en una definicion de tarea ECS garantiza que siempre se use la misma imagen.
Escaneo de imagenes ECR: Escaneo basico (verificacion automatica de vulnerabilidades en el envio) y escaneo mejorado (integracion de Inspector v2 con monitoreo continuo).
AWS CodeArtifact - Repositorio de paquetes
CodeArtifact proporciona repositorios privados para npm, pip, Maven, Gradle y otros formatos de paquetes. Las conexiones ascendentes a registros publicos (PyPI, registro de npm, Maven Central) almacenan automaticamente en cache los paquetes, reduciendo las dependencias de internet y habilitando controles de seguridad sobre que paquetes pueden usarse en las compilaciones.
EC2 Image Builder - Automatizacion de AMI
EC2 Image Builder automatiza la creacion, prueba y distribucion de AMIs. Una receta de imagen define la AMI base, los componentes de software a instalar y las pruebas de validacion. Los pipelines de imagen se ejecutan en un horario para producir automaticamente AMIs actualizadas.
Escenario del examen: "El inicio de la instancia despues de la ampliacion de Auto Scaling toma 15 minutos debido a la instalacion de bibliotecas grandes." La solucion es crear una AMI dorada con bibliotecas preinstaladas usando EC2 Image Builder. Esto es explicitamente diferente de la instalacion en tiempo de ejecucion de .ebextensions.
Comparacion completa de estrategias de despliegue
Estrategias de despliegue de EC2
Opciones de despliegue en lugar de CodeDeploy: AllAtOnce: Todas las instancias actualizadas simultaneamente. Mas rapido. Ocurre tiempo de inactividad durante la actualizacion. OneAtATime: Una instancia a la vez secuencialmente. Mas lento. Maxima disponibilidad mantenida. Sin costo adicional. HalfAtATime: La mitad de las instancias a la vez. Velocidad y disponibilidad equilibradas.
Despliegue azul/verde de CodeDeploy: Aprovisiona un nuevo grupo de Auto Scaling (verde) junto al grupo existente (azul). El cambio de grupo de destino de ALB transfiere el trafico instantaneamente. La capacidad total se mantiene durante el despliegue. El retroceso inmediato es posible volviendo al grupo anterior.
Grupos de destino ponderados de ALB para canary: Registra dos ASGs como grupos de destino separados y ajusta pesos en la regla del oyente de ALB. Comienza con un 5% de peso en el grupo de destino de la nueva version y aumenta gradualmente. Establecer el peso de la nueva version en 0 logra un retroceso instantaneo.
Instance Refresh de ASG: Despues de actualizar la AMI en una plantilla de lanzamiento, inicia un Instance Refresh para reemplazar automaticamente las instancias antiguas por nuevas mientras mantiene MinHealthyPercentage (predeterminado 90%). No se requiere instalacion de agente separado ni configuracion compleja de grupos de despliegue.
Profundizacion en estrategias de despliegue de Elastic Beanstalk
Elastic Beanstalk ofrece cinco politicas de despliegue. El examen requiere diferenciacion precisa entre ellas.
| Politica | Tiempo de inactividad | Retroceso | Costo | Caracteristica clave | |---------|----------------------|-----------|------|-------------------| | All at once | Si | Necesita redespliegue | Ninguno | Mas rapido, mas simple | | Rolling | No (capacidad reducida) | Necesita redespliegue | Ninguno | Versiones mezcladas durante el despliegue | | Rolling with additional batch | No (capacidad completa) | Necesita redespliegue | Pequena adicion temporal | Mantenimiento de capacidad eficiente en costo | | Immutable | No | Inmediato (terminar nuevo ASG) | Doble temporal | Retroceso seguro dentro de un solo entorno | | Traffic splitting | No | Reajuste de proporcion | Adicional temporal | Pruebas A/B canary |
Caracteristicas clave del despliegue Immutable
Immutable despliega nuevas instancias en un ASG temporal completamente separado, aislado del ASG de produccion existente. Despues de que las verificaciones de estado pasen, las instancias migran al ASG existente y el ASG temporal se elimina. Si el despliegue falla, terminar el ASG temporal es todo lo que se necesita — las instancias originales no se ven afectadas en absoluto. A diferencia del azul/verde (que requiere un entorno Beanstalk separado mas intercambio de CNAME), Immutable opera dentro de un solo entorno.
Blue/Green CNAME Swap vs Immutable
Ambas estrategias proporcionan despliegue sin tiempo de inactividad y retroceso rapido, pero su contexto de uso es diferente. CNAME Swap es optimo cuando ya existen dos entornos Beanstalk separados (preparacion y produccion) — el cambio de trafico es a nivel de DNS y es practicamente sin tiempo de inactividad. Immutable es apropiado cuando se gestiona un unico entorno sin necesidad de un entorno de preparacion paralelo. Para un retroceso mas rapido cuando hay dos entornos disponibles, CNAME Swap es preferible porque el retroceso es simplemente otro intercambio de CNAME, sin necesidad de redesplegar.
!CNAME Swap vs despliegue Immutable
Estrategias de despliegue de Lambda
Lambda Alias y versiones
Una version de Lambda es una instantanea inmutable de codigo y configuracion en un momento especifico. Un alias de Lambda es un puntero a una version especifica (o dos versiones con enrutamiento ponderado). Cuando los llamantes usan el ARN del alias, el trafico puede desplazarse a diferentes versiones subyacentes sin ninguna modificacion del codigo del lado del llamante.
Configuraciones de despliegue CodeDeploy Lambda
LambdaCanary10Percent5Minutes: 10% del trafico a la nueva version durante 5 minutos, luego transicion al 100% LambdaLinear10PercentEvery1Minute: 10% mas de trafico a la nueva version cada minuto, alcanzando el 100% despues de 10 minutos
El hook BeforeAllowTraffic en appspec.yml ejecuta una funcion Lambda de validacion antes de que cualquier trafico se desplace a la nueva version. Puede verificar la finalizacion de la migracion del esquema de la base de datos, la preparacion del endpoint de la API o cualquier otro prerequisito. El fallo activa el retroceso automatico antes de que cualquier usuario experimente la nueva version.
SAM AutoPublishAlias + DeploymentPreference
En una plantilla SAM, establecer AutoPublishAlias publica automaticamente una nueva version de Lambda en cada despliegue y la conecta al alias nombrado. Agregar DeploymentPreference configura automaticamente el despliegue canary o lineal de CodeDeploy. La configuracion completa requiere solo cambios YAML en la plantilla SAM — el pipeline de CI/CD existente no requiere ninguna modificacion. Esto es ideal para equipos que quieren implementar despliegues canary en funciones Lambda sin reestructurar toda la arquitectura de CI/CD.
Estrategias de despliegue de ECS
ECS Rolling Update
Actualiza el servicio reemplazando gradualmente las tareas con la nueva definicion de tarea. MinimumHealthyPercent y MaximumPercent controlan la tasa de reemplazo. Simple de configurar pero no proporciona aislamiento del oyente de prueba ni capacidad de retroceso instantaneo. Es adecuado para actualizaciones de bajo riesgo donde se acepta que las versiones antigua y nueva esten en ejecucion simultaneamente durante el despliegue.
CodeDeploy ECS Blue/Green
Configura ALB con un oyente de prueba (puerto 8080) separado del oyente de produccion (puerto 80/443). El nuevo conjunto de tareas (verde) se valida a traves del oyente de prueba antes de que cualquier trafico de produccion lo toque. El hook AfterAllowTestTraffic ejecuta pruebas automatizadas contra el entorno verde. Solo despues de una validacion exitosa CodeDeploy desplaza el trafico de produccion. Los problemas activan el retroceso instantaneo al conjunto de tareas azul.
La disciplina en el etiquetado de imagenes ECR es importante: usar etiquetas en las definiciones de tareas ECS es un anti-patron documentado — las tareas ya en ejecucion pueden usar imagenes antiguas en cache incluso despues de que se envie una nueva imagen . Fijar a los resumenes de imagen combinado con agrupar todas las dependencias en el Dockerfile en tiempo de construccion elimina tanto la ambiguedad de control de versiones como el riesgo de dependencia externa.
Puntos clave del examen
"reemplazar AMI en cientos de instancias EC2 en Auto Scaling sin tiempo de inactividad" -- ASG Instance Refresh (actualizar AMI de plantilla de lanzamiento, iniciar actualizacion, mantiene MinHealthyPercentage)
"mantener la capacidad completa durante el despliegue de Beanstalk con costo adicional minimo" -- Rolling with additional batch (mas rentable que Immutable)
"despliegue sin tiempo de inactividad con retroceso instantaneo en un solo entorno de Beanstalk" -- despliegue Immutable
"cambio instantaneo de trafico entre dos entornos de Beanstalk con capacidad de retroceso" -- URL Swap (intercambio de CNAME)
"despliegue canary basado en EC2 con control fino de proporcion de trafico" -- grupos de destino ponderados de ALB (dos ASGs, ajustar pesos en la regla del oyente)
"nueva versio