https://github.com/augustomello09/vinhoja
O Projeto VinhoJá é uma aplicação web desenvolvida utilizando as tecnologias Java, Spring boot 3+ e Angular. O projeto é feito em arquitetura de microsservice que seguem boas práticas como LoadBalance, Distributed Tracing, gataway, centralized configuration, centralized documentation, Docker, comunicação síncrona e assíncrona.
https://github.com/augustomello09/vinhoja
angular config-server docker java rabbitmq spring-boot swagger zipkin
Last synced: about 1 month ago
JSON representation
O Projeto VinhoJá é uma aplicação web desenvolvida utilizando as tecnologias Java, Spring boot 3+ e Angular. O projeto é feito em arquitetura de microsservice que seguem boas práticas como LoadBalance, Distributed Tracing, gataway, centralized configuration, centralized documentation, Docker, comunicação síncrona e assíncrona.
- Host: GitHub
- URL: https://github.com/augustomello09/vinhoja
- Owner: AugustoMello09
- License: mit
- Created: 2023-09-27T18:44:33.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-01T13:22:26.000Z (over 2 years ago)
- Last Synced: 2025-04-19T16:51:57.438Z (12 months ago)
- Topics: angular, config-server, docker, java, rabbitmq, spring-boot, swagger, zipkin
- Language: Java
- Homepage:
- Size: 591 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# VinhoJá
### Projeto FullStack: 🍇🍷
O Projeto VinhoJá é uma aplicação web desenvolvida utilizando as tecnologias Java, Spring boot 3+ e Angular. O objetivo do projeto é fornecer para uma plataforma de vinho um sistema onde os usuários possam comprar seus vinhos com segurança e tratamento personalizado. O projeto é feito em arquitetura de microsservice que seguem boas práticas como LoadBalance, Distributed Tracing, gataway, centralized configuration, centralized documentation, Docker, comunicação síncrona e assíncrona.
https://github.com/AugustoMello09/Locadora/assets/101072311/b490b3c7-200d-4a45-9ee7-7c9226a5de35
### Backend: ⚙️
## Arquitetura de Microsservices vinhoJá 🧱

#### Microsservice de cadastro de usuário (User Service): 👷♀️
- Responsável pelo cadastro e gerenciamento de informações do usuário, como nome e e-mail.
- Fornece endpoints para registro de novos usuários.
#### Microsservice de cadastro de cartão (Card Service): 💳
- Responsável pelo cadastro e gerenciamento de informações do cartão, como nome do cartão, número do cartão, data de validade e código de segurança.
- Fornece endpoints para registro de novos cartões.
#### Microsservice de pagamento (Payment Service): 💸
- Lida com informações financeiras, como detalhes do cartão de crédito, dados do usuário como nome e email.
- Fornece endpoints para fazer o processamento de pagamento.
- Se comunica com o a fila de emissão-pagamento.
#### Microsservice de email (Email Service): ✉️
- Fica responsável por escutar a fila de emissão-pagamento e enviar o Email de confirmação de compra agradecendo a pessoa.
## Fluxo entre Microsservices: 💫
- O User Service e o Card Service são responsáveis pelo cadastro de informações do usuário e do cartão, respectivamente. Esses serviços podem ser utilizados de forma independente para gerenciar perfis de usuário e detalhes do cartão.
- Quando um usuário realiza uma transação, o Payment Service é acionado. Ele utiliza as informações do usuário e do cartão para processar o pagamento.
- Após o processamento bem-sucedido, o Payment Service coloca uma mensagem na fila de emissão-pagamento para notificar o Email Service.
- O Email Service, ao escutar a fila de emissão-pagamento, envia automaticamente um e-mail de confirmação de compra ao usuário.

## comunicação entre microsservices:
### Fluxo com comunicação síncrona: 🔄
- Para o processamento ser bem-sucedido ele depende de dois parâmetros como o UUID do usuário e UUID do mesmo, para pegar esses dados é usado OpenFeign para esse tipo de comunicação.

### Fluxo com comunicação assíncrona: ⏱️
- Após o processamento bem-sucedido, o Payment Service coloca uma mensagem na fila de emissão-pagamento para notificar o Email Service e ele consome essa mensagem enviando para o endereço de e-mail informado.

## Documentação centralizada com Swagger: 📗
- Centralizamos a documentação do nosso sistema de pagamento usando Swagger, proporcionando uma visão unificada e acessível de todos os nossos serviços

https://github.com/AugustoMello09/Locadora/assets/101072311/7ccaf2f8-af35-44c9-9a45-6b7e29a93341
__Acesse a documentação do projeto:__
- __Acesse:__ http://localhost:8080/swagger-ui.html para visualizar os endpoints.
## Configuração centralizada com Config Service: ⚙️
- O serviço de Configuração Centralizada (Config Service) do projeto VinhoJá é uma parte essencial da arquitetura de microsservice. Ele é responsável por centralizar e gerenciar as configurações de todos os microsservices da aplicação.
__Acesse o repositório do config service:__
- __Acesse:__ https://github.com/AugustoMello09/vinhoja-config-server
## Distributed Tracing com ZIPKIN: 👁️🗨️
- Implementação Distributed Tracing no sistema utilizando o Zipkin, uma ferramenta poderosa para monitorar e analisar o fluxo de solicitações em ambientes distribuídos.

