

# Arquitetura para capacidade do EC2 para Amazon ECS
<a name="launch-type-ec2"></a>

Use a capacidade do EC2 para workloads grandes que devem ter preço otimizado.

Ao considerar como modelar definições de tarefa e serviços usando o EC2, recomendamos que você considere quais processos devem ser executados juntos e como você pode escalar cada componente.

Por exemplo, suponha que uma aplicação seja formada pelos seguintes componentes:
+ Um serviço frontend que exiba informações em uma página da web
+ Um serviço backend que forneça APIs para o serviço frontend
+ Um armazenamento físico de dados

Neste exemplo, crie definições de tarefa que agrupem contêineres utilizados para um propósito em comum. Separe os diferentes componentes em várias definições de tarefas. O cluster de exemplo abaixo tem três instâncias de contêiner que executam três contêineres de serviços frontend, dois contêineres de serviço backend e um contêiner de serviço de armazenamento físico de dados. 

É possível agrupar contêineres relacionados em uma definição de tarefa, como contêineres vinculados que devem ser executados juntos. Por exemplo, adicione um contêiner de transmissão de log ao serviço de fron-end e inclua-o na mesma definição de tarefa.

Depois que tiver as definições de tarefa, será possível criar serviços com base nelas para manter a disponibilidade das tarefas desejadas. Para obter mais informações, consulte [Criação de uma implantação de atualização contínua do Amazon ECS](create-service-console-v2.md). Nos seus serviços, você pode associar contêineres a balanceadores de carga do Elastic Load Balancing. Para obter mais informações, consulte [Uso do balanceamento de carga para distribuir o tráfego de serviço do Amazon ECS](service-load-balancing.md). Quando os requisitos da aplicação mudam, você pode atualizar os serviços para aumentar ou diminuir o número de tarefas desejadas. Outra opção é atualizar os serviços para implantar versões mais recentes dos contêineres nas suas tarefas. Para obter mais informações, consulte [Atualizar um serviço do Amazon ECS](update-service-console-v2.md).

![\[Exemplo de arquitetura de aplicação com três instâncias. A instância 1 tem um contêiner de serviço de frontend e um contêiner de serviço de banco de dados. A instância 2 e a instância 3 têm um contêiner de serviço de frontend e um contêiner de serviço de backend.\]](http://docs.aws.amazon.com/pt_br/AmazonECS/latest/developerguide/images/application.png)


# Comportamento de extração de imagem de contêiner para instâncias do EC2 e externas no Amazon ECS
<a name="pull-behavior"></a>

O tempo de inicialização de um contêiner varia de acordo com a imagem do contêiner subjacente. Por exemplo, uma imagem maior (versões completas do Debian, Ubuntu e Amazon1/2) pode levar mais tempo para ser inicializada porque há mais serviços executados nos contêineres em comparação com suas respectivas versões menores (Debian-slim, Ubuntu-slim e Amazon-slim) ou imagens de base menores (Alpine).

Quando o agente do Amazon ECS inicia uma tarefa, ele faz pull da imagem do Docker no registro remoto e armazena em cache uma cópia local. Quando você usa uma nova tag de imagem para cada versão da aplicação, esse comportamento é desnecessário. 

O parâmetro de agente `ECS_IMAGE_PULL_BEHAVIOR` determina o comportamento de extração de imagem. As seguintes opções estão disponíveis:
+ `ECS_IMAGE_PULL_BEHAVIOR`: `default`

  O pull da imagem será feito remotamente. Se o pull falhar, a imagem armazenada em cache na instância é usada.
+ `ECS_IMAGE_PULL_BEHAVIOR`: `always`

  O pull da imagem será feito remotamente. Se o pull falhar, a tarefa falha.

Para acelerar a implantação, defina o parâmetro do agente do Amazon ECS como um dos seguintes valores: 
+ `ECS_IMAGE_PULL_BEHAVIOR`: `once`

  O pull da imagem só é feito remotamente se não tiver sido feito por uma tarefa anterior na mesma instância de contêiner ou se a imagem armazenada em cache tiver sido removida pelo processo de limpeza automática de imagens. Caso contrário, a imagem armazenada em cache na instância será usada. Isso garante que nenhum pull de imagem desnecessário seja tentado. 
+ `ECS_IMAGE_PULL_BEHAVIOR`: `prefer-cached`

  O pull da imagem será feito remotamente se não houver uma imagem armazenada em cache. Caso contrário, a imagem armazenada em cache na instância será usada. A limpeza automática de imagens é desativada no contêiner para garantir que a imagem armazenada em cache não seja removida. 

Definir o parâmetro `ECS_IMAGE_PULL_BEHAVIOR` para qualquer um dos valores anteriores pode economizar tempo porque o agente do Amazon ECS usa a imagem baixada existente. Em imagens do Docker maiores, o tempo de download pode levar de 10 a 20 segundos para fazer pull pela rede.