Tech Challenge para avaliação da Fase II da Pós Graduação em Arquitetura e Desenvolvimento Java.
- 📑 Tech Chalenge
Faculdade FIAP
Pós-Graduação em Arquitetura e Desenvolvimento Java
Fábio de Oliveira Sales |
---|
Flyway
O Flyway é um framework que permite o versionamento e gerenciamento do Banco de dados, com ele podemos controlar as versões do banco de dados1.
Postgres
Postgres O PostgreSQL é um sistema de gerenciamento de bancos de dados objeto-relacional de uso geral, um dos mais avançado sistema de banco de dados de código aberto.
Java 17
Java é uma linguagem de programação e plataforma de computação liberada pela primeira vez pela Sun Microsystems em 1995. De um início humilde, ela evoluiu para uma grande participação no mundo digital dos dias atuais, oferecendo a plataforma confiável na qual muitos serviços e aplicativos são desenvolvidos. Produtos e serviços novos e inovadores projetados para o futuro continuam a confiar no Java também2.
MapStruct
O MapStruct é um gerador de código que simplifica bastante a implementação de mapeamentos entre tipos de bean Java com base em uma abordagem de convenção sobre configuração. O código de mapeamento gerado usa invocações simples de método e, portanto, é rápido, seguro e fácil de entender3.
Spring Boot
O Java Spring Framework (Spring Framework) é um framework bastante conhecido de nível empresarial, de software livre, para criar aplicativos independentes de nível de produção que são executados na Java Virtual Machine (JVM)4.
O Java Spring Boot (Spring Boot) é uma ferramenta que facilita e agiliza o desenvolvimento de aplicativos da web e de microsserviços com o Spring Framework por meio de três principais recursos:
1. Autoconfiguração
2. Uma abordagem opinativa à configuração
3. A capacidade de criar aplicativos independentes
Spring Data
O Spring Data é o modelo de programação dentro do Spring Framework para acesso e manipulação de dados. Chegando com a intenção de facilitar a configuração e utilização com o seu banco de dados, seja ele relacional ou não, o Spring Data traz vários recursos bacanas para acelerar o nosso desenvolvimento5.
SpringDoc OpenAPI 3
OpenAPI possui anotações a fim de facilitar a construção da documentação da sua API. Tais anotações estão compostas na biblioteca Documentation do framework Spring e podem ser acessadas na documentação do Swagger-api. A biblioteca Spring Doc oferece ainda um plugin que possibilita a geração da documentação em tempo de build6.
Project Lombok
O Lombok é um framework para Java que permite escrever código eliminando a verbosidade, o que permite ganhar tempo de desenvolvimento para o que realmente é importante. Seu uso permite gerar em tempo de compilação os métodos getters e setters, métodos construtores, padrão builder e muito mais7.
Spring Cloud OpenFeign
O Spring Cloud OpenFeign é uma biblioteca que facilita a criação de clientes HTTP sem escreve muito código fonte. Um cliente HTTP e usado para comunicação com outros microsserviços quando trabalhamos com API de terceiros ou integrando com sistemas internos.
- ViaCEP
O ViaCEP é um serviço para consulta gratuita de código postais de endereçamento do Brasil.
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Java 17 e Docker.
-
Baixar o arquivo docker-compose.yaml
-
Após baixar o arquivo executar utilizando o Docker.
- Clonar repositório git
- Acessar o diretório
fiap-tech-chalenge/eletro-tech
- Construir o projeto:
./mvnw clean package
- Executar:
java -jar eletro-tech/target/eletro-tech-0.0.1-SNAPSHOT.jar
-
Ao iniciar a aplicação será executado automaticamente o container do Postgres.
-
A API poderá ser acessada em 127.0.0.1:8080/api.
-
O Swagger poderá ser visualizado em 127.0.0.1:8080/api/swagger-ui/index.html
API de gestão de pessoas
: A API de gestão de pessoas tem como objetivo permitir o cadastro e gerenciamento de informações sobre as pessoas relacionadas aos usuários cadastrados em nosso sistema.API de Cadastro de Endereços
: tem como objetivo permitir o gerenciamento de informações sobre os endereços cadastrados em nosso sistema.API de Gestão de Eletrodomésticos
: tem como objetivo permitir o cadastro e gerenciamento de informações sobre os aparelhos eletrônicos dos usuários cadastrados em nosso sistema.
Para fazer as requisições HTTP pode ser utilizado:
A base de dados e versionada utilizando a biblioteca Flyway.
-
O script de migração
V6__popular-tabelas-com-dados-de-test.sql
e utilizado para popular o banco com alguns dados de teste. -
O Postgres está configurado para ser executado como banco padrão ou quando for habilitado o profile de
dev
, para não ter a necessidade de fazer a instalação será disponibilizado o docker-compose com as configurações básicas.- Dados de configuração do banco:
- url: jdbc:postgresql://localhost:5432/eletro-tech
- Usuário: postgres
- Senha: postgres
- Dados de configuração do banco:
A aplicação está configurada para utilizar o plugin spring-boot-docker-compose, que detecta o arquivo docker-compose.yaml disponível
/eletro-tech/src/main/resources/docker-compose.yaml
executa automaticamente o container do Postgres.
O docker-compose disponível em
/docker/docker-compose.yaml
utiliza a imagem que foi disponibilizada no Docker Hub.
Durante o desenvolvimento do projeto da primeira fase, não foi encontrado muita dificuldade com o Framework Spring Boot. Por esse motivo foi foi adicionado os itens abaixo:
- Documentação da API utilizando o SpringDoc.
- Persistência dos dados utilizando o Spring Data e H2.