

# Determinação do tamanho de tarefas do Amazon ECS
<a name="capacity-tasksize-best-practice"></a>

Uma das escolhas mais importantes a serem feitas ao implantar contêineres no Amazon ECS é sobre o tamanho deles e das tarefas. Os tamanhos de contêineres e tarefas são essenciais para o planejamento de escalabilidade e capacidade.

O Amazon ECS usa duas métricas de recursos para a capacidade: CPU e memória. O Amazon ECS mede a CPU em unidades de 1/1024 de uma vCPU completa (em que 1.024 unidades são iguais a 1 vCPU inteira). O Amazon ECS mede a memória em megabytes.

Na definição da tarefa, você pode declarar reservas e limites de recursos.

Ao declarar uma reserva, você declara a quantidade mínima de recursos que uma tarefa exige. Sua tarefa recebe, pelo menos, a quantidade de recursos solicitada. A aplicação pode conseguir usar mais CPU ou memória do que a reserva declarada. No entanto, isso está sujeito a quaisquer limites que também tenham sido declarados.

Usar mais do que a quantidade da reserva é conhecido como intermitência. A expansão significa que sua aplicação usa mais recursos do que o reservado, mas permanece dentro dos limites declarados. O Amazon ECS garante as reservas. Por exemplo, se você usar instâncias do Amazon EC2 para fornecer capacidade, o Amazon ECS não colocará uma tarefa em uma instância em que a reserva não possa ser atendida.

Um limite é a quantidade máxima de unidades de CPU ou memória que o contêiner ou a tarefa pode usar. Se seu contêiner tentar usar mais CPU do que esse limite, o Amazon ECS controlará a utilização. Se seu contêiner tentar usar mais memória do que esse limite, o Amazon ECS interromperá seu contêiner.

Escolher esses valores pode ser um desafio. Os valores mais adequados para a aplicação dependem muito dos requisitos de recursos dela.

Testar a carga da aplicação é a chave para um planejamento bem-sucedido dos requisitos de recursos. O teste de carga ajuda você a entender melhor os requisitos da sua aplicação.

## Aplicações sem estado
<a name="capacity-tasksize-stateless"></a>

Em aplicações sem estado que escalam horizontalmente, como uma aplicação por trás de um balanceador de carga, recomendamos primeiro determinar a quantidade de memória que a aplicação consome ao atender às solicitações.

Para fazer isso, você pode usar ferramentas tradicionais, como `ps` ou `top`. Também é possível utilizar soluções de monitoramento, como o CloudWatch Container Insights.

Ao determinar uma reserva de CPU, considere como você deseja escalar a aplicação para atender às suas necessidades de negócios.

Você pode usar reservas de CPU menores, como 256 unidades de CPU (ou 1/4 de vCPU), para aumentar a escala horizontalmente de uma forma refinada que minimize os custos. Porém, elas podem não ser escaladas com rapidez suficiente para atender a picos significativos na demanda.

Você pode usar reservas maiores de CPU para aumentar e reduzir a escala horizontalmente com mais rapidez. Isso ajuda você a acompanhar os picos de demanda mais rapidamente. No entanto, reservas maiores de CPU são mais caras.

## Outros aplicativos
<a name="capacity-tasksize-other"></a>

Em aplicações que não são escaláveis horizontalmente, como operadores singleton ou servidores de banco de dados, a capacidade disponível e o custo representam suas considerações mais importantes.

Você deve escolher a quantidade de memória e CPU com base na necessidade indicada pelo teste de carga para atender ao seu objetivo no nível de serviço. O Amazon ECS garante que a aplicação seja colocada em um host com capacidade adequada.