De acordo com Phil Calçado, esse padrão tem como objetivo, utilizar "backends" específicos para contextos diferentes da experiência do usuário
Em termos simples, é uma camada entre a experiência do usuário e os recursos necessários para essa experiência
E de onde veio isso?
Esse padrão teve seu início dentro da empresa SoundClound quando eles ainda eram um grande e massivo monolito.
Eles notaram a crescente dificuldade em implementar novas funcionalidades dado que a API genérica para todos os dispositivos, crescia proporcionalmente conforme a funcionalidade ia crescendo
Eles decidiram então, que sempre que uma funcionalidade necessitasse de uma API espécifica, a equipe que estivesse implementando também seria capaz de criar esse endpoint e assim decidir como buscar, adicionar e armazenar estes dados
Exemplos
Se eu tenho várias UX eu vou ter vários BFF diferentes?
Diante de "N" possibilidades, algumas orientações foram levantadas para manter a escalabilidade dessa arquitetura
"particular feature first over generic usage"
"rule of three"
"experience should be grouped by experience type, not by the source of the experience"