Backend For Frontend, seu futuro melhor amigo!

Se você começou a leitura, espero que ainda tenha esperança em entender o que é essa benção de Backend For Frontend, eu procurei um bocado e descobri que a maioria dos sites também não entenderam ou na pior das hipóteses foram preguiçosos, pois é um tanto de publicação fazendo cosplay, então deixa eu tentar te ajudar de uma forma mais simples.
Antes de ajudar vou fazer o que todos fizeram, se você for ao google vai se deparar com isso, segue:
BFF é um acrônimo para Backend For Frontend. Trata-se de um componente de Backend que tem a missão de prover os dados necessários para cada Frontend da aplicação, agindo como um “meio de campo” entre os Frontends e os diferentes Backends que fazem parte de uma aplicação baseada em micro serviços.
Então bora começar pelo início, novamente, o que é esse padrão chamado BFF?
BFF ou Backend For Frontend é nada mais nada menos que a criação de um Backend específico para um determinado dispositivo que pode ser um celular, uma televisão, um portal web ou até mesmo uma geladeira.
Legal, mas qual a finalidade?
Entregar somente aquilo que é necessário para aquele Frontend ou dispositivo, garantindo assim a melhor performance possível, ou seja, ao invés de um serviço retornando dados independentemente do contexto, iremos trabalhar com somente o necessário, evitando assim desperdícios.
Ok, mas faz sentido aplicar BFF só por conta dos diferentes contextos?
Está meio que na cara, mas vai além disso, a implementação do BFF promove desacoplamento, ou seja, se um serviço ficar indisponível, você felizmente inviabilizará apenas um dos N canais ou serviços disponíveis.
Se quisermos ir um pouco além, podemos enxergar até mesmo com base na organização das equipes, ao invés do squad de Backend se virar para disponibilizar um ou mais serviços que atendam aos diferentes contextos, muito provavelmente iremos nos organizar de acordo com o tipo de dado para um determinado dispositivo ou Frontend, resultado numa entrega de maior qualidade.
Adicionalmente é possível flexibilizar, levando-se em consideração a organização em camadas é possível a utilização de diferentes linguagens de programação ou estruturas no Frontend e no Backend.
Tomando como base um exemplo de fácil entendimento e aplicabilidade para a maioria, imaginem uma conta bancária, poderíamos ter um BFF voltado para a web e outro BFF voltado para a interface mobile que provavelmente precisará de menos dados para que as interfaces possam ser renderizadas.

Sem a utilização do BFF ou até mesmo utilizando um único BFF para ambos os dispositivos, haveria o mesmo payload, porém a interface mobile irá simplesmente ignorar ou desprezar alguns dados, ou seja, o mobile muito provavelmente consumiria mais recursos sem gerar nenhum benefício.
Lembre-se que a aplicação de um padrão sempre precisa levar em consideração as necessidades especificas de um projeto, sua complexidade e os recursos disponíveis, não baseie sua escolha numa tendência, pois isso pode custar muito caro, então para apoiar, vamos elencar algumas possíveis desvantagens e são eles:
- Complexidade, Esforço e Custo adicional: Ao adicionar uma camada intermediária como o BFF, o sistema como um todo se torna mais complexo, agora temos mais código para desenvolver, manter e garantir qualidade, logo avalie se esse aumento de escopo técnico conseguirá ser atendido pela equipe dimensionada, pois o prazo certamente será maior uma vez que criaremos uma camada intermediária, desenvolveremos funcionalidades duplicadas e aumentaremos o escopo de qualidade com testes de unidade e integração, dito isso esse custo cabe no seu contexto?
- Possível duplicação de lógica: Dependendo da implementação, pode ser necessário duplicar lógica de negócios tanto no Backend quanto no BFF, por exemplo, se certas regras de negócio forem aplicadas no Backend e precisarem ser consideradas no BFF, pode haver uma duplicação de código. Isso introduz redundância e aumenta a possibilidade de inconsistências entre as camadas.
- Aumento da complexidade de implantação: A introdução de um BFF pode complicar o processo de implantação do sistema, pois agora, você tem mais componentes para implantar e gerenciar, o que pode exigir uma abordagem mais cuidadosa.
Espero que este resumo tenha sido útil para fornecer uma introdução ao tema. Se você precisar de mais informações ou tiver alguma dúvida, não hesite em entrar em contato conosco.
Autor: Bruno Trugano, Delivery Manager