Arquitetura BFF
A Arquitetura Back-end para Front-end Pattern (BFF), é um termo criado em 2015 por Phil Calçado, é um padrão para API que permite equipes a iterarem recursos mais rapidamente e terem controle sobre o backend, sem afetar o frontend e também gerar experiências específicas de acordo com cada pessoa usuária de um determinado produto.
Antes que as arquiteturas totalmente distribuídas se tornassem viáveis, as organizações geralmente construíam um aplicativo em uma ou mais camadas . Uma camada era um componente altamente acoplado, mas bastante independente de um aplicativo. Foi acoplado no sentido de que, ao contrário dos serviços, deveria ser usado por apenas um aplicativo. Era independente na forma como não funcionava como parte do mesmo processo, muitas vezes nem na mesma máquina.
Em 2011, quando essas mudanças de arquitetura estavam acontecendo, a grande maioria dos usuários estava na web. Isso mudou quando os usuários começaram a usar aplicativos móveis com muito mais frequência do que a interface da web.
O Back-end para Front-end Pattern (BFF)
Uma das primeiras solução proposta seria ter diferentes APIs para dispositivos móveis e web. A ideia era que ter a equipe trabalhando no próprio cliente da API permitiria que eles se movessem muito mais rapidamente, pois não exigia coordenação entre as partes. Nossa ideia original era ter diferentes back-ends para diferentes front-ends . O termo BFF foi cunhado por Nick Fisher.
Isso simplificaria o código e melhoraria o desempenho. Em vez de fazer várias chamadas diferentes para muitos endpoints, o cliente necessário para solicitar era um único recurso:
GET /user-profile/userProfile.json
À medida que mais modelos surgiam, começaram a serem escritos mais modelos BFF ainda, notaram que o BFF não era uma API utilizada pela aplicação, notaram que o BFF fazia parte da aplicação.
Na ideia original, exemplificada por um case de perfil de usuário, cada aplicativo tinha o equivalente a uma página de perfil de usuário, havia muito código duplicado em todos os BFFs buscando e mesclando dados para eles.
Para um aplicativo que fornece apenas uma interface do usuário da Web, o BFF só fará sentido se tivermos uma quantidade significativa de agregação necessária no lado do servidor.
Ainda na linha do artigo anterior sobre a arquitetura 12 Factors. Mais um padrão que me recordo é o BFF. Mas quero deixar claro que esta postagem não é totalmente autoral, e deixo os créditos descritos através das fontes abaixo.