Menú

Esta página se ha traducido automáticamente. Algunos contenidos pueden no ser perfectos.

Comparte tu opinión

AWS ECS en profundidad: arquitectura y opciones de implementación

Tabla de contenido

Compartir esta página

Yifat Perry
Yifat Perry

¿Qué es AWS ECS?

Amazon Elastic Container Service (ECS) es un servicio de orquestación de contenedores basado en cloud y totalmente gestionado. Te permite ejecutar tus aplicaciones en cloud sin tener que configurar ni mantener la infraestructura.

Para asegurarte de que las demandas de capacidad se satisfacen de forma óptima y mantener el máximo rendimiento, puedes configurar ECS para que evalúe y supervise continuamente los procesos de memoria y CPU. Estos datos pueden ayudarte a determinar una estrategia de despliegue óptima para cada contenedor. Además, puedes aprovechar ECS para escalar contenedores y lanzar actualizaciones cuando lo necesites.

ECS admite la integración con varios servicios y funciones útiles de AWS, incluyendo Identity and Access Management (AWS IAM) roles, Elastic Block Store (AWS EBS) volumes y AWS Elastic Load Balancing (AWS ELB).

Esto es parte de nuestra serie de artículos sobre Kuberneteson AWS.

En este artículo vas a aprender:

Beneficios y casos de uso de ECS

ECS te permite aprovechar fácilmente los contenedores para diversos casos de uso. Puedes aprovechar ECS para alojar sitios web sencillos y también para gestionar una arquitectura de microservicios distribuida. ECS simplifica la gestión de contenedores, pero no automatiza todo el proceso. Aún puedes ajustar y personalizar el proceso.

Aquí tienes varios beneficios clave de Amazon ECS:

  • Implantación fácil y sencilla—ECS elimina la necesidad de configurar y mantener la infraestructura ofKubernetes clusters al encargarse de estas tareas.
  • Funciones de programación—que te permiten programar servicios, aplicaciones y procesos por lotes.
  • Disponibilidad gestionada—ECS se encarga de mantener la disponibilidad de las aplicaciones y te ayuda a escalar hacia arriba o hacia abajo según sea necesario para asegurar que se cumplan las demandas de capacidad.
  • Integración nativa, con una amplia gama de características como AWS ELB, Amazon Virtual Private Cloud (Amazon VPC), IAM y AWS EBS.
  • Integración con las herramientas existentes—ECS proporciona APIs sencillas que te permiten integrarte con tu pipeline CI/CD y tus herramientas existentes.

Conoce más en nuestras guías: AWS ECS vsKubernetes y AWS ECS vsEKS

Arquitectura de Amazon ECS

La siguiente figura ilustra Amazon ECS con contenedores ejecutándose en AWS Fargate. En las siguientes secciones, vamos a hablar de los principales componentes mostrados.

Amazon ECS architecture with VPC, container registry, Fargate tasks, and elastic network interfaces across availability zones.Fuente: AWS

Contenedores e imágenes

Para implementar tu aplicación en Amazon ECS, necesitas diseñar los componentes de la aplicación para que se ejecuten en contenedores. Los contenedores se crean a partir de plantillas de solo lectura llamadas imágenes.

Las imágenes suelen crearse a partir de un Dockerfile, un archivo de texto sin formato que especifica todos los componentes que necesitan ejecutarse en el contenedor. Una vez creadas, estas imágenes se almacenan en un registro de contenedores y pueden descargarse y ejecutarse en el clúster.

Definiciones de tareas de AWS ECS

Para preparar tu aplicación para que se ejecute en Amazon ECS, necesitas crear una definición de tarea. Una definición de tarea es un archivo de texto (en formato JSON) que describe uno o más contenedores (hasta 10) que forman tu aplicación.

La definición del trabajo puede especificar varios parámetros para tu aplicación en contenedores. Por ejemplo, puedes usar estos parámetros para indicar qué contenedores ejecutar, qué puertos deben estar abiertos, qué volúmenes de datos deben usarse, qué modo de red Docker usar y los roles de Identity and Access Management (IAM).

Casi todo lo que puedes ejecutar en un comando Docker de línea de comandos se puede definir usando definiciones de tareas ECS. Consulta todos los parámetros de definición de tareas en la documentación oficial.

AWS ECS Tasks y programación

Una tarea es una instancia de una definición de tarea que se ejecuta en un clúster. Después de crear una definición de tarea para tu aplicación en Amazon ECS, puedes especificar el número de tareas que se ejecutarán en tu clúster.

El programador de tareas de Amazon ECS se encarga de colocar tareas en un clúster. Hay dos estrategias principales de programación:

  • La estrategia REPLICA coloca un número deseado de tareas en tu cluster y mantiene este número de tareas, restaurándolas si algunas fallan.
  • La estrategia DAEMON coloca una tarea en cada instancia de contenedor activa que cumpla los criterios relevantes.

Amazon ECS architecture showing service definition and Fargate tasks with elastic network interfaces.Fuente: AWS

Cluster AWS ECS

Un clúster de Amazon ECS es una agrupación lógica de servicios, cada uno compuesto por una o más tareas. La primera vez que usas Amazon ECS, se crea un clúster predeterminado. Puedes crear clústeres adicionales en tu cuenta para lograr el aislamiento de recursos para diferentes cargas de trabajo o proyectos.

