CloudBridge

La aplicación en línea

El despliegue — CloudFormation como caja negra

El salto de la imagen a la aplicación

En la sección anterior se construyó y publicó la imagen Docker en ECR. Pero una imagen en un registro no es una aplicación en línea: alguien tiene que lanzar el contenedor, colocarlo detrás de un balanceador de carga, conectarlo a una base de datos, y configurar la red. Hacer eso paso a paso desde la consola tomaría más de una hora y sería difícil de reproducir exactamente.

AWS CloudFormation resuelve este problema con un enfoque declarativo: se describe en un archivo YAML o JSON qué recursos se quieren —un clúster ECS, un servicio Fargate, un ALB, una tabla DynamoDB, grupos de seguridad, roles de IAM— y CloudFormation los crea todos en el orden correcto, manejando las dependencias automáticamente.

El template de esta semana

El instructor provee el archivo taller-semana1.yaml. Este template es, por ahora, una caja negra: se lanza con dos parámetros y se obtiene un ambiente funcional en minutos. No es necesario entender su contenido esta semana —eso es el tema de la Semana 2.

Lo que despliega el template:

Los únicos parámetros configurables son el nombre del stack y el URI de la imagen en ECR. El resto lo gestiona el template.

Un detalle que vale la pena notar

Al abrir la URL del ALB en el navegador, se ve cargarse esta misma guía: la plataforma del taller servida desde el despliegue en ECS. La aplicación que se construyó, desplegó, y opera es exactamente el entorno desde el que se leen estas instrucciones. No es un ejemplo genérico —es el sistema real.

Práctica guiada: lanzar el stack de CloudFormation

Abrir CloudFormation

  1. Abrir CloudFormation.
  2. Confirmar que la región seleccionada (esquina superior derecha) es la misma que se ha usado para todos los recursos del taller.

Crear el stack

  1. Pulsar Create stack y seleccionar With new resources (standard).
  2. En la sección Specify template, seleccionar Upload a template file.
  3. Pulsar Choose file y seleccionar el archivo taller-semana1.yaml provisto por el instructor.
  4. Pulsar Next.

Completar los parámetros

  1. En Stack name, escribir taller-<su-nombre> (por ejemplo: taller-maria). El nombre del stack identifica el ambiente en la consola y debe ser único en la región.
  2. En los parámetros del template, localizar el campo correspondiente al URI de la imagen. Pegar el URI completo copiado de ECR al final de la sección anterior. El formato es:
    123456789012.dkr.ecr.us-east-1.amazonaws.com/taller-aws-<su-nombre>:latest
    
  3. Revisar los demás parámetros. Dejarlos con sus valores predeterminados a menos que el instructor indique lo contrario.
  4. Pulsar Next.

Configurar opciones del stack

  1. En la pantalla de opciones, no es necesario cambiar nada. Pulsar Next.

Confirmar y lanzar

  1. En la pantalla de revisión, desplazarse hasta la sección Capabilities al pie de la página. Se verá un aviso sobre que el template puede crear recursos de IAM. Marcar la casilla I acknowledge that AWS CloudFormation might create IAM resources with custom names.
  2. Pulsar Submit (o Create stack, según la versión de la consola).

Seguir la creación del stack

  1. CloudFormation lleva automáticamente a la vista del stack recién iniciado. Seleccionar la pestaña Events. Se ve cómo se van creando los recursos en tiempo real, uno por uno, con su estado.
  2. Esperar hasta que el estado del stack (en la parte superior) cambie a CREATE_COMPLETE. El proceso toma entre 3 y 8 minutos, dependiendo de la región. Si algún recurso falla, el estado cambia a ROLLBACK_IN_PROGRESS y CloudFormation deshará los cambios automáticamente —revisar el evento fallido para entender el motivo.

Obtener la URL de la aplicación

  1. Una vez en CREATE_COMPLETE, seleccionar la pestaña Outputs.
  2. Se verá una salida llamada ALBUrl (o similar, según el template). Copiar el valor —es la URL pública del Application Load Balancer.
  3. Abrir esa URL en una nueva pestaña del navegador. En unos segundos se ve cargarse esta guía del taller, servida desde el contenedor recién desplegado en ECS.

Ejercicio 7 — Desplegar la aplicación

Lanzar el stack de CloudFormation con el template taller-semana1.yaml provisto por el instructor. Usar como URI de la imagen el valor copiado de ECR al terminar el Ejercicio 4. Al terminar, abrir la URL del ALB en el navegador y confirmar que la aplicación está en línea.


Destruir, y recrear, el ambiente

Por qué se practica la destrucción desde el primer día

En un sistema operado manualmente, un error puede dejar el ambiente en un estado inconsistente difícil de diagnosticar y corregir. El tiempo de recuperación depende de cuánto se recuerde de cómo se construyó originalmente, y de si esa memoria es precisa.

Cuando el ambiente se define como código —en este caso, un template de CloudFormation— la situación cambia radicalmente. Si algo sale mal, la corrección no es reconstruir desde la memoria: es borrar y volver a crear. El proceso es el mismo que se siguió hace unos minutos, tarda lo mismo, y produce exactamente el mismo resultado. El costo de un error se convierte en minutos de espera, no en horas de diagnóstico.

Esta es la razón por la que se practica el ciclo completo de destrucción y recreación en la Semana 1: para que en las semanas siguientes, si algo falla, la respuesta refleja no sea la urgencia sino la calma. Se borra, se recrea, se sigue.

Qué sobrevive a la destrucción del stack

Antes de borrar el stack, es útil entender qué destruye CloudFormation y qué no.

El template taller-semana1.yaml crea y gestiona: el clúster ECS, el servicio Fargate, el ALB, la tabla de DynamoDB, los roles de IAM, y la configuración de red. Todos esos recursos se eliminan cuando se borra el stack.

Lo que no forma parte del stack y por lo tanto sobrevive:

Esto significa que al recrear el stack basta con volver a proporcionar el URI de la imagen en ECR: el ambiente completo se reconstituye en minutos, sin volver a hacer el build ni resubir el código.

Práctica guiada: borrar el stack

Iniciar la eliminación

  1. En la consola de AWS, abrir CloudFormation.
  2. En la lista de stacks, seleccionar el stack taller-<su-nombre>.
  3. Pulsar Delete.
  4. En el diálogo de confirmación, pulsar Delete stack.

Seguir los eventos de borrado

  1. CloudFormation comienza a eliminar los recursos en orden inverso al de creación (primero los que dependen de otros, luego los recursos base). La pestaña Events muestra cada eliminación en tiempo real.
  2. Esperar hasta que el stack desaparezca de la lista o, si la consola lo muestra, hasta que el estado sea DELETE_COMPLETE. El proceso toma entre 3 y 6 minutos.

Nota: si algún recurso no puede eliminarse automáticamente (por ejemplo, una tabla de DynamoDB con protección contra eliminación, o un bucket de S3 con objetos), el estado cambiará a DELETE_FAILED y el evento fallido indicará el recurso y el motivo. El instructor indicará cómo proceder en ese caso.

Confirmar que la aplicación ya no está en línea

  1. Intentar abrir de nuevo la URL del ALB usada antes. El navegador debe mostrar un error de conexión —el balanceador ya no existe.

Práctica guiada: recrear el stack

Lanzar el stack de nuevo

  1. Con el stack eliminado, pulsar Create stack → With new resources (standard).
  2. Subir nuevamente el template taller-semana1.yaml. (Si la consola ofrece reutilizar el template anterior porque se subió recientemente, se puede hacer.)
  3. En Stack name, usar exactamente el mismo nombre: taller-<su-nombre>.
  4. En el campo del URI de la imagen, pegar el mismo URI de ECR usado antes. La imagen sigue en ECR — no es necesario volver a hacer el build.
  5. Pulsar Next, aceptar las capacidades de IAM, y pulsar Submit.
  6. En la pestaña Events, esperar a que el estado vuelva a CREATE_COMPLETE.

Verificar que la aplicación está de nuevo en línea

  1. En la pestaña Outputs, la URL del ALB puede ser diferente a la anterior —los balanceadores de carga generan nombres DNS únicos. Copiar el nuevo valor.
  2. Abrir la URL en el navegador. La aplicación debe responder exactamente igual que antes. El ciclo completo está cerrado.

Ejercicio 8 — Destruir, y recrear, el ambiente

Eliminar el stack de CloudFormation por completo. Confirmar que la aplicación ya no responde. Luego recrear el stack con los mismos parámetros y confirmar que la aplicación vuelve a estar en línea.


Preguntas puente

Estas preguntas abren la sesión del viernes. Conviene pensarlas después de la sesión del miércoles, cuando el ambiente todavía está fresco. No se buscan las respuestas de inmediato: se razonan desde lo que se construyó. Al comenzar la sesión remota, cada participante comparte su respuesta y se discute en conjunto antes de continuar.


Pregunta 1

¿Qué hace exactamente CodeBuild con el buildspec.yml, fase por fase, y dónde queda el resultado?


Pregunta 2

Si se borra el stack de CloudFormation, ¿qué sobrevive —el repositorio de CodeCommit, la imagen en ECR, ambos, o ninguno? ¿Por qué?


Pregunta 3

El template desplegó la aplicación detrás de un ALB. ¿Qué pasos manuales se ahorró, y cuáles de esos recursos se reconocen en la consola?


Dónde estamos

Al cerrar la Semana 1, cada participante tiene el flujo completo de la primera parte del taller funcionando de punta a punta:

Se construyó, desplegó, y operó el sistema. Lo que todavía es una caja negra es cómo ese template arma todo por dentro.

Qué sigue en la Semana 2

La próxima semana se abre la caja negra. Se va a:

Al final de la Semana 2 se comprenderá, y se podrá modificar, el ambiente que esta semana solo se lanzó.