Criando um serviço de processamento de arquivos na AWS

Criando um serviço de processamento de arquivos na AWS

Hoje vamos estudar um caso sobre uma empresa que está enfrentando sérios problemas com sua infraestrutura atual para processar arquivos largos de CSV.

O problema:

“Olá, somos a empresa Marcão Soldas, especializada em soldas e esquadrias.

Atualmente, nosso setor financeiro utiliza planilhas do Excel para gerenciar as folhas de pagamento de funcionários, prestadores de serviços e contas a pagar.

Nossa equipe está habituada ao Excel e não deseja migrar para outro sistema devido a algumas comodidades oferecidas pelas planilhas.

No entanto, percebemos que, devido ao aumento no número de funcionários, as rotinas de pagamento estão se tornando longas e cansativas, podendo levar até 2 dias para concluirmos todos os pagamentos. Isso resulta em alguns funcionários recebendo antes que outros, causando insatisfação.

Precisamos de um sistema onde possamos enviar nossa planilha do Excel com o valor que cada funcionário deve receber, juntamente com sua chave PIX, para realizar os pagamentos automaticamente.

Não queremos gerenciar nenhum aspecto da aplicação, seja em nuvem ou na tecnologia escolhida. Vocês estão livres para escolher a melhor opção, mas não queremos gastar muito com custos de nuvem.”

Após ler esse grande problema da Marcão Soldas, temos alguns pontos para resolver:

Criar um sistema que possibilite o envio de planilhas.
Um sistema que gerencie pagamentos e um gateway de pagamentos que possa realizar PIX.
Precisamos nos atentar aos custos que essa aplicação terá, já que nosso cliente não quer gastar muito.

Bom, tendo em vista todos esses requisitos, vamos parar para analisar alguns serviços de computação em nuvem da AWS.

Temos o EC2 e o Lambda. Porém, não queremos ter o trabalho de ficar orquestrando contêineres ou usar o Kubernetes para isso. Do outro lado, temos o Lambda, que executa pequenas funções em máquinas dedicadas e são auto-gerenciáveis, ou seja, não precisamos nos preocupar com infraestrutura ou escalabilidade.

Vamos usar também o API Gateway para receber o arquivo e salvá-lo em nosso bucket S3. Além disso, vamos utilizar o serviço de fila SQS para gerenciar os arquivos a serem processados e o SNS para ser um mensageiro quando precisarmos fazer um pagamento.

Então, nossa infraestrutura ficaria assim:

Vamos entender o que está acontecendo acima:

Nosso cliente envia seu arquivo para uma rota em nosso API Gateway, que salva esse arquivo em um bucket S3.
O Lambda recebe a notificação da criação desse arquivo e salva no DynamoDB algumas informações do arquivo, para servir como uma espécie de log.
Via DynamoDB Stream, enviamos uma notificação para outro Lambda, que será responsável por notificar nosso SQS para gerenciar uma fila de processamento de arquivos.
Nossa Lambda processa linha por linha do arquivo e captura as informações do recebedor, criando um tópico no SNS.
O SNS recebe a notificação e a envia para o Lambda responsável por criar a solicitação de pagamento no gateway.

Leave a Reply

Your email address will not be published. Required fields are marked *