Amazon Elastic Container Service (Amazon ECS) es un servicio de orquestación de contenedores altamente escalable y de alto rendimiento que permite ejecutar y escalar aplicaciones en contenedores de manera sencilla. Amazon ECS elimina la necesidad de instalar y operar tu propio software de orquestación de contenedores, lo que te permite enfocarte en desarrollar y administrar aplicaciones.

Visión General

Casos de Uso

Despliegue de Microservicios: Amazon ECS facilita la implementación y el escalado de aplicaciones de microservicios. Al permitir la división de aplicaciones en servicios más pequeños, ECS ayuda a gestionar de manera efectiva cada servicio por separado, lo que mejora la agilidad y la escalabilidad.

Procesamiento de Big Data: ECS se puede utilizar para procesar grandes volúmenes de datos mediante aplicaciones distribuidas. Al ejecutar contenedores que realizan tareas de procesamiento de datos en paralelo, ECS permite un procesamiento eficiente y escalable.

Cargas de Trabajo Basadas en Eventos: Para aplicaciones que necesitan escalar rápidamente en respuesta a eventos, como aplicaciones web o de comercio electrónico, ECS puede manejar picos en la demanda sin necesidad de gestión manual, garantizando la alta disponibilidad.

Desarrollo y Pruebas en Entornos Contenerizados: Los equipos de desarrollo pueden usar ECS para configurar rápidamente entornos de desarrollo y pruebas consistentes y aislados, lo que asegura que las aplicaciones se comporten de la misma manera en producción que en desarrollo.

Beneficios de Amazon ECS

Escalabilidad Automática: ECS puede escalar automáticamente la cantidad de contenedores en función de la demanda de tu aplicación, lo que garantiza un uso óptimo de los recursos.

Integración con Servicios de AWS: ECS se integra de manera nativa con otros servicios de AWS como IAM, CloudWatch, y VPC, lo que facilita la gestión de permisos, monitoreo y la configuración de redes.

Gestión Simplificada: Al ser un servicio totalmente administrado, ECS reduce la carga operativa, permitiendo a los equipos centrarse en la lógica de negocio en lugar de en la infraestructura subyacente.

Seguridad: Con ECS, puedes aplicar políticas de seguridad granulares para proteger tus aplicaciones. AWS se encarga del mantenimiento del entorno subyacente, lo que reduce la superficie de ataque.

Flexibilidad en la Elección de Infraestructura: Amazon ECS permite la ejecución de contenedores en una variedad de infraestructuras, incluyendo instancias de EC2 o utilizando AWS Fargate, que permite ejecutar contenedores sin necesidad de administrar servidores.

Aprende en Blockstellart

Empresas que utilizan Amazon ECS

Utiliza Amazon ECS para gestionar sus microservicios en contenedores, lo que les permite escalar sus operaciones y manejar picos de demanda con eficiencia.

Emplea ECS para alojar aplicaciones críticas en contenedores, garantizando una operación continua y segura de sus sistemas de atención médica.

Samsung ha adoptado ECS para desplegar y gestionar aplicaciones a escala global, beneficiándose de la flexibilidad y escalabilidad del servicio.

Tipos de Lanzamiento

Un tipo de lanzamiento de Amazon ECS determina el tipo de infraestructura en la que se alojan tus tareas y servicios.

Existen dos tipos de lanzamiento, y la tabla a continuación describe algunas de las diferencias entre los dos tipos de lanzamiento:

Amazon EC2Amazon Fargate
Puedes aprovisionar instancias EC2 explícitamenteEl plan de control solicita recursos y Fargate los aprovisiona automáticamente
Eres responsable de la actualización, parches y cuidado del grupo de EC2Fargate aprovisiona el cómputo según sea necesario
Debes manejar la optimización del clústerFargate se encarga de las optimizaciones del cliente
Control más granular sobre la infraestructuraControl limitado, ya que la infraestructura está automatizada

Tipo de Lanzamiento Fargate

  • El tipo de lanzamiento Fargate te permite ejecutar tus aplicaciones contenerizadas sin necesidad de aprovisionar y gestionar la infraestructura de backend. Simplemente registra la definición de tu tarea y Fargate lanza el contenedor por ti.
  • El tipo de lanzamiento Fargate es una infraestructura sin servidor gestionada por AWS.
  • Fargate solo admite imágenes de contenedores alojadas en Elastic Container Registry (ECR) o Docker Hub.

Tipo de Lanzamiento EC2

  • El tipo de lanzamiento EC2 te permite ejecutar tus aplicaciones contenerizadas en un clúster de instancias Amazon EC2 que gestionas.
  • Los repositorios privados solo son compatibles con el tipo de lanzamiento EC2.

El siguiente diagrama muestra los dos tipos de lanzamiento y resume algunas diferencias clave:

Tipo de Lanzamiento EC2

  • Aprovisionas explícitamente instancias EC2.
  • Eres responsable de gestionar las instancias EC2.
  • Se te cobra por cada instancia EC2 en ejecución.
  • Integración con EFS y EBS.
  • Manejas la optimización del clúster.
  • Control más granular sobre la infraestructura.

Tipo de Lanzamiento Fargate

  • Fargate aprovisiona automáticamente los recursos.
  • Fargate aprovisiona y gestiona el cómputo.
  • Se te cobra por las tareas en ejecución.
  • Sin integración con EFS y EBS.
  • Fargate se encarga de la optimización del clúster.
  • Control limitado, la infraestructura está automatizada.

Imágenes

  • Los contenedores se crean a partir de una plantilla de solo lectura llamada imagen, que contiene las instrucciones necesarias para construir un contenedor Docker.
  • Las imágenes se generan a partir de un archivo Dockerfile.
  • Actualmente, solo se admiten contenedores Docker.
  • Una imagen contiene las instrucciones detalladas para crear un contenedor Docker.
  • Las imágenes se almacenan en registros como DockerHub o AWS Elastic Container Registry (ECR).
  • ECR es un servicio de registro Docker gestionado por AWS, que ofrece seguridad, escalabilidad y confiabilidad.
  • ECR admite repositorios Docker privados, con permisos basados en recursos, utilizando AWS IAM para gestionar el acceso a los repositorios e imágenes.
  • Los desarrolladores pueden utilizar la interfaz de línea de comandos de Docker (Docker CLI) para subir, descargar y gestionar imágenes.

Tareas y Definiciones de Tareas

Para ejecutar contenedores Docker en Amazon ECS, es necesario definir una tarea, la cual consiste en un archivo de texto en formato JSON que describe uno o más contenedores, con un máximo de 10. Estas definiciones de tareas utilizan imágenes Docker para iniciar los contenedores, y en ellas se especifica el número de tareas a ejecutar, es decir, la cantidad de contenedores a desplegar.

Algunos de los parámetros que puedes especificar en una definición de tarea incluyen:

  • Qué imágenes Docker usar con los contenedores en tu tarea.
  • Cuánta CPU y memoria asignar a cada contenedor.
  • Si los contenedores están vinculados entre sí en una tarea.
  • El modo de red Docker que se utilizará para los contenedores en tu tarea.
  • Qué puertos (si los hay) del contenedor se deben asignar a las instancias del contenedor host.
  • Si la tarea debe continuar si el contenedor finaliza o falla.
  • Los comandos que el contenedor debe ejecutar cuando se inicie.
  • Variables de entorno que se deben pasar al contenedor cuando se inicia.
  • Volúmenes de datos que deben utilizarse con los contenedores en la tarea.
  • El rol de IAM que la tarea debe usar para los permisos.

Puedes usar Amazon ECS Run Task para ejecutar una o más tareas una sola vez.

Cluster ECS

