BFF - Backend For Frontend
Implementando um Padrão de Backend para Frontend
O padrão de backend para frontend (BFF) se tornou popular nos últimos anos como uma maneira de construir aplicativos web escaláveis e manuteníveis. Um BFF fornece uma camada de API personalizada que se situa entre o frontend e os serviços de backend.
O que é um Backend para Frontend?
Um backend para frontend é uma camada que se situa entre o frontend e os serviços de backend. Ele é projetado para lidar com solicitações de estruturas ou plataformas frontend específicas. O BFF abstrai as APIs de backend de uso geral para fornecer uma API personalizada para cada cliente frontend.
Alguns benefícios importantes de usar um BFF incluem:
-
Personalização - O BFF pode transformar respostas de backend em um formato otimizado para cada frontend. Isso evita sobrecarregar o código do frontend (Over fetching e Over requesting)
-
Segurança - O BFF atua como uma camada de segurança, protegendo o backend de solicitações indesejadas. Ele pode implementar autenticação, autorização e limitação de taxa.
-
Desempenho - O BFF pode armazenar solicitações em cache e realizar colapso de solicitações para otimizar o desempenho para o frontend.
-
Separação de preocupações - Os serviços de backend se concentram na lógica de negócios, enquanto o BFF se concentra em interfacear com os frontends. Essa separação torna os backends e frontends mais fáceis de entender e manter.
-
Evolução independente - Os serviços de backend e clientes frontend podem evoluir de forma independente sem afetar um ao outro, fazendo alterações na camada BFF.
Implementando um BFF
Existem várias abordagens para implementar um BFF:
-
Funções serverless - Funções como Serviço como AWS Lambda podem lidar com solicitações e executar lógicas personalizadas para cada frontend.
-
API gateway - Um gateway de API é colocado na frente dos serviços de backend e pode transformar, proteger e otimizar solicitações.
-
Servidor BFF dedicado - Construir um aplicativo BFF dedicado, geralmente usando Node e Express, para lidar com solicitações de frontend.
-
Microsserviços - Cada BFF pode ser implantado como um microsserviço independente para lidar com um ou mais frontends.
A implementação deve se concentrar em:
- Autenticação e autorização
- Personalização de respostas para o frontend
- Cache e colapso de solicitações
- Políticas de limitação de taxa
- Registro, monitoramento e análise
Testes adequados são fundamentais para garantir que o BFF interaja de forma confiável tanto com os clientes frontend quanto com os serviços backend à medida que mudam de forma independente.
Sem BFF | Com BFF |
---|---|
Conclusão
O padrão de backend para frontend é útil para aplicativos web e mobile modernos com diversos frontends. Implementar um BFF bem projetado fornece benefícios de desempenho, segurança e manutenibilidade. No entanto, ele introduz complexidade adicional que deve ser gerenciada cuidadosamente.
Referências
https://samnewman.io/patterns/architectural/bff/#
https://www.sensedia.com.br/post/utilizacao-de-graphql-como-implementacao-do-padrao-bff