Repositório contendo o projeto desenvolvido do curso Autenticação Stateful e Stateless em Microsserviços, ministrado por mim para a plataforma Udemy.
Para acessar o curso na plataforma, basta acessar esta URL: https://www.udemy.com/course/autenticacao-stateful-stateless-microsservicos/
- Java 17
- Spring Boot 3
- API REST
- PostgreSQL (Container)
- Docker
- docker-compose
- JWT
No curso, desenvolveremos a seguinte aquitetura:
- Serão desenvolvidos 2 projetos, o projeto
stateless
e o projetostateful
. - Cada projeto terá 2 aplicações, totalizando 4 APIs.
- Em cada projeto, teremos a API de Auth, responsável por gerar o token.
- Em cada projeto, teremos a API chamada Any, responsável por retornar uma informação, qualquer, que irá apenas simular um microsserviço aleatório que precisa validar o token.
- Na arquitetura
stateful
, será utilizado o banco de dados NoSQL Redis para armazenar os tokens.
Existem três maneiras de rodar todos os projetos, via script utilitário que deixei para auxiliar no desenvolvimento, manualmente ou via docker-compose.
Obs: independente da maneira que você queira rodar, será necessário realizar o build
das aplicações com o comando gradle build
na raiz de cada aplicação, para poder criar suas imagens, ou seja, será necessário ter o Docker e o Gradle instalado.
Para rodar tudo com o script, basta executar o comando:
python build.py
Para isso, será necessário ter o Python 3 instalado.
O script fará todos os seguintes processos:
- Parará e apagará todos os containers rodando.
- Entrará no diretório de cada uma das 4 APIs e rodará o comando
gradle build
em paralelo para não levar muito tempo realizando sequencialmente. - Irá aguardar o build de cada API finalizar.
- Assim que todos os builds finalizarem, então irá executar todos os containers novamente.
Para rodar as aplicações, será necessário ter instalado:
- Docker
- Java 17
- Gradle 7.6 ou superior
Para rodar as aplicações, você pode rodar diretamente via IDE, ou também, pode executar o comando: gradle bootRun
na raiz de cada aplicação. Realizar o build antes.
Para executar tudo, basta executar o arquivo docker-compose.yml
com o comando:
docker-compose up --build -d
Lembrando que será necessário realizar o build das aplicações na primeira vez que for executar o docker-compose, ou a cada nova alteração, para que seja sempre construída uma imagem com as últimas alterações.
Será possível acessar as aplicações via Swagger
ou via Postman
.
Caso queira executar via Postman
, basta realizar o download da Collection
, e importar em seu Postman
.
Os acessos de host e porta das aplicações são:
- stateless-auth-api: http://localhost:8080/swagger-ui/index.html
- stateless-any-api: http://localhost:8081/swagger-ui/index.html
- stateful-auth-api: http://localhost:8082/swagger-ui/index.html
- stateful-any-api: http://localhost:8083/swagger-ui/index.html
Exemplos de acesso:
Os acessos de host e porta dos bancos de dados são:
- stateless-auth-db (PostgreSQL): localhost:5432
- stateful-auth-db (PostgreSQL): localhost:5433
- token-redis (Redis): localhost:6379