Abílio Azevedo.

BFF - Backend For Frontend

Cover Image for BFF - Backend For Frontend
Abílio Azevedo
Abílio Azevedo

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
Admin website BFFs

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


Mais posts

Cover Image for Construindo um Servidor MCP Remoto para o Google Workspace (Sheets, Docs and Presentation)

Construindo um Servidor MCP Remoto para o Google Workspace (Sheets, Docs and Presentation)

Aprenda como construir e implantar um servidor MCP (Model Context Protocol) remoto para Google Workspace (Sheets, Docs and Presentation) usando Next.js, Vercel e Neon Postgres. Guia passo a passo cobrindo autenticação OAuth de duas camadas, registro de ferramentas, implantação serverless e depuração com MCP Inspector — para que qualquer assistente de IA possa ler, escrever e gerenciar planilhas com apenas uma URL.

Abílio Azevedo
Abílio Azevedo
Cover Image for UX/UI para desenvolvedores

UX/UI para desenvolvedores

UX/UI para Desenvolvedores — Guia pratico sobre design systems, comunicacao com Product Designers e quando reutilizar componentes. Aborda heuristicas de Nielsen, Atomic Design, bibliotecas de componentes Tailwind CSS como shadcn/ui e Radix UI, ferramentas de prototipagem como Figma e Origami Studio, boas praticas de acessibilidade, e uma curadoria de cursos, artigos e livros para desenvolvedores que querem construir melhores experiencias de usuario.

Abílio Azevedo
Abílio Azevedo

NewsLetter

Eu enviarei o conteúdo postado aqui no blog. Sem Spam =)