O blog da AWS
Implementando as melhores práticas do AWS Well-Architected para o Amazon SQS — Parte 1
O Amazon Simple Queue Service (Amazon SQS) é um serviço de filas de mensagens totalmente gerenciado que facilita a dissociação e a escalabilidade de microsserviços, sistemas distribuídos e aplicativos sem servidor. Os clientes da AWS descobriram constantemente novas maneiras poderosas de criar aplicativos mais escaláveis, elásticos e confiáveis usando o SQS. Você pode aproveitar o SQS em vários casos de uso que exigem acoplamento frouxo e alto desempenho em qualquer nível de produtividade, ao mesmo tempo em que reduz os custos pagando apenas pelo valor e mantendo a certeza de que nenhuma mensagem será perdida. Ao criar aplicativos com o Amazon SQS, é importante seguir as melhores práticas arquitetônicas.Para ajudar você a identificar e implementar essas melhores práticas, a AWS fornece o AWS Well-Architected Framework para projetar e operar sistemas confiáveis, seguros, eficientes, econômicos e sustentáveis na nuvem da AWS. Construído em torno de seis pilares — excelência operacional, segurança, confiabilidade, eficiência de desempenho, otimização de custos e sustentabilidade, o AWS Well-Architected fornece uma abordagem consistente para clientes e parceiros avaliarem arquiteturas e implementarem projetos escaláveis.Esta série de blogs em três partes aborda cada pilar do AWS Well-Architected Framework para implementar as melhores práticas para o SQS. Este post do blog, parte 1 da série, discute as melhores práticas usando o pilar de excelência operacional do AWS Well-Architected Framework.Veja também as outras duas partes da série:
- Implementando as melhores práticas do AWS Well-Architected para o Amazon SQS — Parte 2: Segurança e confiabilidade
- Implementando as melhores práticas do AWS Well-Architected para o Amazon SQS — Parte 3: eficiência de desempenho, otimização de custos e sustentabilidade
Visão geral da solução
Essa arquitetura de solução mostra um exemplo de sistema de gerenciamento de inventário. O sistema utiliza o Amazon Simple Storage Service (Amazon S3), o AWS Lambda, o Amazon SQS e o Amazon DynamoDB para agilizar as operações de inventário e garantir precisão do inventário. O sistema lida com atualizações frequentes de várias fontes, como fornecedores, armazéns e lojas de varejo, que são recebidas como arquivos CSV.
Esses arquivos CSV são então enviados para um bucket do S3, consolidando e protegendo os dados para acesso ao sistema de gerenciamento de inventário. O sistema usa uma função AWS Lambda para ler e analisar o arquivo CSV, extraindo registros individuais de atualização de inventário. A função Lambda de backend transforma cada registro de atualização de inventário em uma mensagem e o envia para uma fila do SQS. Outra função do AWS Lambda pesquisa continuamente a fila SQS em busca de novas mensagens. Ao receber uma mensagem, ele recupera os detalhes da atualização do inventário e atualiza adequadamente os níveis de inventário no DynamoDB.
Isso garante que as quantidades de estoque de cada produto sejam precisas e reflitam as alterações mais recentes. Dessa forma, o sistema de gerenciamento de estoque fornece visibilidade em tempo real dos níveis de estoque em diferentes locais e fornecedores, permitindo que a empresa monitore a disponibilidade do produto com precisão. Encontre o código de exemplo dessa solução no repositório do GitHub.
Esse exemplo é usado em toda esta série de blogs para destacar como as melhores práticas do Amazon SQS podem ser implementadas com base no AWS Well Architected Framework.
Pilar de excelência operacional
O Pilar de Excelência Operacional inclui a capacidade de apoiar o desenvolvimento e executar cargas de trabalho de forma eficaz, obter informações sobre suas operações e melhorar continuamente os processos e procedimentos de suporte para agregar valor comercial. Para alcançar a excelência operacional, o pilar recomenda as melhores práticas, como definir métricas de carga de trabalho e implementar a rastreabilidade das transações. Isso permite que as organizações obtenham informações valiosas sobre suas operações, identifiquem possíveis problemas e otimizem os serviços adequadamente para melhorar a experiência do cliente. Além disso, entender a integridade de um aplicativo é fundamental para garantir que ele esteja funcionando conforme o esperado.
Prática recomendada: use infraestrutura como código (IaC) para implantar o SQS
A infraestrutura como código (IaC) ajuda você a modelar, provisionar e gerenciar seus recursos de nuvem. Uma das principais vantagens do IaC é que ele simplifica o gerenciamento da infraestrutura. Com o IaC, você pode replicar seu ambiente de forma rápida e fácil para várias regiões da AWS com uma única solução pronta para uso. Isso facilita o gerenciamento de sua infraestrutura, independentemente de onde seus recursos estejam localizados. Além disso, o IaC permite que você crie, implante e mantenha a infraestrutura de forma programática, descritiva e declarativa de forma que possa ser repetida com facilidade. Isso reduz os erros causados por processos manuais, como a criação de recursos no AWS Management Console. Com o IaC, você pode controlar e acompanhar facilmente as mudanças em sua infraestrutura, o que facilita a manutenção e a solução de problemas de seus sistemas.
Para gerenciar recursos do SQS, você pode usar diferentes ferramentas de IaC, como o AWS Serverless Application Model (AWS SAM), o AWS CloudFormation ou o AWS Could Development Kit (AWS CDK). Também existem soluções de terceiros para criar recursos do SQS, como o Serverless Framework. O AWS CDK é uma escolha popular porque permite provisionar recursos da AWS usando linguagens de programação conhecidas, como Python, Java, TypeScript, Go, JavaScript e C#/.Net.
Esta série de blogs mostra o uso do AWS CDK com Python para demonstrar as melhores práticas para trabalhar com o SQS. Por exemplo, o código CDK da AWS a seguir cria uma nova fila do SQS:
Prática recomendada: configurar alarmes do CloudWatch para a idade aproximada da mensagem mais antiga (ApproximateAgeofOldestMessage)
É importante entender as métricas e dimensões do Amazon CloudWatch para SQS, ter um plano para avaliar seu comportamento e adicionar métricas personalizadas quando necessário. Depois de entender bem as métricas, é essencial identificar as principais que são mais relevantes para seu caso de uso e configurar alertas apropriados para monitorá-las.
Uma das principais métricas que o SQS fornece é a métrica ApproximateAgeOfOldestMessage
. Ao monitorar essa métrica, você pode determinar a idade da mensagem mais antiga na fila e tomar as medidas apropriadas para garantir que as mensagens sejam processadas em tempo hábil. Para configurar alertas para a métrica ApproximateOfOldestMessage
, você pode usar os alarmes do CloudWatch. Você configura esses alarmes para emitir alertas quando as mensagens permanecem na fila por longos períodos de tempo. Você pode usar esses alertas para agir, por exemplo, ampliando os consumidores para processar mensagens mais rapidamente ou investigando possíveis problemas com o processamento de mensagens.
No exemplo de gerenciamento de inventário, a utilização da métrica ApproximateAgeOfOldestMessage
fornece informações valiosas sobre a integridade e o desempenho da fila do SQS. Ao monitorar essa métrica, você pode detectar atrasos no processamento, otimizar o desempenho e garantir que as atualizações de inventário sejam processadas dentro do prazo desejado. Isso garante que seus níveis de inventário permaneçam precisos e atualizados. O código a seguir cria um alarme que é acionado se a solicitação de atualização de inventário mais antiga estiver na fila por mais de 30 segundos.
Prática recomendada: adicione um cabeçalho de rastreamento ao enviar uma mensagem para a fila para fornecer recursos de rastreamento distribuído para agilizar a solução de problemas
Ao implementar o rastreamento distribuído, você pode obter uma compreensão clara do fluxo de mensagens nas filas do SQS, identificar quaisquer gargalos ou possíveis problemas e reagir proativamente a qualquer sinal que indique um estado insalubre. O rastreamento fornece uma visão contínua mais ampla de um aplicativo e ajuda a acompanhar a jornada ou transação do usuário por meio do aplicativo.
O AWS X-Ray é um exemplo de uma solução de rastreamento distribuído que se integra ao Amazon SQS para rastrear mensagens que são passadas por uma fila do SQS. Ao usar o X-Ray SDK, o SQS pode propagar cabeçalhos de rastreamento para manter a continuidade do rastreamento e permitir rastreamento, análise e depuração em todos os serviços posteriores. O SQS suporta o rastreamento de cabeçalhos por meio do cabeçalho HTTP padrão e do atributo do sistema AWSTraceHeader
. O AWSTraceHeader
está disponível para uso mesmo quando a instrumentação automática por meio do X-Ray SDK não é, por exemplo, ao criar um SDK de rastreamento para um novo idioma. Se você estiver usando um consumidor Lambda downstream, a propagação do contexto de rastreamento é automática.
No exemplo de gerenciamento de inventário, ao utilizar o rastreamento distribuído com o X-Ray para SQS, você pode obter informações detalhadas sobre o desempenho, o comportamento e as dependências do sistema de gerenciamento de inventário. Essa visibilidade permite que você otimize o desempenho, solucione problemas com mais eficiência e garanta a operação suave e eficiente do sistema. O código a seguir configura uma função Lambda de processamento de CSV e uma função Lambda de processamento de backend com rastreamento ativo ativado. A função Lambda recebe automaticamente o X-Ray TraceID
do SQS.
Conclusão
Esta postagem do blog explora as melhores práticas para SQS com foco no pilar de excelência operacional do AWS Well-Architected Framework. Exploramos as principais considerações para garantir o bom funcionamento e o desempenho ideal dos aplicativos usando o SQS. Além disso, exploramos as vantagens da infraestrutura como código para simplificar o gerenciamento da infraestrutura e mostramos como o AWS CDK pode ser usado para provisionar e gerenciar recursos do SQS.
A próxima parte desta série de postagens no blog aborda o pilar de segurança e o pilar de confiabilidade do AWS Well-Architected Framework e explora as melhores práticas para o SQS.
Para obter mais recursos de aprendizado sem servidor, visite Serverless Land.
Este artigo foi traduzido do Blog da AWS em Inglês.
Sobre o autor
Chetan Makvana
Hardik Vasa
Tradutor
Daniel Abib é Enterprise Solution Architect 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.