Bem-vindo ao nosso projeto de back-end de microsserviços com spring-boot e spring-cloud, para criar uma arquitetura escalável e altamente disponível.
Há oito microsserviços, cada um com uma tarefa específica:
Discoverymantém o registro dos microsserviços disponíveis.Gatewayé o ponto de entrada para requisições do usuário.Authautentica usuários.Paymentprocessa pagamentos.Rentgerencia aluguéis.Schedulingagenda tarefas.CrudServicefornece operações básicas de CRUD.
Cada microsserviço pode ser desenvolvido, testado e implementado de forma independente, tornando o sistema mais flexível e fácil de manter.
1. Baixe e instale o MySQL, após isto necessário 6 bases de dados criadas
crud-serviceaquisitionauth_dbpaymentrent_dbscheduling
2. Alternativa, executar o docker-compose-dev.yml, onde que contém o serviço do mysql
- 1: Baixe e instale o Docker Desktop
- 2: Inicie o Docker Desktop
- 3: Abra o PowerShell, navegue até o diretório onde se encontra o projeto, por exemplo:
C:user\documents\GitHub\backend - 4: Execute o docker-compose, com o comando
- 5:
docker-compose -f docker-compose-dev.yml up
➡️ Pode abrir o MySQL com HeidiSQL- 1: Baixe e instale o HeidiSQL
- 2: Inicie o HeidiSQL e clique em "File" > "New Session" para criar uma nova conexão com o banco de dados.
- Na tela de nova sessão, preencha os seguintes campos:
- a: Hostname: localhost ou o endereço IP da máquina que está executando o serviço do Docker
- b: User: o nome de usuário configurado para o serviço MySQL no arquivo docker-compose
- c: Password: a senha configurada para o serviço MySQL no arquivo docker-compose
- d: Port: a porta configurada para o serviço MySQL no arquivo docker-compose (padrão é 3306)
- 3: Clique em "Open" para conectar ao banco de dados.
- Para instalar o RabbitMQ no Windows, você precisa seguir os seguintes passos:
- 1: Baixe e instale o Erlang para Windows na sua máquina: Erlang
- 2: Baixe e instale o RabbitMQ para Windows na sua máquina: RabbitMQ
- 3: Inicie o RabbitMQ Server na sua máquina.
- 4: Abra o prompt de comando e use o seguinte comando para acessar o RabbitMQ Management:
rabbitmq-plugins enable rabbitmq_management - 5: Acesse a interface web do RabbitMQ Management em seu navegador
- URL: http://localhost:15672/
- (padrão é usuário "guest" e senha "guest").
➡️ Agora, para criar as filas na aplicação de cada microsserviço, você pode seguir os seguintes passos:
- 1: Acesse a interface gráfica do RabbitMQ Management através do navegador.
- 2: Faça login na plataforma, se necessário.
- 3: Selecione a aba "Exchanges".
- 4: Clique no nome do exchange definido no arquivo "application.yml" dos microsserviços, no exemplo "crud.exchange".
- 5: Clique na aba "Bindings" e depois em "Add Binding".
- 6: Selecione o tipo de exchange adequado, por exemplo "Direct" ou "Topic".
- 7: No campo "Queue", selecione a fila que deseja adicionar ao exchange, por exemplo "auth.signup" ou "crud.acquisition.property".
- 8: Preencha o campo "Routing Key" com a routing key definida no arquivo "application.yml" do microsserviço correspondente.
- 9: Clique em "Add binding" para criar o binding entre o exchange e a fila.
- 10: Repita os passos 5 a 9 para cada fila que deseja adicionar ao exchange, com suas respectivas routing keys e configurações, conforme especificado em cada arquivo "application.yml" dos microsserviços
👨🏻🏫 Tutorial da instalação do RabbitMQ:
You Tube
👨🏻🏫 Tutorial de cadastro de fila no RabbitMQ:
You Tube 1 ou
You Tube 2
4. Alternativa executar o docker-compose-dev.yml, onde que contém o serviço do rabbitmq
- 1: Inicie o Docker Desktop
- 2: Abra o PowerShell, navegue até o diretório onde se encontra o projeto, por exemplo:
C:user\documents\GitHuB\backend - 3: Execute o docker-compose, com o comando
- 4:
docker-compose -f docker-compose-dev.yml up - 5: Acesse a interface web do RabbitMQ Management em seu navegador
- URL: http://localhost:15672/
- (padrão é usuário "admin" e senha "admin"), definido no arquivo rabbitmq.config
- OBS: As Exchanges e Queues são criadas automáticas pelo arquivo de definições RabbitMQ Definitions
O Dockerfile é um arquivo de configuração que permite que você crie uma imagem personalizada do Docker para sua aplicação.
- O Dockerfile fornecido tem duas etapas (FROM) para criar uma imagem:
- A primeira etapa usa a imagem do Maven para compilar o código-fonte da aplicação. Ele copia o arquivo pom.xml e o diretório src para um diretório de trabalho no container, em seguida, executa o comando 'mvn package' para criar o arquivo jar.
- A segunda etapa usa a imagem do OpenJDK para criar um container que executará a aplicação. Ele copia o arquivo jar criado na primeira etapa para a imagem final e define a porta em que a aplicação estará em execução. Em seguida, define o comando de entrada para iniciar a aplicação no container, especificando o perfil 'docker-demo'.
O Dockerfile permite criar uma imagem que encapsula todas as dependências necessárias e configurações para executar a aplicação, o que facilita a implantação e o gerenciamento da aplicação em diferentes ambientes.
- 1: O arquivo docker-compose-dev.yml contém a definição dos serviços MySQL e RabbitMQ para o ambiente de desenvolvimento. Esses serviços são executados como contêineres do Docker e podem ser gerenciados por meio desse arquivo.
- 2: O arquivo docker-compose-sonar.yml define a configuração do SonarQube e sua base de dados correspondente. O SonarQube é uma ferramenta de análise de código aberto que ajuda a detectar problemas de qualidade de código.
- 3: O arquivo docker-compose-deploy.yml contém as definições para implantar as imagens dos microserviços e o banco de dados, juntamente com o RabbitMQ, em um ambiente de produção. Esse arquivo é usado para gerenciar a implantação de aplicativos em contêineres do Docker em um ambiente de produção.
Este pipeline Jenkinsfile é definido em uma linguagem de script para a ferramenta Jenkins. Ele tem vários estágios para compilar, testar e implantar dois serviços diferentes:
- Discovery e Rent
- O estágio de "Build Discovery" verifica o código-fonte no repositório do GitHub, compila o código-fonte usando o Maven e empacota em um arquivo WAR.
- Em seguida, o estágio "Deploy Discovery" implanta o serviço no servidor Tomcat local.
- O estágio "Build Rent" compila o código-fonte do serviço Rent.
- O estágio "Unit Tests-Rent" executa os testes unitários para o serviço Rent.
- O estágio "Sonar Analysis" executa a análise de código-fonte usando o SonarQube do docker-compose docker-compose-sonar.yml.
- O estágio "Deploy Rent" implanta o serviço Rent no servidor Tomcat.
- Finalmente, o estágio "API Test-Rent" executa testes de API em um projeto de teste separado.
Os links estão disponíveis na documentação para auxiliar o desenvolvedor, porém itens como login e senha devem ser consultados nos arquivos de propriedade da aplicação.
| Nome | Link |
|---|---|
| Swagger | http://localhost:8081/crudService/swagger-ui.html# |
| RabbitMQ | http://localhost:15672/#/ |
| Aplicação | Porta | context-path | EndPoint |
|---|---|---|---|
| discovery | 8087 | /discovery | http://localhost:8087/discovery/* |
| acquisition | 8084 | /acquisitionService | http://localhost:8084/acquisitionService/* |
| auth | 8083 | /authService | http://localhost:8083/authService/* |
| CrudService | 8081 | /crudService | http://localhost:8081/crudService/* |
| gateway | 8080 | /gateway | http://localhost:8080/gateway/* |
| payment | 8082 | /paymentService | http://localhost:8082/paymentService/* |
| rent | 8085 | /rentService | http://localhost:8085/rentService/* |
| scheduling | 8086 | /schedulingService | http://localhost:8086/schedulingService/* |
| Tecnologia | Versão |
|---|---|
| 🐬MySQL | 8.0.23 |
| 🍃Spring Boot | 2.4.2 |
| 📺Netflix Eureka | 1.10.11 |
- O front-end encontra-se em outro repositório. GitHub














