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.
2023-11-16-13-12-00.mp4
- 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.
- 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.
- 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.
- Fica responsável por escutar a fila de emissão-pagamento e enviar o Email de confirmação de compra agradecendo a pessoa.
-
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.
- 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.
- 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.
- 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
2023-11-11-12-06-08.mp4
Acesse a documentação do projeto:
- Acesse: http://localhost:8080/swagger-ui.html para visualizar os endpoints.
- 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:
- 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.
2023-11-11-12-03-15.mp4
Acesse a documentação do projeto:
- Acesse: http://localhost:9411/zipkin/ para visualizar o Zipkin.
Pré-requisitos: Java 17 e Docker
Clone o repositório do projeto
git clone https://github.com/AugustoMello09/VinhoJa.git
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
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
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.
Para mais informações sobre o projeto ou para entrar em contato, você pode me encontrar através dos canais abaixo: