Skip to content

EduardoNofre/spring-boot-bff-api-keycloak-docker

Repository files navigation

Vamos estudar

O que será usado aqui neste estudo.

Java Spring Licence

01 - Ide eclipse sts.
02 - Java 17.
03 - banco de dados postgres-sql.
04 - lombok.
05 - Spring boot 3.4.5.
06 - Docker
07 - Docker Compose.
08 - Keycloak.
09 - OpenFeing.
10 - HealthCheck.
11 - Config server.
12 - Repositorio config server. 👉 Link do repositorio config serve
13 - AWS.
14 - Balance.
15 - Elasticsearch.

Modelo da arquiteura que iremos construir

Alguns pontos relevantes sobre BFF.

O que é BFF.

BFF (Backend for Frontend) é um padrão de arquitetura de sistemas onde você cria um backend específico para cada tipo de frontend (como web, mobile, smartwatch, etc.)

Para que serve o BFF?

O objetivo principal do BFF é adaptar as respostas do backend para as necessidades específicas de cada frontend, melhorando performance, simplificando a lógica no cliente e permitindo maior autonomia entre times de desenvolvimento.

Vantagens do BFF:

  • Customização por frontend
  • Desacoplamento entre frontend e backend
  • Melhoria de performance (dados sob medida, menos requisições)
  • Facilidade de manutenção e evolução
  • segurança sua api não fica exposta.

Imagine o seguinte cenário.

Você tem um restaurante (que é seu sistema).
Um cliente da mesa web quer uma refeição completa com entrada, prato principal e sobremesa.
Um cliente da mesa mobile só quer um lanche rápido.
Se só existisse um "garçom" para todos, ele traria a mesma comida para todos — o que nem sempre faz sentido.

Com BFF, você cria um “garçom” especial para cada tipo de cliente:
Um BFF para o site web, que traz tudo completo.
Um BFF para o app mobile, que traz só o necessário.

Por que isso é bom?

  • Cada cliente recebe só o que precisa.
  • Tudo fica mais rápido e organizado.
  • O time que cuida do app pode trabalhar separado do time que cuida do site.

Alguns pontos relevantes sobre API.

O que é uma API?

API significa Interface de Programação de Aplicações (em inglês, Application Programming Interface).
API é um meio de comunicação entre programas.

Veja por esse lado.

Pensa nela como um cardápio de restaurante:
O cardápio mostra o que você pode pedir (mas você não vê como a comida é feita).
Você escolhe o que quer e faz o pedido.
A cozinha prepara e entrega.

dokcer.

O que é dokcer?

Docker é como um container de navio, mas para programas.
É um navio, cada container pode ter coisas diferentes:
eletrônicos, comida, roupas.
No Docker, cada "container" carrega um programa completo com tudo o que ele precisa para funcionar: código, configurações, bibliotecas...

O docker venho para resolver o famoso "na minha maquina funciona".

Você tem um site que funciona bem no seu computador.
Aí vai rodar em outro servidor e… 💥 dá erro.
Com Docker, você coloca esse site dentro de um "container".
Agora, funciona igual em qualquer computador, servidor, ou nuvem.

docker compose

O que é docker compose?

Docker Compose é uma ferramenta que junta vários containers Docker e faz eles trabalharem juntos.
Agora temos uma frota de navio e uma infinidade containers Docker trabalhando juntos

Um exemplo mais pratico.

Imagina que você tem um site que precisa de: Um servidor web (por exemplo, Nginx) Um banco de dados (por exemplo, MySQL) Um serviço de login Cada um roda em um container Docker separado. Em vez de ligar tudo na mão, um por um... 👉 Você usa o Docker Compose para ligar todos de uma vez só com um arquivo de configuração. Esse arquivo se chama docker-compose.yml e diz: Quais containers usar Como eles se conectam Quais portas abrir Que volumes usar (armazenamento)

Resumo!

Docker Compose é como um maestro que comanda vários containers Docker ao mesmo tempo

