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 Documentos Técnicos

Documentos Técnicos

Aprenda a importância vital da documentação técnica abrangente para projetos de software em crescimento. Descubra as melhores práticas, como Requests for Comments (RFCs) e Architectural Decision Records (ADRs), que promovem transparência, colaboração e registro de decisões arquiteturais. Explore ferramentas poderosas como wiki.js e Backstage para criar centros de documentação eficazes. Mantenha seu projeto organizado, compreensível e sustentável com essa abordagem à documentação técnica.

Abílio Azevedo
Abílio Azevedo
Cover Image for Superlógica - BFF para o Gruvi

Superlógica - BFF para o Gruvi

Construindo um BFF (Backend for Frontend) para o SuperApp Gruvi que tem mais de 120 mil usuários ativos e milhões de possíveis usuários para disponibilizar no ecossistema Superlogica.

Abílio Azevedo
Abílio Azevedo

NewsLetter

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

Engenheiro de software experiente, formado em Engenharia Elétrica, com mais de 10 anos de experiência prática na construção de aplicativos móveis, web e back-end robustos e escaláveis em vários projetos, principalmente no setor de fintech. Mobile (React Native), Web (React e Next.JS) e Backend (Node.JS, PHP e DJANGO). Meu objetivo é criar produtos que agreguem valor às pessoas. - © 2024, Abílio Azevedo