Los Clústeres de ECS son agrupaciones lógicas de instancias de contenedores donde puedes asignar tareas. Aunque se crea un clúster por defecto, es posible crear múltiples clústeres para separar recursos. ECS permite definir un número específico de tareas (cuenta deseada) para ejecutarse en el clúster, y estos clústeres pueden contener tareas que utilizan los tipos de lanzamiento Fargate y EC2. En el caso de clústeres con el tipo de lanzamiento EC2, estos pueden contener diferentes tipos de instancias de contenedores, y cada instancia solo puede formar parte de un clúster a la vez. Los «Servicios» proporcionan funciones de autoescalado para ECS, y los clústeres son específicos de la región. Además, puedes crear políticas de IAM para permitir o restringir el acceso de los usuarios a clústeres específicos.

Autoescalado

Autoescalado de Servicios

El servicio Amazon ECS se puede configurar opcionalmente para utilizar el Autoescalado de Servicios, ajustando automáticamente el número deseado de tareas hacia arriba o hacia abajo.

El Autoescalado de Servicios aprovecha el servicio de Autoescalado de Aplicaciones para proporcionar esta funcionalidad.

El Autoescalado de Servicios en Amazon ECS admite los siguientes tipos de políticas de escalado:

  • Políticas de Escalado Basadas en Seguimiento de Objetivos: Aumentan o disminuyen el número de tareas que ejecuta tu servicio en función de un valor objetivo para una métrica específica de CloudWatch. Esto es similar a cómo un termostato mantiene la temperatura de tu hogar; tú seleccionas la temperatura y el termostato hace el resto.
  • Políticas de Escalado Gradual: Aumentan o disminuyen el número de tareas que ejecuta tu servicio en respuesta a alarmas de CloudWatch. El escalado gradual se basa en un conjunto de ajustes de escalado, conocidos como «ajustes por pasos,» que varían según la magnitud de la alarma.
  • Escalado Programado: Aumenta o disminuye el número de tareas que ejecuta tu servicio en función de la fecha y la hora.

Autoescalado de Clústeres

Amazon ECS utiliza un tipo de recurso llamado «Proveedor de Capacidad» (Capacity Provider).

Un Proveedor de Capacidad puede asociarse con un Grupo de Autoescalado de EC2 (ASG).

Cuando asocias un Proveedor de Capacidad de ECS con un ASG y lo añades a un clúster de ECS, el clúster puede escalar automáticamente tu ASG utilizando dos nuevas características de ECS:

  1. Escalado gestionado, con una política de escalado creada automáticamente en tu ASG y una nueva métrica de escalado (Reserva del Proveedor de Capacidad) que utiliza la política de escalado.
  2. Protección gestionada contra la terminación de instancias, que permite la terminación controlada de instancias en el ASG cuando ocurre una reducción de escala.

Precios

Modelo de Lanzamiento con AWS Fargate:

  • Pago por uso: Con AWS Fargate, solo pagas por los recursos de CPU y memoria que utiliza tu aplicación en contenedores. Los recursos se calculan desde el momento en que se extraen las imágenes del contenedor hasta que la tarea de Amazon ECS se termina, con un cargo mínimo de un minuto.

Modelo de Lanzamiento con Amazon EC2:

  • Pago por recursos de AWS: No hay un cargo adicional por usar el modelo de lanzamiento de Amazon EC2. Solo pagas por los recursos de AWS que creas, como instancias EC2 o volúmenes de EBS, necesarios para almacenar y ejecutar tu aplicación.

Amazon ECS en AWS Outposts:

  • Modelo similar al de Amazon EC2: Los precios de Amazon ECS en AWS Outposts son simples y siguen el mismo modelo que en la nube. No hay cargos adicionales por usar ECS en Outposts; solo pagas por la capacidad de EC2 en Outposts.

Además, para Amazon ECS Anywhere, se aplica un cargo de $0.01025 por hora por cada instancia gestionada en las instalaciones que esté registrada en un clúster de ECS. Este modelo se basa en la cantidad de tiempo que las instancias están conectadas al plano de control de ECS.

Estos modelos de precios te permiten elegir la opción que mejor se adapte a tus necesidades, pagando solo por los recursos que realmente utilizas, sin tarifas mínimas ni compromisos iniciales.

Puedes consultar más detalles en la página oficial de precios de Amazon ECS aquí.