Keycloak

O que é Keycloak?

Keycloak é uma ferramenta que cuida de login, logout e segurança de acesso para sistemas e aplicativos.

uma visão simples do Keycloak.

É como um porteiro digital..
Ele verifica quem você é, se você pode entrar, e o que você pode fazer dentro do sistema..

Como podemos utilizar o keycloak?

Fazer login com usuário e senha
Usar login social (Google, Facebook, etc)
Criar perfis de acesso (admin, usuário, etc)
Proteger APIs e aplicativos web/mobile
Ter login único (SSO) entre vários sistemas

OpenFeing

O que Spring OpenFeign?

Em resumo, o OpenFeign é uma biblioteca de clientes HTTP que permite que os desenvolvedores escrevam código de maneira mais declarativa e simplifica a comunicação com serviços externos em Java. Se você está trabalhando em um projeto que precisa consumir APIs RESTful, o OpenFeign pode ser uma excelente opção para simplificar o código e reduzir a complexidade.

Exemplo do OpenFeign no link abaixo.

Aqui temos exemplos do OpenFeing
👉 (https://github.com/EduardoNofre/OpenFeign_And_RestTemplate)

HealthCheck

O que é HealthCheck?

Um HealthCheck em Java geralmente é usado para verificar se uma aplicação está funcionando corretamente.

HealthCheckApi?

Um HealthCheckApi foi criado para verificar se a Api está funcionando corretamente.

HealthCheckDB?

Um HealthCheckDB foi criado para verificar se o Banco de dados está funcionando corretamente.

Config server

O que é Spring Cloud Config Server?

O Spring Cloud Config Server é usado para fornecer suporte do lado do servidor e do lado do cliente para configuração externa em um sistema distribuído. Então, quando você tem vários microsserviços e deseja controlar facilmente a configuração de todos eles de uma só vez - você estará olhando principalmente para o Spring Cloud Config Server.

Exemplo do config service no link abaixo.

Aqui temos exemplos do config service
(https://github.com/EduardoNofre/digital-config-service)

Repositorio config server.

O que é Repositorio config server?

O repositório do Config Server é o local onde ficam armazenados os arquivos de configuração centralizada para múltiplas aplicações em um ambiente com Spring Cloud Config.
Arquivos properties referente a aplicação.
Exemplo:
1 - api-categoria-dev.properties.
2 - api-imagem-dev.properties.

O que iremos desenvolver aqui para aprendizado.

1 - Uma Api de "noticias diaria".
2 - Dois BFF BFF-mobile e BFF-Web
3 - criar script de banco tabelas.
4 - Gerar imagens dos BFF e da API com docker e subir para docker hub.
5 - Executar o keycloack com docker-compose.
6 - Criar no keycloack os usuarios sistema-BFF-mobile,usuarios sistema-BFF-web, sistema-API, usuario-admin, usuario-gerencial e usuario-padrão.
6.1 - Usuario sistema-BFF-mobile: Usuario sistema que permite que ele acesse a api sistmas.
6.2 - Usuario sistema-BFF-web: Usuario sistema que permite que ele acesse a api sistmas.
6.3 - Usuario usuario-admin: Usuario administrador acesso total a aplicação.
6.4 - Usuario usuario-gerencial: Usuario gerencial acesso somente a area gerencial.
6.5 - Usuario usuario-padrão: Usuario padrão acesso somente area de atuação.
6.6 - Usuario sistema-BFF-mobile-swagger: Usuario com acesso a visualizar swagger e executar somente o mobile serviços.
6.7 - Usuario sistema-BFF-web-swagger: Usuario com acesso a visualizar swagger e executar somente o web web serviços.

O desenvolvimento da APi sistemas.

Teremos os endpoints utilizando os seguintes verbos.
GET - Para consultas.
POST - Inserção de dados.
DELETE - Deletar registro.
PUT - Atualizar dados.

Releases

No releases published

Packages

No packages published