Skip to content

DioneDw/workshop-springboot

Repository files navigation


Logo

Webservice Store Project

Projeto de webservice de uma loja com SpringBoot!

🔎 Sobre o projeto

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

Padrão de camadas

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.

Diagrama UML

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.

(voltar ao topo)

⚙️ Tecnologias/Ferramentas usadas

Abaixo temos todas as tecnologias/ferramentas utilizadas durante o desenvolvimento da aplicação.

  • Java
  • Spring Boot
  • SpringDoc
  • Docker
  • Docker Compose
  • Maven
  • H2 Database
  • PostgreSQL
  • pgAdmin
  • Render
  • Postman

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.

(voltar ao topo)

💻 Como iniciar o projeto

🔧 Pré-requisitos

Antes de rodar o projeto, é necessário ter as seguintes ferramentas instaladas:

📦 Instalação

  1. Clone o repositório:
    git clone https://github.com/DioneDw/workshop-springboot.git
    
  2. Acesse o diretório do projeto
    cd workshop-springboot
  3. Instale as dependências:
    mvn install
  4. 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
  5. Rodar o projeto localmente: Para rodar a aplicação localmente, você pode executar o comando:
    mvn spring-boot:run
    

⚙️ Utilizando

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

Caso 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.com

Para testar os endpoints, você pode utilizar o Postman com os métodos HTTP definidos na documentação.

(voltar ao topo)

🎓 Conhecimentos Adquiridos e melhorias

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.

📧 Contato

Linkedin: https://www.linkedin.com/in/dione-evangelista/

GitHub: https://github.com/DioneDw

(voltar ao topo)

About

O projeto é um Web Service utilizando a linguagem Java e o framework SpringBoot.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published