BFF – O melhor amigo do seu Frontend.

Atualmente, com a necessidade de soluções mais escaláveis e distribuídas tem se utilizado a arquitetura de Microsserviços, ou seja, estruturas com contextos mínimos e independentes. 

Imagine a estrutura para finalizar a compra de uma aplicação de Ecommerce. Teríamos a parte de identificação do usuário, produtos e pagamento. Isso em uma estrutura de Microservices ficaria mais ou menos dessa forma.

Mas qual seria o problema dessa estrutura?
Dessa forma funciona, porém… 

  • O seu APP teria que fazer três requisições para o servidor e caso tenha uma internet pode consumir mais de seu pacote de dados. 
  • O Front-end teria mais responsabilidades, tendo que lidar também com controle de fluxo de comunicação com os Microservices. 
  • Consumo de recursos desnecessários, voltemos a banda, se um Microservice cair vai processar os outros sem necessidade.
  • APIS não customizadas podem apresentar contratos com informações a mais do que se realmente precisa (Over Fetching), causando desperdício de trafego de dados.
  • Qualquer alteração nos Microservices, seja por exemplo para atender um Site Web pode quebrar seu APP.

Então o que é o BFF?

BFF significa, Backend For Frontend, ou seja, um Microservice responsável em prover os dados específicos de um caso de uso para seu Frontend. 

Esse padrão foi descrito por Sam Newman, percebendo que para diferentes dispositivos (APP, Site Web, Desktop) temos diferentes apresentações de dados. 

Veja como ficaria o exemplo anterior.

Nesse cenário, colocamos um BFF para orquestrar todas as requisições que a pagina de Compra necessita. Ao invés de três chamadas para o servidor temos somente uma.

Assim temos: 

  • Maior resiliência, ja que ao mudar qualquer informação ou trocar uma fonte de informação nos Microservices, mudamos somente o BFF. 
  • Menos responsabilidade no Frontend com relação as requisições. 
  • Diferentes Frontend podem precisar de informações diferentes, como APP ou um Site Web, assim cada BFF fornece as informações necessárias para cada Front evitando o Over Fetching.

 

Lembrando sempre que é bom avaliar cada caso. Nenhuma arquitetura resolve todos os problemas. Adicionar um BFF é adicionar mais complexidade e complexidade é custo.

Não concorda? Manda ai seu argumento. 

Software perfeito é o que deixa seu cliente satisfeito.

Bibliografia

https://samnewman.io/patterns/architectural/bff/

0 respostas

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *