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:

O diagrama mostra o seguinte fluxo de trabalho:
O serviço Fargate usa sondagem longa do Amazon SQS para receber mensagens de uma fila do Amazon SQS.
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
Épicos
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Clonar o repositório do GitHub. | Clone o repositório sqs-fargate-ddb-cdk-go
| 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):
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. notaCaso 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. |
| Desenvolvedor de aplicativos |
| Tarefa | Descrição | Habilidades 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
| 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. |
| Desenvolvedor de aplicativos |
Verifique se o serviço Fargate está enviando mensagens para o CloudWatch Logs. |
notaO AWS CDK cria automaticamente o painel do CloudWatch em sua conta da AWS. | Desenvolvedor de aplicativos |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Exclua a pilha do AWS CDK. |
| 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:
O valor 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
Como configurar a AWS CLI (Guia do usuário da AWS CLI para versão 2)
Referência de API (referência de API do AWS CDK)
Documentação do AWS SDK para Go v2
(documentação do Go)