Preguntas frecuentes sobre Amazon ECS

¿Qué es Amazon ECS?

Amazon Elastic Container Service (ECS) es un servicio de orquestación de contenedores completamente administrado que facilita la ejecución, escalado y gestión de aplicaciones en contenedores en AWS.

¿Qué tipos de lanzamiento admite Amazon ECS?

Amazon ECS admite dos tipos de lanzamiento: AWS Fargate, que es una infraestructura sin servidor, y Amazon EC2, donde gestionas directamente las instancias de cómputo.

¿Cómo se cobra el uso de Amazon ECS?

No hay cargos adicionales por usar Amazon ECS. Pagas solo por los recursos de AWS que utilices, como instancias EC2, volúmenes de EBS o la capacidad de Fargate.

¿Qué es AWS Fargate en el contexto de Amazon ECS?

AWS Fargate es un motor de cómputo que permite ejecutar contenedores sin necesidad de gestionar la infraestructura subyacente. ECS usa Fargate para aprovisionar y escalar automáticamente los recursos según sea necesario.

¿Cómo se escala automáticamente un servicio en Amazon ECS?

Amazon ECS permite el escalado automático de servicios mediante políticas de escalado, como el seguimiento de objetivos, escalado gradual y escalado programado, que ajustan el número de tareas en función de métricas de CloudWatch.

¿Qué es un clúster en Amazon ECS?

Un clúster de ECS es un grupo lógico de instancias de contenedores donde se pueden ejecutar tareas y servicios. Los clústeres pueden contener instancias que utilizan tanto Fargate como EC2.

¿Qué es una definición de tarea en Amazon ECS?

Una definición de tarea es un archivo de configuración en formato JSON que describe uno o más contenedores que forman parte de una tarea, incluyendo detalles como la imagen del contenedor, la cantidad de CPU y memoria, y las variables de entorno.

¿Puedo ejecutar Amazon ECS en mi infraestructura on-premises?

Sí, mediante Amazon ECS Anywhere puedes ejecutar y gestionar contenedores utilizando Amazon ECS en tu infraestructura on-premises.

¿Cómo puedo monitorear las aplicaciones en Amazon ECS?

Amazon ECS se integra con Amazon CloudWatch para monitorear métricas, registros y eventos de tus aplicaciones en contenedores.

¿Qué es un «Capacity Provider» en Amazon ECS?

Un «Capacity Provider» en ECS permite definir la capacidad de cómputo para un clúster, y puede asociarse con grupos de autoescalado de EC2 (ASG) para gestionar automáticamente el escalado de instancias en el clúster.

¿Cómo maneja Amazon ECS la seguridad?

Amazon ECS se integra con AWS Identity and Access Management (IAM) para controlar el acceso a los recursos, y soporta la encriptación de datos en tránsito y en reposo utilizando AWS Key Management Service (KMS).

¿Qué es Amazon ECS Service Auto Scaling?

Service Auto Scaling es una característica que ajusta automáticamente el número de tareas que se ejecutan en un servicio de ECS basado en las políticas de escalado definidas por el usuario.

¿Es Amazon ECS compatible con Kubernetes?

No directamente. Sin embargo, AWS ofrece Amazon EKS (Elastic Kubernetes Service) para aquellos que prefieren usar Kubernetes en lugar de ECS.

¿Cómo se gestionan las actualizaciones de aplicaciones en ECS?

Puedes gestionar las actualizaciones de aplicaciones en ECS utilizando despliegues azul/verde, donde se crea una nueva versión de la tarea y se cambia el tráfico a la nueva versión una vez validada.

¿Cuál es la diferencia entre Amazon ECS y Amazon EKS?

Amazon ECS es un servicio nativo de AWS para la orquestación de contenedores, mientras que Amazon EKS es un servicio de Kubernetes gestionado por AWS. ECS es ideal para aquellos que prefieren una integración más profunda con el ecosistema de AWS, mientras que EKS es para aquellos que desean utilizar Kubernetes.

Tags:

Descubre más desde BlockStellart

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo