Skip to content

This project implements a complete order processing system based on serverless architecture on AWS.

Notifications You must be signed in to change notification settings

Jezebel1990/aws-serverless-order-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

📦 Sistema de Processamento de Pedidos

📌 Sobre o Projeto

Este projeto implementa um sistema completo de processamento de pedidos baseado em arquitetura serverless na AWS. Foi desenvolvido durante a Semana do Desenvolvedor AWS da Escola da Nuvem, integrando diversos serviços AWS para criar um pipeline robusto, escalável e resiliente.

A aplicação recebe pedidos via API REST e upload de arquivos JSON, valida os dados, publica eventos no EventBridge, processa-os através de funções Lambda e persiste os resultados no Amazon DynamoDB. Além disso, o sistema implementa rastreamento, notificações automáticas, tratamento de erros via Dead Letter Queues (DLQs) e suporte a operações adicionais como alteração e cancelamento de pedidos.

🏗️ Arquitetura

Arquitetura

A arquitetura foi construída em 4 aulas progressivas, cada uma adicionando novas capacidades ao sistema:

Aula 1: Ingestão de Pedidos via API

  • API Gateway como endpoint REST para recebimento de pedidos
  • Lambda de pré-validação para verificação inicial dos dados
  • SQS FIFO Queue para garantir ordenação e desacoplamento
  • Lambda de validação para processamento detalhado
  • EventBridge Custom Bus para publicação de eventos

Aula 2: Ingestão de Arquivos via S3

  • S3 Bucket como data lake para recebimento de arquivos JSON
  • SQS Standard Queue para notificações de novos arquivos
  • Lambda de validação de arquivos para extração e transformação
  • DynamoDB para rastreamento do histórico de processamento
  • SNS para notificações de erro na validação

Aula 3: Processamento Central e Persistência

  • EventBridge Rules para roteamento de eventos
  • SQS Standard Queue como buffer de processamento
  • Lambda de processamento para lógica de negócios
  • DynamoDB como banco principal de pedidos

Aula 4: Fluxos Adicionais e Tratamento de Erros

  • Fluxos de cancelamento e alteração de pedidos
  • DLQs (Dead Letter Queues) para todas as filas
  • Lambdas especializadas para operações específicas
  • Testes de resiliência e tratamento de erros

🛠️ Tecnologias Utilizadas

Linguagem:

Compute:

Integração:

Armazenamento:

Segurança:

Monitoramento:

🧪 Testes Realizados

  • Envio de pedidos via API → Lambda + SQS FIFO + EventBridge.
  • Upload de arquivos JSON no S3 → SQS + Lambda + DynamoDB.
  • Persistência de pedidos no DynamoDB.
  • Simulação de erros → DLQs acionadas corretamente.
  • Eventos de cancelamento e alteração funcionando com atualização em tempo real.

🔧 Como Executar o Projeto

Pré-requisitos

  • Conta AWS com permissões adequadas.
  • AWS CLI configurado.
  • Python 3.9+ para desenvolvimento local.

Deployment

O projeto foi implementado manualmente via Console AWS seguindo a documentação detalhada das aulas, mas pode ser adaptado para Infrastructure as Code usando CloudFormation ou Terraform.

Criação do Ponto de Entrada (Amazon API Gateway) API Gateway

Regras no EventBridge para alterar pedidos, cancelar pedidos e rotear eventos de novos pedidos validados EventBridge

Notificação de erro no arquivo da tabela DynamoDB DynamoDB

Log de notificação de erro no CloudWatch Log

Função Lambda acionada para simular a lógica de "processamento do pedido" Lambda

Tabela DynamoDB principal para armazenamento de estado com detalhes dos pedidos processado e cancelado DynamoDB Principal

IAM Role para Lambdas de Alteração/Cancelamento IAM

Amazon SQS DLQ para cancelamento de pedidos SQS DLQ

Amazon SQS Queue para cancelamento de pedidos SQS Queue

Teste Forçado para DLQ Teste Forçado

Log com causa do erro para Teste Forçado Log com erro

📊 Resultados Alcançados

  • Escalabilidade: Utilização de arquitetura event-driven.
  • Alta Disponibilidade: Totalmente gerenciado pela AWS.
  • Observabilidade: Logs centralizados no CloudWatch.
  • Resiliência: Uso de DLQs para tratamento de falhas.

Feito com ♥ por Jezebel Guedes 👋 Entre em contato!

About

This project implements a complete order processing system based on serverless architecture on AWS.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published