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:
Discovery
mantém o registro dos microsserviços disponíveis.Gateway
é o ponto de entrada para requisições do usuário.Auth
autentica usuários.Payment
processa pagamentos.Rent
gerencia aluguéis.Scheduling
agenda tarefas.CrudService
fornece 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-service
aquisition
auth_db
payment
rent_db
scheduling
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