

# Arquitectura para la capacidad de EC2 para Amazon ECS
<a name="launch-type-ec2"></a>

Utilice la capacidad de EC2 para cargas de trabajo grandes cuyo precio se debe optimizar.

Al plantear cómo modelar las definiciones de tareas y servicios mediante EC2, le recomendamos que considere qué procesos se tienen que poner en marcha de forma conjunta y cómo se escalaría cada componente.

Por ejemplo, supongamos que una aplicación consta de los siguientes componentes:
+ Un servicio frontend que muestre información en una página web
+ Un servicio backend que proporciona las API para el servicio frontend
+ Un almacén de datos

En este ejemplo, cree definiciones de tareas que agrupen los contenedores que se utilizan para un fin común. Separe los diferentes componentes en definiciones de tareas múltiples. El clúster de ejemplo siguiente tiene tres instancias de contenedor que se ejecutan en tres contenedores de servicio frontend, dos contenedores de servicio backend y un contenedor de servicios de almacén de datos. 

Puede agrupar contenedores relacionados en una definición de tarea, por ejemplo contenedores vinculados que se deben ejecutar conjuntamente. Por ejemplo, agregue un contenedor de flujo de registro a su servicio frontend e inclúyalo en la misma definición de tareas.

Después de tener sus definiciones de tareas, puede crear servicios para mantener la disponibilidad de sus tareas deseadas. Para obtener más información, consulte [Creación de una implementación de actualización continua de Amazon ECS](create-service-console-v2.md). En sus servicios, puede asociar contenedores a los balanceadores de carga de Elastic Load Balancing. Para obtener más información, consulte [Uso del equilibrador de carga para distribuir el tráfico de servicio de Amazon ECS](service-load-balancing.md). Cuando cambian los requisitos de la aplicación, puede actualizar los servicios para aumentar o reducir el número de tareas deseadas. También puede actualizar los servicios para implementar versiones más nuevas de los contenedores de las tareas. Para obtener más información, consulte [Actualización de un servicio de Amazon ECS](update-service-console-v2.md).

![\[Ejemplo de arquitectura de aplicación con tres instancias. La instancia 1 tiene un contenedor de servicios de frontend y un contenedor de servicios de base de datos. La instancia 2 y la instancia 3 tienen un contenedor de servicios de frontend y un contenedor de servicios de backend.\]](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/images/application.png)


# Comportamiento de extracción de imágenes de contenedores para EC2 e instancias externas para Amazon ECS
<a name="pull-behavior"></a>

El tiempo que tarda un contenedor en iniciarse varía según la imagen del contenedor subyacente. Por ejemplo, una imagen más pesada (versiones completas de Debian, Ubuntu y Amazon1/2) puede tardar más en iniciarse porque hay más servicios que se ejecutan en los contenedores en comparación con sus respectivas versiones compactas (Debian-slim, Ubuntu-slim y Amazon-SLIM) o imágenes base más pequeñas (Alpine).

Cuando el agente de Amazon ECS inicia una tarea, extrae la imagen de Docker de su registro remoto y, a continuación, guarda en caché una copia local. Cuando utiliza una etiqueta de imagen nueva para cada versión de la aplicación, este comportamiento no es necesario. 

El parámetro del agente `ECS_IMAGE_PULL_BEHAVIOR` determina el comportamiento de extracción de imágenes. Están disponibles las siguientes opciones:
+ `ECS_IMAGE_PULL_BEHAVIOR`: `default`

  La imagen se extraerá de forma remota. Si la extracción falla, se usa la imagen en caché de la instancia.
+ `ECS_IMAGE_PULL_BEHAVIOR`: `always`

  La imagen se extraerá de forma remota. Si no se puede extraer, se produce un error en la tarea.

Para acelerar la implementación, defina el parámetro del agente Amazon ECS en el siguiente valor: 
+ `ECS_IMAGE_PULL_BEHAVIOR`: `once`

  La imagen se extrae de forma remota únicamente si no la extrajo una tarea anterior en la misma instancia de contenedor o si la imagen en caché ha sido eliminada por el proceso de limpieza automatizada de imágenes. De lo contrario, se usa la imagen almacenada en la caché de la instancia. De este modo, se garantiza que no se realizan extracciones de imágenes innecesarias. 
+ `ECS_IMAGE_PULL_BEHAVIOR`: `prefer-cached`

  La imagen se extrae de forma remota si no hay ninguna imagen en caché. De lo contrario, se usa la imagen almacenada en la caché de la instancia. La limpieza automatizada de imágenes se deshabilita para el contenedor con el fin de garantizar que no se elimine la imagen en caché. 

Si se establece el parámetro `ECS_IMAGE_PULL_BEHAVIOR` en cualquiera de los valores anteriores, se puede ahorrar tiempo, ya que el agente de Amazon ECS utiliza la imagen descargada existente. En el caso de imágenes de Docker más grandes, el tiempo de descarga puede tardar entre 10 y 20 segundos en llegar a la red.