Determinação do tamanho de tarefas do Amazon ECS - Amazon Elastic Container Service

Determinação do tamanho de tarefas do Amazon ECS

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

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

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.