Esse repositório serve como agregador dos serviços que compõe o catalog-system
O catalog-system é um sistema desenvolvido para gerenciar catálogos de produtos para estabelecimentos comerciais. Ele permite que os donos dos estabelecimentos cadastrem e atualizem categorias e produtos via API. Todas as alterações feitas nos catálogos são automaticamente enviadas para uma fila, que é monitorada por um consumidor. Este consumidor atualiza ou cria um documento correspondente no AWS S3, garantindo que o catálogo esteja sempre atualizado e disponível aos consumidores.
Este projeto foi pensado para aplicar conhecimentos de Spring, Mongodb, mensageria e AWS Cloud
O sistema é composto por três principais componentes:
- catalog-api: Interface RESTful que permite o cadastro e a atualização de donos, categorias e produtos.
- Base de dados Mongodb: Base de dados do sistema que recebe atualizações da api e é lido pelo consumer.
- Mensageria com AWS SQS/SNS: As alterações nos catálogos são publicadas em uma fila SQS, que é então processada por um consumidor.
- catalog-consumer: As mensagens publicadas na fila são lidas por este sistema, lê as atualizações no banco de dados e publica o catalogo atualizado no bucket do S3.
- Armazenamento no AWS S3: O consumidor lê as mensagens da fila e atualiza um documento no AWS S3, refletindo o estado atual do catálogo.
Cada componente do projeto é mantido em um repositório separado, mas este repositório principal serve como ponto de entrada para o projeto como um todo.
- Spring Framework: Utilizado para gerenciamento de dependências e criação de uma arquitetura modular.
- MongoDB: Banco de dados NoSQL usado para armazenar informações dos catálogos.
- AWS SQS: Serviço de fila da AWS usado para gerenciar mensagens entre a API e o consumidor.
- AWS SNS: Serviço de notificação utilizado para envio de mensagens para a fila.
- AWS S3: Serviço de armazenamento utilizado para salvar os documentos de catálogo.