O blog da AWS

Escale seu Amazon ECS usando diferentes serviços nativos da AWS!

Por Arun Chandapillai e Shak Kathir

Os containers aceleram o desenvolvimento de aplicativos e aprimoram a consistência da implantação em todos os ambientes, permitindo que as organizações aumentem a produtividade e a agilidade. Os serviços de containers da AWS, como o Amazon Elastic Container Service (Amazon ECS), facilitam o gerenciamento do seu aplicativo para que você possa se concentrar na inovação e nas necessidades da sua empresa.

A experiência do cliente é o parâmetro mais importante pelo qual as organizações medem o desempenho do aplicativo. Manter uma experiência confiável e consistente para o usuário final em face de diferentes padrões de solicitação é um desafio que toda organização enfrenta. Como melhor prática, você pode usar a escalabilidade automática para aumentar (também conhecida como scale-out) ou diminuir (também conhecida como scale-in) a contagem desejada de tarefas em seu serviço Amazon ECS automaticamente. Isso elimina a necessidade de responder manualmente em tempo real aos picos de tráfego. A escalabilidade automática otimiza sua eficiência de uso e custo ao consumir serviços da AWS para que você pague somente pelos recursos de que realmente precisa.

A AWS fornece vários recursos que podem ser aproveitados para escalabilidade automática do seu serviço Amazon ECS. Usar a opção certa melhora a confiabilidade geral do seu aplicativo, reduz os custos operacionais e a complexidade e aprimora a experiência do usuário final. Neste post, você aprende sobre o AWS Application Auto Scaling, por meio do qual você pode configurar a escalabilidade automática do seu serviço Amazon ECS. Você também aprende a usar o Amazon ECS Service Connect e o AWS Distro for OpenTelemetry (ADOT), que podem ser usados no escalonamento automático de aplicativos.

Auto Scaling de aplicativos

O escalonamento automático do serviço permite que você aumente ou diminua automaticamente a contagem desejada de tarefas em seu serviço Amazon ECS. O Amazon ECS utiliza o serviço Application Auto Scaling para fornecer essa funcionalidade. Por padrão, o Amazon ECS publica o uso da CPU e da memória no Amazon CloudWatch. Você pode usar essas ou outras métricas personalizadas do CloudWatch para escalar seu serviço. O Amazon ECS Service Auto Scaling oferece suporte aos seguintes tipos de escalabilidade automática:

  • Políticas de escalabilidade de rastreamento de metas — Você pode aumentar ou diminuir o número de tarefas que seu serviço executa com base em um valor alvo para uma métrica específica. Por exemplo, você pode definir uma política de escalabilidade para adicionar mais tarefas ao serviço se a utilização da CPU exceder o valor-alvo de 75% e remover tarefas do serviço, se a utilização da CPU ficar abaixo do valor alvo de 75%. Em alguns casos, você deseja escalar com base em métricas específicas do aplicativo, como o número de solicitações atendidas, ou com base em métricas publicadas por outros serviços da AWS. Nesse caso, você pode usar operações aritméticas e funções matemáticas para personalizar as métricas usadas com as políticas de rastreamento do Target. Consulte esta postagem para saber mais sobre o escalonamento automático com base em métricas personalizadas com o Application Auto Scaling. A captura de tela a seguir ilustra um exemplo de política de escalabilidade de rastreamento de metas.

Sample target tracking scaling policy

  • Políticas de escalonamento de etapas — Você pode aumentar ou diminuir o número de tarefas que seu serviço executa com base em um conjunto de ajustes de escalabilidade, conhecidos como ajustes de etapas, que variam de acordo com o tamanho da violação do alarme. Com o escalonamento por etapas, você pode escolher limites de métricas e a quantidade de recursos a serem adicionados ou removidos. Por exemplo, você pode definir uma política de escalabilidade que escale seu serviço em duas tarefas se a utilização da CPU estiver entre 50% e 75%, e escale seu serviço em duas tarefas se a utilização da CPU cair abaixo de 25%. A captura de tela a seguir ilustra um exemplo de política de escalonamento por etapas.

Sample step scaling policy

  • Escalonamento programado — Você pode aumentar ou diminuir o número de tarefas que seu serviço executa com base na data e na hora. Por exemplo, você pode definir um cronograma para aumentar o número de tarefas em execução no serviço durante os horários de pico de tráfego e diminuir o número de tarefas fora do horário de pico. Você pode configurar a escalabilidade do cronograma usando a AWS Command Line Interface (AWS CLI). Você pode usar o escalonamento programado e as políticas de escalabilidade em conjunto para obter os benefícios de abordagens proativas e reativas de escalabilidade. Depois que uma ação de escalabilidade programada é executada, a política de escalabilidade pode continuar tomando decisões sobre a possibilidade de ampliar ainda mais a capacidade. Isso ajuda a garantir que você tenha capacidade suficiente para lidar com a carga do seu aplicativo.

