Skip to content

fsales/fiap-tech-chalenge

Repository files navigation

GitHub GitHub code size in bytes GitHub language count GitHub top language GitHub issues

@fsales Tech Chalenge

📑 Tech Chalenge

Tech Challenge para avaliação da Fase II da Pós Graduação em Arquitetura e Desenvolvimento Java.

🛠️ Linguagem e ferramentas

logo java

logo spring

logo git logo github

🏫 Dados Acadêmicos

🏬 Instituição

Faculdade FIAP

🧑🏻‍🎓Curso

Pós-Graduação em Arquitetura e Desenvolvimento Java

Aluno


Fábio de Oliveira Sales

Linkedin Badge Gmail Badge

Ferramentas

Tecnologias

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.

Integração com Serviços

  • ViaCEP

    O ViaCEP é um serviço para consulta gratuita de código postais de endereçamento do Brasil.

Pré-requisitos

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Java 17 e Docker.

Como Executar

Executar a imagem do registry

Localmente

  • 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

🔨 Funcionalidades do projeto

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

Endpoints

Para fazer as requisições HTTP pode ser utilizado:

  1. CURL

  2. Swagger

  3. Postman

    1. Collections
    2. Environment

API

Base de dados

mer

A base de dados e versionada utilizando a biblioteca Flyway.

  • scripts

  • 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

Container Runtimes

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.

Desafio encontrado durante o desenvolvimento

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.

Referência

Footnotes

  1. FlyWay.

  2. Java 17.

  3. MapStruct.

  4. Spring Boot.

  5. Spring Data.

  6. SpringDoc OpenAPI 3.

  7. Project Lombok.