Una guía para principiantes del Elastic Container Service de Amazon

Este artículo es una mirada de alto nivel para principiantes a Amazon ECS. Cubriremos conceptos básicos, términos, diagramas de arquitectura simple y ejemplos resumidos. ¡Entonces empecemos!

Estibador

Para apreciar Amazon ECS, primero debe comprender Docker.

Docker es una aplicación cliente-servidor que se puede instalar en Linux, Windows y MacOS y que le permite ejecutar contenedores Docker. Los contenedores son entornos ligeros que contienen todo lo necesario para ejecutar una aplicación específica o parte de una aplicación. Se pueden ejecutar varios contenedores diferentes en una máquina, siempre que tenga instalado el software Docker.

Si estás interesado en cómofuncionan, y en qué se diferencia Docker de una máquina virtual, entonces esta introducción a Docker es un excelente lugar para comenzar.

El uso de contenedores Docker permite a los equipos tener un entorno de desarrollo coherente al abstraer el software, el sistema operativo y la configuración del hardware en un bloque de construcción estándar que se puede ejecutar en cualquier máquina.

Cada contenedor tiene exactamente lo que necesita, por ejemplo, ciertas versiones de un idioma o biblioteca, y no más de lo que necesita. Se pueden usar varios contenedores para diferentes partes de su aplicación si lo desea, y se pueden configurar para comunicarse entre sí cuando sea necesario.

Al utilizar contenedores Docker específicos para ejecutar su código de producción, puede estar seguro de que su entorno de desarrollo es exactamente el mismo que su entorno de producción.

A medida que su aplicación crece, administrar la implementación, la estructura, la programación y el escalado de estos contenedores se vuelve muy complicado rápidamente. Aquí es donde entra un "servicio de administración de contenedores". Su objetivo es permitir opciones de configuración simples y se encarga del trabajo pesado mientras usted vuelve a escribir la aplicación.

Introducción a Amazon ECS

Amazon Elastic Container Service (ECS) es, según Amazon,

… Un servicio de administración de contenedores rápido y altamente escalable que facilita la ejecución, la detención y la administración de contenedores de Docker en un clúster.

Es comparable a Kubernetes, Docker Swarm y Azure Container Service.

ECS ejecuta sus contenedores en un clúster de instancias de máquinas virtuales Amazon EC2 (Elastic Compute Cloud) preinstaladas con Docker. Se encarga de instalar contenedores, escalar, monitorear y administrar estas instancias a través de una API y la consola de administración de AWS. Le permite simplificar su vista de instancias EC2 a un grupo de recursos, como CPU y memoria. La instancia específica en la que se ejecuta un contenedor y el mantenimiento de todas las instancias lo gestiona la plataforma. No tienes que pensar en eso.

Vale la pena señalar que está vinculado a la infraestructura de Amazon, a diferencia de otros proveedores que permiten una mayor flexibilidad. Sin embargo, eso significa que viene con una excelente integración con otros servicios de AWS.

Términos y arquitectura

Démosle un contexto imaginario para las definiciones que estamos a punto de analizar. Supongamos que está creando una aplicación que se ejecuta en dos contenedores Docker, tal vez uno para la aplicación principal y otro para administrar métricas. Ambos son necesarios para que la aplicación se ejecute según lo previsto. Si tiene una gran cantidad de tráfico, es posible que deba ejecutar varios pares de contenedores.

Aquí llegamos a dos conjuntos de términos nuevos:

  • una definición de tarea , tarea y servicio , y
  • unCluster ,Instancia de contenedor de ECS ,yAgente contenedor ECS .

Definición de tarea

Este es el plano que describe qué contenedores de Docker ejecutar y representa su aplicación. En nuestro ejemplo, serían dos contenedores. detallaría las imágenes a utilizar, la CPU y la memoria para asignar, las variables de entorno, los puertos para exponer y cómo interactúan los contenedores.

Tarea

Una instancia de una definición de tarea, que ejecuta los contenedores detallados en ella. Se pueden crear varias tareas mediante una definición de tarea, según lo requiera la demanda.

Servicio

Define las tareas mínimas y máximas de una definición de tarea ejecutada en un momento dado, ajuste de escala automático y equilibrio de carga. En nuestro ejemplo, si la CPU estaba al máximo de la única tarea que teníamos en ejecución, es posible que deseemos que agregue una tarea adicional.

Sin embargo, es posible que deseemos limitar el número máximo de tareas que puede ejecutar, ya que sabemos que ejecutar tareas adicionales utiliza recursos adicionales que cuestan dinero.

Ahora que tenemos nuestro Servicio, sus Tareas deben ejecutarse en algún lugar para que sean accesibles. Debe colocarse en un clúster y el servicio de administración de contenedores lo manejará ejecutándose en una o más instancias de contenedor de ECS .

Instancias de contenedor de ECS y agentes de contenedor de ECS

Esta es una instancia EC2 que tiene Docker y un ECS Container Agent ejecutándose. Una instancia de contenedor puede ejecutar muchas tareas, desde el mismo servicio o desde diferentes.

El Agente se encarga de la comunicación entre ECS y la instancia, proporcionando el estado de los contenedores en ejecución y gestionando los nuevos en ejecución.

Racimo

Como se vio anteriormente, un clúster es un grupo de instancias de contenedor de ECS. Amazon ECS maneja la lógica de programación, mantenimiento y manejo de solicitudes de escalado a estas instancias. También elimina el trabajo de encontrar la ubicación óptima de cada tarea en función de sus necesidades de CPU y memoria.

Un clúster puede ejecutar muchos servicios. Si tiene varias aplicaciones como parte de su producto, es posible que desee poner varias de ellas en un clúster. Esto hace un uso más eficiente de los recursos disponibles y minimiza el tiempo de configuración.

Conclusión

Hemos visto cómo una aplicación Dockerizada puede ser representada por una Tarea.Definición que tiene una relación uno a uno con un Servicio que a su vez lo usa para crear muchas instancias de Tarea diferentes .

Este serviciose implementa en un clústerdeInstancias de contenedor de ECSque proporcionan el conjunto de recursos necesarios para ejecutar y escalar su aplicación. Se pueden implementar servicios adicionales en el mismo clúster.

Amazon ECS, o cualquier servicio de administración de contenedores, tiene como objetivo hacer esto lo más simple posible, abstrayendo muchas complejidades de la infraestructura en ejecución a escala.

A medida que sus necesidades se vuelven más complejas, el servicio de administración de contenedores garantiza que esto siga siendo manejable. Con su API o Consola de administración, puede implementar definiciones para agregar nuevas instancias de contenedor cuando las necesite. Esto asegura que siempre haya una cantidad adecuada de Tareas en ejecución y asigna recursos de manera inteligente entre los Servicios.

¡Gracias por leer!

Recursos

  • Introducción sencilla a cómo funciona AWS ECS con un tutorial de ejemplo
  • Implementación de aplicaciones Akka en clúster en Amazon ECS
  • Bloques de creación de Amazon ECS
  • Introducción a Amazon EC2 Container Service (ECS): administración de Docker en AWS
  • Amazon ECS: conceptos básicos
  • AWS EC2 para principiantes
  • Una mejor experiencia de desarrollo y pruebas: Docker y AWS
  • Arquitecturas basadas en clústeres con Docker y Amazon EC2 Container Service