O escalonamento automático de serviços é o modo mais fácil de escalar seu serviço Amazon ECS e você pode configurar a escalabilidade usando o AWS Management Console, o AWS CLI e os AWS SDKs.

As políticas de escalabilidade oferecem suporte a um período de espera, que é o número de segundos de espera até que uma atividade de escalabilidade entre em vigor. Durante um evento de expansão, as tarefas são aumentadas continuamente, enquanto durante um evento de diminuição, as tarefas são reduzidas de forma conservadora. Para proteger a disponibilidade do seu aplicativo, as atividades de expansão são bloqueadas até que o período de espera expire.

O diagrama a seguir ilustra um exemplo de política de escalabilidade de rastreamento de metas.

Target tracking scaling policy

Preços do Application Auto Scaling

Não há custo adicional para usar esse recurso. Você paga pelos recursos da AWS que você cria para armazenar e executar seu aplicativo. Você paga apenas pelo que usa, à medida que o usa, e não há taxas mínimas.

Amazon ECS Service Connect

O Amazon ECS Service Connect fornece uma conectividade perfeita de serviço a serviço e uma rica telemetria de tráfego pronta para uso, sem alterações no código do seu aplicativo. Ele faz isso criando uma descoberta de serviços e uma malha de serviços no Amazon ECS. Ao usar a configuração do Service Connect, o Amazon ECS injeta automaticamente um contêiner proxy auxiliar em cada nova tarefa à medida que ela é iniciada. O Amazon ECS gerencia essa configuração para você.

Se você tiver requisitos de baixa latência e precisar monitorar métricas como o número de novos clientes, solicitações de entrada, taxa de erro ou o número de conexões TLS com falha, recomendamos configurar o ECS Service Connect. O ECS Service Connect usa uma arquitetura de malha de serviços centralizada para roteamento e gerenciamento de tráfego. As métricas de observabilidade do tráfego criadas pelo Amazon ECS Service Connect podem ser visualizadas diretamente do console do Amazon ECS e essas métricas também são enviadas para o CloudWatch. Depois que essas métricas forem disponibilizadas no CloudWatch, você poderá usá-las para configurar o escalonamento automático de suas tarefas de serviço do Amazon ECS.

A seguir estão as métricas mais usadas que são disponibilizadas por meio do Amazon ECS Service Connect e esta é a lista completa.

ActiveConnectionCount O número total de conexões simultâneas ativas dos cliente
NewConnectionCount O número total de novas conexões estabelecidas por clientes
TargetResponseTime A latência do processamento da solicitação do aplicativo
ClientTLSNegotiationErrorCount O número total de vezes que a conexão TLS falhou
HTTPCode_Target_5XX_Count O número de códigos de resposta HTTP com números de 500 a 599

Com o ECS Service Connect, você pode se referir e se conectar aos seus serviços por meio de nomes lógicos usando um namespace fornecido pelo AWS Cloud Map e distribuir automaticamente o tráfego entre as tarefas do Amazon ECS sem implantar e configurar balanceadores de carga. Além disso, o console do Amazon ECS fornece painéis fáceis de usar com métricas de tráfego de rede em tempo real para conveniência operacional e depuração simplificada. O diagrama a seguir ilustra a vida útil de uma solicitação com o ECS Service Connect e como as métricas são publicadas no CloudWatch.

ECS Service Connect – life of a request

A captura de tela a seguir ilustra a visualização da integridade do tráfego, que fornece um instantâneo do tráfego medido pelo Service Connect. Essa exibição exibe o número de conexões ativas por meio do Service Connect e o status HTTP das conexões concluídas por meio do Service Connect para todas as tarefas do serviço. O ECS Service Connect é totalmente compatível com o AWS CloudFormation, o AWS Cloud Development Kit (AWS CDK), o AWS Copilot e o AWS Proton para provisionamento de infraestrutura, implantação de código e monitoramento de seus serviços.

ECS Service Connect traffic health

Preços do Amazon ECS Service Connect

Não há cobrança adicional pela descoberta de serviços, recursos de conectividade ou telemetria de tráfego gerados pelo ECS Service Connect. Você paga somente pelos recursos consumidos pelo agente do ECS Service Connect. Nossa recomendação é adicionar 256 unidades de CPU e 64 MB de memória à sua tarefa para o contêiner do Service Connect. Não é algo que você configuraria separadamente, mas é contabilizado quando você faz a alocação de tarefas. No estado ocioso, observamos que o agente Service Connect consome cerca de 100 unidades de CPU e 40 MB de memória.

ADOT

O coletor OpenTelemetry (OTEL) inclui componentes para exportar dados para várias fontes de dados, como o CloudWatch. A AWS Distro for OpenTelemetry Collector (ADOT Collector) é uma versão do OTEL Collector compatível com a AWS, que é distribuída e suportada pela AWS. Esse componente permite que você envie dados de telemetria para o CloudWatch e outras soluções de monitoramento compatíveis.