Existen dos formas de ejecutar recursos de clúster: en instancias EC2 o a través de Amazon Fargate. Para más detalles sobre cómo funciona cada una de estas opciones, mira la siguiente sección.

Agente de contenedores

El agente de contenedores se ejecuta en cada instancia de contenedor en un clúster de Amazon ECS. El agente envía información sobre las tareas que se están ejecutando y la utilización de recursos a Amazon ECS. Amazon ECS puede usar el agente para iniciar y detener tareas según sea necesario.

Amazon ECS workflow diagram illustrating container registry integration and task scheduling.Fuente: AWS

Opciones de implementación de AWS ECS: EC2 vs Fargate

ECS puede utilizar instancias de Elastic Compute Cloud (EC2) para ejecutar contenedores. Las instancias EC2 se implementan como parte del servicio Amazon EC2 y se “registran” en un clúster ECS definido, lo que significa que EC2 puede usar esas instancias para implementar contenedores. Puedes ejecutar un clúster ECS dentro de una VPC existente, haciéndolo accesible a los recursos de AWS existentes que se ejecutan en esa VPC.

Una forma alternativa de desplegar contenedores ECS es con Amazon Fargate. Fargate elimina la responsabilidad de aprovisionar, configurar y administrar instancias EC2, permitiendo que AWS administre las instancias EC2 por ti.

Con Fargate no tienes que gestionar servidores, pero debes asegurarte de que las definiciones de tareas sean sin estado. Actualmente, no puedes adjuntar un volumen de almacenamiento (como un volumen de Elastic Block Storage) al contenedor definido en el trabajo.

Esto significa que si usas Fargate con almacenamiento persistente, tendrás que usar servicios de almacenamiento externos como S3 o Relational Data Service (RDS).

Usa ECS con EC2 cuando:

  • Toda tu infraestructura se ejecuta en AWS
  • Ya has definido la VPC y las subredes
  • Tienes procesos existentes para el aprovisionamiento y la gestión de instancias EC2
  • Las aplicaciones requieren almacenamiento persistente conectado directamente

Usa ECS Fargate cuando:

  • No tienes una VPC existente
  • Tienes algunos recursos ejecutándose en Amazon y algunos en otros entornos de cloud
  • Las aplicaciones son apátridas o no requieren volúmenes de almacenamiento conectados directamente

Preguntas y respuestas sobre AWS ECS

¿Cómo es diferente Amazon ECS de AWS Elastic Beanstalk?

EC2 te ofrece capacidades que simplifican la gestión de contenedores, mientras sigues afinando el proceso. AWS Elastic Beanstalk, por otro lado, gestiona automáticamente la infraestructura por ti. Puedes usar Beanstalk en casos cuando solo necesitas enfocarte en el código.

AWS Elastic Beanstalk es un servicio basado en cloud que te ayuda a implementar y escalar fácilmente aplicaciones y servicios. Beanstalk administra automáticamente servicios, como ELB, EC2, Auto Scaling, RDS y Auto Scaling, implementa aplicaciones y monitoriza el estado de la aplicación.

Cuando trabajas con Beanstalk, necesitas especificar las imágenes de contenedor que quieres que el servicio despliegue, así como los requisitos de memoria y CPU, los enlaces de contenedor y las asignaciones de puertos. Una vez que defines esta información, Beanstalk empieza a encargarse automáticamente de toda la gestión. Aprovisiona el clúster ECS, gestiona el autoescalado y la monitorización, realiza el balanceo de carga y despliega contenedores en clústeres.

¿En qué se diferencia Amazon ECS de AWS Lambda?

Amazon ECS proporciona capacidades que simplifican la administración de contenedores y clústeres pero no automatiza completamente el proceso. Tienes que entender cómo funciona el proceso de aprovisionamiento y configurar y escalar tus recursos de forma continua. EC2 expone servidores y te da la información que necesitas para escalar y optimizar tu entorno.

AWS Lambda te permite programar tareas basadas en eventos que automatizan la infraestructura informática. Lambda te permite definir una infraestructura sin servidor que no requiere ni permite tu intervención, aparte de escribir el código que activa los eventos. Lambda te permite configurar eventos como cambios en los datos o clics en sitios web y definir una reacción en respuesta a los eventos.

Optimizando el almacenamiento de contenedores con Cloud Volumes ONTAP

NetApp Cloud Volumes ONTAP, la solución líder de gestión de almacenamiento de clase empresarial, ofrece servicios de gestión de almacenamiento seguros y probados en AWS, Azure y Google Cloud. Cloud Volumes ONTAP admite hasta una capacidad de 368TB y es compatible con varios casos de uso como servicios de archivos, bases de datos, DevOps o cualquier otra carga de trabajo empresarial, con un sólido conjunto de características que incluyen alta disponibilidad, protección de datos, eficiencias de almacenamiento, integración con Kubernetes y más.

En concreto, Cloud Volumes ONTAP admite el aprovisionamiento y la gestión de Persistent Volume para los requisitos de las cargas de trabajo en contenedores.

Conoce más sobre cómo Cloud Volumes ONTAP ayuda a afrontar los retos de las aplicaciones en contenedores en estos KubernetesWorkloads con Cloud Volumes ONTAP Case Studies.

Drift chat loading