Git Product home page Git Product logo

bff-kit-springboot's Introduction

bff-kit-springboot - Artefato Kit de BFF - Backend for Frontend em Java e Spring Boot 🚀



Java Spring Boot Spring Cloud JUnit Maven

O bff-kit-springboot é um Kit de BFF em Java e Spring Boot para ser utilizado em Cloud Pública e serve como modelo de artefato atualizado e apoia no entendimento geral.

ÍNDICE

  1. Principais caracterísitas e responsabilidades deste artefato
  2. Pré-requisitos para desenvolvimento
  3. Swagger
  4. Testes
  5. Build
  6. Execução Local
  7. Configuração Spring Actuator
  8. Precisa de mais informações?

Principais características e responsabilidades deste artefato

  • Atua como intermediador para o fed-kit-angular
  • Consome o srv-kit-springboot para obter informações de entidades externas: Base de Dados, Mainframe, Cache Redis, etc

  • Envio de status de execução da pipeline via MS Teams para o grupo e canal configurado em pipeline-notifications.json

Pré-requisitos para desenvolvimento

  • Possuir acesso no repositório NEXUS Bradesco

  • Possuir o git devidamente instalado e configurado

  • Possuir o Apache Maven devidamente instalado e configurado. Caso não o tenha, fique tranquilo pois aqui ele é baixado e configurado via linha de comando.

  • Possuir instalado Java Development Kit (JDK) - versão mínima 11. Pode ser obtido através do site da Oracle

  • Possuir uma IDE da sua preferência: Intellij IDEA , Eclipse IDE ou VSCode

  • [OPCIONAL] Possuir um container na sua estação (Docker Desktop/Rancher Desktop/Podman/containerd/etc) caso deseja executar o artefato em container.

Swagger

  • Link da interface gráfica da aplicação para o Swagger UI

  • Por questões de segurança, o Swagger está devidamente configurado para estar desabilitado em ambiente produtivo - PRD

  • Para utilização em outro ambiente deverá utilizar o IP do servidor: http://IP_SERVIDOR:8080/swagger-ui/index.html

Testes

  • Construção dos Testes Unitários seguindo a prática do TDD - Test Driven Development para garantir automaticamente a cobertura de testes exigida.

  • Foco principal dos testes NÃO é o de criar os mesmos com o objetivo único de cobrir o percentual dos testes de cobertura. Os testes têm objetivo de: encontrar e corrigir bugs, evitar regressão indevida e testar de fato o que foi codificado/produzido.

  • Plugin Maven Surefure: projetado para testes unitarios. Detecta os testes unitários pelos seguintes padrões:

**/Test*.java
**/*Test.java
**/*Tests.java
**/*TestCase.java
  • Plugin Maven Failsafe: projetado para testes de integração. Detecta os testes de integração pelos seguintes padrões:
**/IT*.java
**/*IT.java
**/*ITCase.java
  • Para mais detalhes sobre testes, acesse The Practical Test Pyramid.

  • Além destes, dentro do diretório postman/collections há um collection do Postman com testes práticos para testes simples nas APIs expostas no kit. Para testar as APIs do BFF, é necessário ter o kit de SRV também funcional (ou então criar um mock para o BFF e alterar o application-LOCAL.yaml)

Testes Unitários

  • Teste de unidade é a fase do teste de software em que os módulos são testados individualmente.

  • É sempre importante executar os testes unitários localmente e garantir que todos estejam passando antes de realizar um pull request para a branch dev e/ou release/esteira.

  • Os testes estão localizados no diretório src/test

  • Para executar os testes, realize o comando mvn test via JUnit 5

  • Saiba que também é possível executar os testes unitários através do jacoco para que ele apresente um status dos testes e de cobertura dos testes. Deste modo, evita qualquer surpresa antes de chegar ao SonarQube!

Build

Ambiente baseado em Unix - Caso não tenha o Maven, execute o comando abaixo para permitir que seja instalado e configurado na sua estação

./mvnw clean install

Ambiente baseado em Windows - Caso não tenha o Maven, execute o comando abaixo para permitir que seja instalado e configurado na sua estação

./mvnw.cmd clean install

Execute mvn clean install para fazer o build o projeto. Serão armazenados no diretório target dentro da pasta do projeto

mvn clean install

Execução Local

Execução local - Profile LOCAL

export SPRING_PROFILES_ACTIVE=LOCAL
java -jar target/bff-kit-springboot.jar

Execução localmente - Profile DEV

  • O profile DEV é indicado para execução na estação de desenvolvimento obtendo e consumindo recursos do ambiente DEV
  • Deve ser ativado o profile DEV
  • Irá atender sob o HOST http://localhost:8080/health
export SPRING_PROFILES_ACTIVE=DEV
java -jar target/bff-kit-springboot.jar

Executando com aplicação em container local

  • Verificar se a imagem com o mesmo nome da sua aplicação já existe:
docker images
  • Se a imagem já existir, delete-a ou mude o nome
  docker rmi <NOME_DA_IMAGEM_DOCKER>
  • Gerar a imagem Docker com a aplicação (deve-se executar build antes)
  • Antes, navegue até o diretório docker. Precisará do arquivo Dockerfile
docker build -t bff-kit-springboot .
  • Iniciando o container a partir do nome da imagem
docker run -dp 8088:3000 bff-kit-springboot

Execução localmente em modo Debug

  • Para executar em modo debug com a IDE
  • A aplicação vai realizar bind na porta 5005:

java  -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=5005,suspend=y -jar target/bff-kit-springboot.jar

  • Vá no IntelliJ Run > Edit configurations... > Clique '+' > Remote JVM Debug
  • Preencha os campos e após, clique em Ok/Apply.
    • Name: AppRemote
    • Host: localhost
    • Port: 5005
  • Por fim, ainda no IntelliJ, Run > Debug 'AppRemote'.

Configuração Spring Actuator

Precisa de mais informações?

bff-kit-springboot's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.