Habilitar a observabilidade em seu Amazon ECS usando o ADOT consiste em duas etapas:

  1. Instrumentar seus aplicativos uma vez para enviar registros, métricas e rastreamentos correlacionados para uma ou mais soluções de monitoramento. Você pode usar a instrumentação automática (habilitando o aplicativo com um agente baseado em linguagem de programação) sem alterar seu código.
  2. Implantando o ADOT Collector usando um dos dois métodos a seguir:
    1. Padrão sidecar
    2. Padrão de serviço do Amazon ECS

O coletor ADOT coleta o endpoint de metadados do ECS e coleta métricas de contêiner (como CPU, memória, rede e disco). Ao integrar o ADOT com o CloudWatch, você pode coletar, analisar e visualizar essas métricas diretamente do console do CloudWatch. O diagrama a seguir ilustra um mapa de fluxo de alto nível de como o ADOT SDK é usado para instrumentar seu aplicativo, como as métricas são coletadas pelo coletor ADOT e como o exportador EMF do CloudWatch envia essas métricas para o CloudWatch.

ADOT - data flow diagram

O coletor ADOT fornece uma configuração padrão pronta para uso que permite a coleta de métricas. A configuração padrão habilita o exportador do AWS EMF (awsemfexporter) no pipeline de métricas. Ele converte as métricas do OTEL em registros em lote do CloudWatch EMF antes de enviar para o CloudWatch. Agora, no console do CloudWatch, você pode consultar os registros, visualizar por meio de painéis e criar alarmes de métricas.

Você também pode personalizar o tipo de métrica que seu aplicativo hospedado no ECS pode enviar para o CloudWatch. Por exemplo, você pode coletar as seguintes métricas: ecs.task.memory.utilized, ecs.task.memory.reserved, ecs.task.cpu.utilized, ecs.task.cpu.reserved, ecs.task.network.rate.rx, ecs.task.network.rate.tx, ecs.task.storage.read.bytes e ecs.task.storage.write.bytes.

Depois que essas métricas forem disponibilizadas no CloudWatch, você poderá usá-las para configurar o escalonamento automático de suas tarefas de serviço do Amazon ECS.

Preços para o ADOT

Não há custo para usar o AWS Distro for OpenTelemetry. Você paga pelos rastreamentos, registros e métricas enviados ao CloudWatch. Com o CloudWatch, não há compromisso inicial nem taxa mínima. Você simplesmente paga pelo que usa. Consulte a página de preços do CloudWatch para obter mais detalhes.

Conclusão

Neste post, você aprendeu sobre as opções de escalabilidade nativas da AWS que podem ser aproveitadas para escalar seu serviço Amazon ECS. Empresas de vários tamanhos podem adotar essa abordagem para escalar o serviço Amazon ECS como parte de sua estratégia para manter uma experiência confiável e consistente para o usuário final. O mecanismo certo depende de considerações como agilidade de implantação, escalabilidade proativa/reativa/preditiva e preços.

Para obter mais informações, consulte o AWS Well-Architected Framework, as melhores práticas para executar seu aplicativo com o Amazon ECS e a segurança no Amazon Elastic Container Service. Estamos aqui para ajudar e, se você precisar de mais assistência, entre em contato com o AWS Support e sua equipe de contas da AWS.

Este blog é uma tradução do contéudo original em inglês (link aqui).

Biografia dos Autores

Arun Chandapillai é arquiteto sênior de nuvem e defensor da diversidade e inclusão. Ele é apaixonado por ajudar seus clientes a acelerar a modernização da TI por meio de estratégias de adoção da nuvem que priorizam os negócios e a criar, implantar e gerenciar aplicativos e infraestrutura na nuvem com sucesso. Arun é um entusiasta automotivo, palestrante ávido e filantropo que acredita em “você recebe (de volta) o que dá”.
Shak Kathirvel é arquiteto sênior de aplicativos em nuvem no AWS ProServe. Ele gosta de trabalhar com clientes e ajudá-los nos esforços de modernização e otimização de aplicativos, orientar suas estratégias de gerenciamento e governança da nuvem corporativa e migrar suas cargas de trabalho para a nuvem. Ele é apaixonado por arquitetura corporativa, tecnologias sem servidor e otimização de custos e uso da AWS. Ele adora seu trabalho por seus desafios e pela oportunidade de trabalhar com clientes e colegas inspiradores.

Biografia do Tradutor

Daniel Abib é arquiteto de soluções sênior na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem.

https://www.linkedin.com/in/danielabib/

Biografia do Revisor

Gustavo Carreira é Arquiteto de Soluções sênior na AWS, trabalhando na indústria de FSI. Sua experiência profissional com mais de 10 anos de experiência em Arquitetura e 7 anos com banco de dados relacional e infraestrutura. Atualmente ajuda os clientes na definição e planejamento de diversas soluções corporativas.

https://www.linkedin.com/in/gucarreira/