Skip to content

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.

License

Notifications You must be signed in to change notification settings

AugustoMello09/VinhoJa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

2023-11-16-13-12-00.mp4

Backend: ⚙️

Arquitetura de Microsservices vinhoJá 🧱

arquitetura

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.

fluxovinho

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.

si

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.

as

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

swagger

2023-11-11-12-06-08.mp4

Acesse a documentação do projeto:

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:

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.

zip

2023-11-11-12-03-15.mp4

Acesse a documentação do projeto:

Ferramentas e Tecnologias usadas no Back-end 🧱


Augusto-Java Augusto-SpringBoot Augusto-POSTGRESQL Augusto-Rabbitmq Augusto-Docker Augusto-Java

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:

1

  • Acesse o local para criar a senha de App

Screenshot_3

  • Crie a senha de App

Screenshot_2

  • 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.

email

  • 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.

criarfila

  • 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

criarfila

  • 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.

Ferramentas e Tecnologias usadas no Frontend ⚙️


Augusto-HTML Augusto-CSS Augusto-JAVASCRIP Augusto-TYPESCRIPT Augusto-ANGULAR

Entre em contato

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

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published