Amazon ECS
Servicio de orquestación de contenedores completamente administrado para desplegar, gestionar y escalar contenedores Docker, con dos tipos de lanzamiento: Fargate y EC2
Descripción general
Amazon Elastic Container Service (ECS) es un servicio de orquestación de contenedores completamente administrado para ejecutar y gestionar contenedores Docker a gran escala. Ofrece dos tipos de lanzamiento: Fargate (serverless, sin gestión de infraestructura) y EC2 (control total sobre las instancias subyacentes). Los servicios ECS mantienen automáticamente el número deseado de tareas, se integran con Elastic Load Balancing para distribución de tráfico y proporcionan despliegues rolling y blue/green para actualizaciones sin tiempo de inactividad.
Definición de tareas y patrón sidecar
La definición de tarea (Task Definition) es la unidad fundamental de ECS que especifica uno o más contenedores que se ejecutan juntos. Define la imagen del contenedor, los recursos de CPU y memoria asignados, las variables de entorno, los volúmenes montados y la configuración de logging. El patrón sidecar coloca contenedores auxiliares junto al contenedor principal de la aplicación: un sidecar de logging (Fluent Bit) para enviar logs a CloudWatch, un sidecar de proxy (Envoy) para service mesh, o un sidecar de monitoreo para métricas personalizadas. Los contenedores dentro de una tarea comparten la interfaz de red y pueden comunicarse a través de localhost. La definición de tarea es versionada, permitiendo rollbacks a versiones anteriores si un despliegue causa problemas.
Diferenciación entre tipos de lanzamiento Fargate y EC2
Fargate es el tipo de lanzamiento serverless donde AWS gestiona completamente la infraestructura subyacente. No hay instancias que parchear, escalar o monitorear; solo se especifican los recursos de CPU y memoria para cada tarea. Es ideal para equipos que quieren enfocarse en la aplicación sin preocuparse por la infraestructura. El tipo de lanzamiento EC2 ejecuta tareas en un clúster de instancias EC2 gestionadas por el usuario. Ofrece mayor control (selección de tipo de instancia, acceso al host, uso de GPU) y puede ser más económico para cargas de trabajo estables y predecibles usando instancias reservadas. La elección depende del balance entre simplicidad operativa (Fargate) y control/costo (EC2). Un patrón híbrido usa Fargate para servicios con tráfico variable y EC2 con instancias reservadas para servicios con carga base estable.
Estrategias de despliegue y escalado
ECS soporta múltiples estrategias de despliegue. El despliegue rolling reemplaza gradualmente las tareas antiguas con nuevas, manteniendo la disponibilidad durante la actualización. Los parámetros minimumHealthyPercent y maximumPercent controlan la velocidad y seguridad del rollout. El despliegue blue/green (mediante CodeDeploy) lanza un conjunto completamente nuevo de tareas, verifica su salud y luego redirige el tráfico, permitiendo rollback instantáneo si hay problemas. Para escalado, ECS Service Auto Scaling ajusta el número de tareas basándose en métricas de CloudWatch como utilización de CPU, solicitudes por target del ALB o métricas personalizadas. El escalado por pasos permite respuestas graduales a cambios de carga, mientras que el escalado por seguimiento de objetivo mantiene automáticamente una métrica en un valor deseado. Para el tipo de lanzamiento EC2, Cluster Auto Scaling ajusta también el número de instancias del clúster.