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.
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.)
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.
- 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.
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.
- 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.
API significa Interface de Programação de Aplicações (em inglês, Application Programming Interface).
API é um meio de comunicação entre programas.
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.
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...
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 é 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
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)
Docker Compose é como um maestro que comanda vários containers Docker ao mesmo tempo
Keycloak é uma ferramenta que cuida de login, logout e segurança de acesso para sistemas e aplicativos.
É como um porteiro digital..
Ele verifica quem você é, se você pode entrar, e o que você pode fazer dentro do sistema..
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
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.
Aqui temos exemplos do OpenFeing
👉 (https://github.com/EduardoNofre/OpenFeign_And_RestTemplate)
Um HealthCheck em Java geralmente é usado para verificar se uma aplicação está funcionando corretamente.
Um HealthCheckApi foi criado para verificar se a Api está funcionando corretamente.
Um HealthCheckDB foi criado para verificar se o Banco de dados está funcionando corretamente.
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.
Aqui temos exemplos do config service
(https://github.com/EduardoNofre/digital-config-service)
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.
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.
Teremos os endpoints utilizando os seguintes verbos.
GET - Para consultas.
POST - Inserção de dados.
DELETE - Deletar registro.
PUT - Atualizar dados.