- Descrição do projeto
- Requisitos não funcionais
- Tecnologias utilizadas
- Motivos da escolha das tecnologias
- Como rodar o projeto
Distributed-ecommerce é um projeto de ecommerce distribuído, onde o cliente pode realizar compras de variados produtos. o Principal objetivo do projeto é a aplicação de conceitos de sistemas distribuídos, como por exemplo, a utilização de um sistema de mensageria para comunicação entre os serviços.
- Segurança: A aplicação deve ser segura, garantindo que apenas usuários autenticados possam realizar compras.
- Disponibilidade: A aplicação deve estar disponível 24/7.
- Performance: A aplicação deve ser performática, garantindo que o usuário não tenha que esperar muito tempo para realizar uma compra.
- Escalabilidade: A aplicação deve ser escalável, garantindo que o sistema possa suportar um grande número de usuários.
- Persistência: A aplicação deve persistir os dados dos usuários e dos produtos.
- Heterogeneidade: A aplicação deve ser heterogênea, permitindo que os serviços sejam desenvolvidos em diferentes linguagens de programação.
-
Spring: O Spring é um framework que facilita o desenvolvimento de aplicações Java, além de ser um framework muito utilizado no mercado.
-
Gradle: O Gradle é uma ferramenta de automação de compilação, que permite a criação e gerenciamento de projetos Java.
-
NodeJS: O NodeJS é uma plataforma que permite a execução de código JavaScript fora do navegador, sendo muito utilizado para a criação de APIs.
-
Express: O Express é um framework para NodeJS que facilita a criação de APIs.
-
Nodemon: O Nodemon é uma ferramenta que permite a reinicialização automática de uma aplicação NodeJS sempre que um arquivo for alterado.
-
JWT: O JWT é um padrão de token que permite a autenticação de usuários em APIs.
-
Yarn: O Yarn é um gerenciador de pacotes para NodeJS.
-
Postgres: O Postgres é um banco de dados relacional muito utilizado no mercado.
-
MongoDB: O MongoDB é um banco de dados não relacional que além de ser muito utilizado no mercado, é uma ótima opção para utilização de serviços node.
-
RabbitMQ: O RabbitMQ é um sistema de mensageria que permite a comunicação entre serviços.
-
Docker: O Docker é uma plataforma que permite a criação e execução de containers.
-
Docker Compose: O Docker Compose é uma ferramenta responsável por gerenciar a execução de múltiplos containers.
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas:
Na raiz do projeto onde se encontra o arquivo docker-compose.yml
, execute o seguinte comando:
docker-compose up
Com isso, todos os serviços serão iniciados e estarão disponíveis nas seguintes portas:
Serviço | Porta |
---|---|
Auth API | 8082 |
Product API | 8081 |
Sales API | 8083 |
Auth DB | 5432 |
Product DB | 5433 |
Sales DB | 27017 28017 |
RabbitMQ | 15672 25676 5672 |