Executar workloads orientadas por mensagens em grande escala usando o AWS Fargate - Recomendações da AWS

Executar workloads orientadas por mensagens em grande escala usando o AWS Fargate

Stan Zubarev, Amazon Web Services

Resumo

Este padrão mostra como executar workloads orientadas por mensagens em grande escala na Nuvem AWS usando contêineres e o AWS Fargate.

O uso de contêineres para processar dados pode ser útil quando a quantidade de dados que um aplicativo processa excede as limitações dos serviços de computação de tecnologia sem servidor baseados em perfis. Por exemplo, se um aplicativo exigir mais capacidade computacional ou tempo de processamento do que o AWS Lambda oferece, o uso do Fargate pode melhorar o desempenho.

O exemplo de configuração a seguir usa o AWS Cloud Development Kit (AWS CDK) em TypeScript para configurar e implantar os seguintes recursos na Nuvem AWS:

  • Um serviço Fargate

  • Uma fila do Amazon Simple Queue Service (Amazon SQS)

  • Uma tabela do Amazon DynamoDB.

  • Um painel do Amazon CloudWatch

O serviço Fargate recebe e processa mensagens da fila do Amazon SQS e as armazena na tabela do Amazon DynamoDB. Você pode monitorar quantas mensagens do Amazon SQS são processadas e quantos itens do DynamoDB são criados pelo Fargate usando o painel do CloudWatch.

nota

Além disso, é possível usar o código de exemplo correspondente a este padrão para criar workloads de processamento de dados mais complexos em arquiteturas orientadas a eventos com tecnologia sem servidor. Para obter mais informações, consulte Execute workloads agendadas e orientadas por eventos em grande escala com o AWS Fargate.

Pré-requisitos e limitações

Pré-requisitos 

  • Uma conta AWS ativa

  • A versão mais recente da AWS Command Line Interface (AWS CLI), instalada e configurada em seu computador local

  • O Git, instalado e configurado em sua máquina local

  • O AWS CDK, instalado e configurado em sua máquina local

  • Go, instalado e configurado em sua máquina local

  • Docker, instalado e configurado em sua máquina local.

Arquitetura

Pilha de tecnologias de destino  

  • Amazon SQS

  • AWS Fargate

  • Amazon DynamoDB

Arquitetura de destino 

O diagrama a seguir mostra um exemplo de fluxo de trabalho para executar workloads orientadas por mensagens em grande escala na Nuvem AWS usando o Fargate:

Exemplo de fluxo de trabalho para workloads orientadas por mensagens

O diagrama mostra o seguinte fluxo de trabalho:

  1. O serviço Fargate usa sondagem longa do Amazon SQS para receber mensagens de uma fila do Amazon SQS.

  2. Em seguida, o serviço Fargate processa as mensagens do Amazon SQS e as armazena em uma tabela do DynamoDB.

Automação e escala

Para automatizar o ajuste de escala da contagem de tarefas do Fargate, é possível configurar o Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling. É uma prática recomendada configurar a política de ajuste de escala com base no número de mensagens visíveis na fila do Amazon SQS do seu aplicativo.

Para obter mais informações, consulte Escalabilidade baseada no Amazon SQS no Manual do usuário do Amazon EC2 Auto Scaling.

Ferramentas

Serviços da AWS

  • O AWS Fargate ajuda a executar contêineres sem precisar gerenciar servidores ou instâncias do Amazon Elastic Compute Cloud (Amazon EC2). É usado em conjunto com o Amazon Elastic Container Service (Amazon ECS).

  • O Amazon Simple Queue Service (Amazon SQS) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.

  • O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.

  • O Amazon CloudWatch monitora seus recursos da AWS e as aplicações que você executa na AWS em tempo real.

código

O código para este padrão está disponível no repositório sqs-fargate-ddb-cdk-go do GitHub.

Épicos

TarefaDescriçãoHabilidades necessárias

Clonar o repositório do GitHub.

Clone o repositório sqs-fargate-ddb-cdk-go do GitHub na sua máquina local executando o seguinte comando:

git clone https://github.com/aws-samples/sqs-fargate-ddb-cdk-go.git

Desenvolvedor de aplicativos

Verifique se a AWS CLI está configurado para a conta correta da AWS e se a CDK da AWS tem as permissões necessárias.

Para verificar se as configurações da AWS CLI estão corretas, é possível executar o seguinte comando Is do Amazon Simple Storage Service (Amazon S3):

aws s3 ls

Esse procedimento também exige que o AWS CDK tenha permissões para provisionar a infraestrutura em sua conta da AWS. Para conceder as permissões necessárias, você deve criar um perfil AWS nomeado na AWS CLI e exportá-lo como uma variável de ambiente AWS_PROFILE.

nota

Caso ainda não tenha usado o AWS CDK em sua conta da AWS, você deve inicialmente provisionar os recursos necessários do AWS CDK. Para obter mais informações, consulte Inicializar no Guia do desenvolvedor do AWS CDK v2.

Desenvolvedor de aplicativos

Implante a pilha da AWS CDK em sua conta da AWS.

  1. Compile uma imagem de contêiner executando o seguinte comando da AWS CLI:

    docker build -t go-fargate .

  2. Abra o diretório da AWS CDK executando o seguinte comando:

    cd cdk

  3. Instale os módulos npm necessários executando o seguinte comando:

    npm i

  4. Implante o padrão da AWS CDK em sua conta da AWS executando o seguinte comando:

    cdk deploy --profile ${AWS_PROFILE}

Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Envie uma mensagem de teste para a fila do Amazon SQS.

Para obter instruções, consulte Enviar mensagens para uma fila (console) no Guia do desenvolvedor do Amazon SQS.

Exemplo de mensagem de teste do Amazon SQS

{ "message": "hello, Fargate" }
Desenvolvedor de aplicativos

Verifique se a mensagem de teste aparece nos registros do CloudWatch do serviço Fargate.

Siga as instruções em Visualização do CloudWatch Logs no Guia do desenvolvedor do Amazon ECS. Certifique-se de revisar os logs do grupo de logs go-fargate-service no cluster ECS go-service-cluster.

Desenvolvedor de aplicativos

Verifique se a mensagem de teste aparece na tabela do DynamoDB.

  1. Abra o console do DynamoDB.

  2. No painel de navegação à esquerda, selecione Tables (Tabelas). Em seguida, selecione a tabela a seguir na lista: sqs-fargate-ddb-table.

  3. Escolha Explore table items (Explorar itens da tabela).

  4. Verifique se a mensagem de teste aparece na lista Itens devolvidos.

Desenvolvedor de aplicativos

Verifique se o serviço Fargate está enviando mensagens para o CloudWatch Logs.

  1. Abra o console do CloudWatch.

  2. No painel de navegação à esquerda, escolha Painéis.

  3. Na lista de painéis personalizados, selecione o painel chamado go-service-dashboard.

  4. Verifique se a mensagem de teste aparece nos logs.

nota

O AWS CDK cria automaticamente o painel do CloudWatch em sua conta da AWS.

Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Exclua a pilha do AWS CDK.

  1. Abra o diretório do AWS CDK na AWS CLI executando o seguinte comando:

    cd cdk

  2. Exclua a pilha do AWS CDK executando o seguinte comando:

    cdk destroy --profile ${AWS_PROFILE}

Desenvolvedor de aplicativos

Verifique se a pilha do AWS CDK foi excluída.

Para garantir que a pilha foi excluída, execute o seguinte comando:

aws cloudformation list-stacks --query \ "StackSummaries[?contains(StackName,'SqsFargate')].StackStatus" \ --profile ${AWS_PROFILE}

O valor StackStatus retornado na saída do comando é DELETE_COMPLETE se a pilha foi excluída.

Para obter mais informações, consulte Exemplos de comandos de operação de pilha do CloudFormation para a AWS CLI e o PowerShell no Guia do usuário do AWS CloudFormation.

Desenvolvedor de aplicativos

Recursos relacionados