https://github.com/AugustoMello09/Locadora/assets/101072311/7877152b-9175-409f-854a-89f09f7ece97
__Acesse a documentação do projeto:__
- __Acesse:__ http://localhost:9411/zipkin/ para visualizar o Zipkin.
### Ferramentas e Tecnologias usadas no Back-end 🧱

## Execute o projeto 👁🗨
### Backend 🧱
__Pré-requisitos:__ Java 17 e Docker
__Clone o repositório do projeto__
~~~~~~
git clone https://github.com/AugustoMello09/VinhoJa.git
~~~~~~
### Configurando o projeto local 🏠
__Configurando o ambiente:__
- Navegue até o diretório do projeto
~~~~~~
cd vinhoJa/vinhoJa-Backend
~~~~~~
- Acesse todos os diretórios do projeto, utilize o comando mvn install para instalar todas as dependências necessárias:
~~~~~~
# exemplo
cd vinhoJa-Backend/users
./mvnw install
~~~~~~
- Acesse o diretório de cada microsserviço (por exemplo, User Service, Card Service).
Abra o arquivo de configuração application.yml.
- Modifique as configurações necessárias, como URLs dos serviços dependentes.
~~~~~~
management:
tracing:
sampling:
probability: 1.0
zipkin:
tracing:
endpoint: http://localhost:9411/api/v2/spans
///////////////////////////////////////////////////
config:
import: optional:configserver:http://localhost:8888
rabbitmq:
host: localhost
~~~~~~
__Senhas de App__
__Acesse a documentação do google:__
- __Acesse:__ https://support.google.com/accounts/answer/185833 para visualizar o como criar a senha de App.
- Tenha a verificação em duas etapas ativada.

- Acesse o local para criar a senha de App

- Crie a senha de App

- Acesse o diretório do microsservice email e coloque suas informações de email
`
🔴: o email com a verificação em duas etapas.
🟢: a senha de App que criou.
`

- Crie um network
~~~~~~
docker network create local
~~~~~~
- Suba o container do serviço ZIPKIN e Rabbitmqp
~~~~~~
docker run -d -p 9411:9411 --net local --name zipkin openzipkin/zipkin:latest
docker run -d -it --rm --name rabbitmq --net local -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management
~~~~~~
- Acesse o rabbit para criar a fila de emissao-pagamento
- __Acesse:__ http://localhost:15672/ para visualizar o Rabbitmq.

- Suba os microsservices na seguinte ordem:
`config-service, euraka-service, gateway e etc...`
~~~~~~
# Exemplo para o User Service
cd user-service
./mvnw spring-boot:run
~~~~~~
### Configurando o projeto para usar Docker-compose 🐳
__Executar com Docker-compose:__
- Navegue até o diretório do projeto
~~~~~~
cd vinhoJa/vinhoJa-Backend
~~~~~~
- Acesse todos os diretórios do projeto, utilize o comando mvn install para instalar todas as dependências necessárias:
~~~~~~
# exemplo
cd vinhoJa-Backend/users
./mvnw install
~~~~~~
- Acesse o diretório de cada microsserviço (por exemplo, User Service, Card Service).
Abra o arquivo de configuração application.yml.
- Modifique as configurações necessárias, como URLs dos serviços dependentes.
~~~~~~
management:
tracing:
sampling:
probability: 1.0
zipkin:
tracing:
endpoint: http://zipkin-service:9411/api/v2/spans
///////////////////////////////////////////////////
config:
import: optional:configserver:http://config-service:8888
///////////////////////////////////////////////////
rabbitmq:
host: rabbit-mq // nome do serviço lá no docker-compose
~~~~~~
- Navegue até o local do arquivo docker-compose.yml e suba
~~~~~~
cd vinhoJa-Backend
docker-compose up -d
~~~~~~
- __ATENÇÃO__: a primeira vez que sobe o conteiner da o seguinte erro:
`dependency failed to start: container config-service is unhealthy`.
- Acesse o rabbit para criar a fila de emissao-pagamento

- Suba o docker-compose novamente.
~~~~~~
cd vinhoJa-Backend
docker-compose up -d
~~~~~~
### Frontend 🌐
__Pré-requisitos:__ Angular
__Executar__
- Certifique-se de ter o Node.js e o Angular CLI instalados em seu ambiente.
- Navegue até a pasta do projeto front-end:
~~~~~~
cd vinhoJa/vinhoJa-Frontend
~~~~~~
__Instale as dependências do projeto:__
~~~~~~
npm install
~~~~~~
__Inicie a aplicação:__
~~~~~~
ng serve
~~~~~~
__ATENÇÃO__ : não use os dados do cartão de crédito real.
- __Acesse:__ https://www.4devs.com.br/gerador_de_numero_cartao_credito para gerar os dados do cartão.
### Ferramentas e Tecnologias usadas no Frontend ⚙️

### Entre em contato
Para mais informações sobre o projeto ou para entrar em contato, você pode me encontrar através dos canais abaixo: