O projeto é a construção de um Web Service utilizando a linguagem Java versão 17 e o framework SpringBoot versão 3 para uma Loja. O objetivo foi criar uma aplicação backend utilizando as boas práticas e o padrão API Rest, possibilitando através dos seus endpoints realizar as operações CRUD para as principais entidades da base de dados: usuários, produtos, categorias e pedidos.
Características do projeto:
- Lógica de camadas.
- API no padrão REST.
- Documentação completa com ferramenta SpringDoc Open Api (Swagger).
- Perfil de teste (utilizado banco de dados em memória H2 para facilitação do desenvolvimento).
- Perfil de homologação (utilização de Docker com banco de dados Postgresql e ferramenta pgAdmin).
- Perfil de produção (utilização de ferramenta Render e deploy de imagem da aplicação e banco executando em nuvem).
Por utilizar 3 perfis o projeto possibilita aplicar diferentes ferramentas e técnicas, para a construção de uma aplicação que utiliza a lógica de camadas (Recursos, Serviços e Repositórios).
A ilustração acima que detalha como funciona a comunicação e transmissão de dados entre as camadas da aplicação. Uma aplicação que irá consumir a API, como por exemplo o navegador Google Chrome, Postman ou outros realiza a requisição a camada de recursos (Resource Layer), essa camada onde tem os controladores Rest, essas classes irão realizar a chamada do método especifico para uma classe de serviço (Service Layer), e este por fim utiliza a uma interface específica (repository) para ter acesso aos dados (Data Access Layer). Também temos as classes entidades que fornecem o modelo dos dados conforme o seu tipo.
O diagrama UML (Unified Modeling Language) acima ilustra os aspectos do sistema como relacionamentos, comportamento, estrutura e funcionalidade. Inicialmente podemos destacar que o projeto possui 6 classes principais com relacionamentos entre si. Temos um Enumeração que representa o status do pedido de forma fixa.
Abaixo temos todas as tecnologias/ferramentas utilizadas durante o desenvolvimento da aplicação.
Durante o processo de desenvolvimento diferentes ferramentas foram aplicadas para facilitar a codificação, testes e uso. Durante o processo de teste, foi utilizado o banco de dados em memória H2 para gerar um banco volátil durante a execução do projeto localmente.
Posteriormente a isso, já com o projeto finalizado foi optado realizar o processo de configuração do ambiente de homologação utilizando a ferramenta docker. Ainda com o projeto executando foram localmente criados dois containers: uma imagem do banco de dados Postgresql em execução e a ferramenta de gestão pgAdmin. Após criação das tabelas via query executado via pgAdmin houve a conexão perfeitamente e testado realizar operações. Por fim, para retirar a necessidade de ter o projeto executando localmente numa máquina foi optado utilizar o Render.
O Render é um serviço de plataforma em nuvem que permite realizar o deploy de uma aplicação deixando disponível globalmente por um endereço IP. Para isso foi necessário criarmos uma imagem da aplicação configurado corretamente por um arquivo dockerfile. Realizada todas as configurações o projeto encontra-se em produção disponível pela plataforma Render. Como utilizo um plano gratuito do Render a aplicação pode ter um delay ou disponibilidade limitada conforme as diretrizes da plataforma.
Antes de rodar o projeto, é necessário ter as seguintes ferramentas instaladas:
- Java 17
- Maven
- Docker
- Docker Compose
- Postman (opcional, para testar a API)
- Clone o repositório:
git clone https://github.com/DioneDw/workshop-springboot.git
- Acesse o diretório do projeto
cd workshop-springboot - Instale as dependências:
mvn install
- Criação do ambiente Docker (homologação): Para rodar o projeto no ambiente de homologação com Docker, basta executar o comando abaixo:
docker-compose up
- Rodar o projeto localmente: Para rodar a aplicação localmente, você pode executar o comando:
mvn spring-boot:run
Após o projeto estar em execução localmente, você pode acessar a documentação da API através do Swagger, que estará disponível no endereço:
http://localhost:8090/swagger-ui/index.htmlCaso não deseje clonar o projeto e executa-ló localmente você pode acessar diretamente o projeto em execução na nuvem (ambiente de produção) disponivel pela plataforma Render.
Observação importante: A disponibilidade da aplicação em cloud pode variar conforme a plataforma Render, que pode apresentar um pouco de delay no carregamento.
https://workshop-springboot-tqip.onrender.comPara testar os endpoints, você pode utilizar o Postman com os métodos HTTP definidos na documentação.
Durante o desenvolvimento desse projeto, foi possível aprender sobre a criação de APIs REST com SpringBoot, a utilização de Docker para configuração de ambientes, além de aplicar boas práticas de desenvolvimento com a arquitetura em camadas.
Melhorias que foram feitas incluem:
- Aprimoramento na documentação da API com Swagger.
- Otimização do uso de containers Docker e PostgreSQL.
- Estruturação e prática de relacionamentos via anotações JPA.
Linkedin: https://www.linkedin.com/in/dione-evangelista/
GitHub: https://github.com/DioneDw


