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 - Config server.
11 - Repositorio config server. 👉 Link do repositorio config serve
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
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.