Backend

Entenda o padrão Backends For Frontends (BFF)

Aprenda como usar o padrão BFF, micro serviço no qual os times podem focar em customizar entregas de backend para o frontend específico.

No desenvolvimento de software existem algumas funcionalidades no lado do servidor que são necessárias para serem expostas à interface de mobile e browser. Como a natureza dessa interface é diferente, a experiência do usuário de mobile e do usuário da web geralmente é diferente.

Será que devemos criar uma nova operação na API com mais dados que podemos usar em ambas as interfaces?

Em interfaces de mobile por exemplo, há menos espaço, a informação precisa ser mais objetiva, já na interface web podemos ousar, mais informação, mais interação, maior quantidade de dados, etc.

Pensando em aplicativos móveis, se precisamos fazer muitas chamadas e abrirmos muitas conexões com recursos, do lado do servidor pode esgotar a vida útil da bateria e limitar os planos de dados dos dispositivos móveis. Portanto, nossos dispositivos móveis vão querer fazer chamadas diferentes das aplicações web, menos chamadas, e talvez mostrar dados diferentes resumidos desses dispositivos de desktop.

Já pensando na camada de serviço, outro problema é que apenas uma API serviço pode se tornar um gargalo para lançar novas versões, pois pode haver muitas alterações na mesma API para muitos consumidores e assim detectar possíveis bugs ou erros pode ser um problema – nesse caso imaginando que estamos compartilhando a mesma API para usuários mobile e usuários web.

A tendência da API nesse caso terá múltiplas responsabilidades, por isso exige muito trabalho e, às vezes, é necessário criar equipes para cuidar desse código base.

Isso pode se tornar um problema pior, a equipe de front-end e equipe de back-end (ou serviços) precisam interagir com equipes diferentes para obter mudanças, para expor as operações e consumir as operações. Então agora existem três equipes diferentes para alinhar as mesmas prioridades, onde a equipe de serviços estará foca em funcionalidades de negócio e equipes de front end focada em comportamento, experiência, etc.

Pensando nesses problemas que todo desenvolvimento de software passa, passamos a adotar o padrão BFF, Backend for FrontEnds.

E o que seria esse BFF?

Podemos dizer que é um micro serviço que os times podem focar em customizar entregas de backend para o frontend específico, seja ele um frontend mobile, web, ATM, etc.

Esse padrão já vem desde 2015, popularizado por Sam Newman.

O aplicativo deve ser devolvido ao usuário com dois componentes diferentes, um para o dispositivo móvel outro para dispositivos desktop, e deve ser mantido com equipe específica, a equipe móvel deve manter sua API e o desktop deve manter sua API.

Pensando nas diferenças do ciclo de desenvolvimento de ambas tecnologias, independência das equipes, tempo de desenvolvimento, lançamento de novas versões, funcionalidade, etc, precisamos tratar os dois de forma distinta.

O BFF pode ser criado para atender vários consumidores que temos para o mesmo sistema, onde cada um tem uma exigência, ou até mesmo abstrair de sistemas legados, onde em um futuro podemos substituir por novos serviços.

Quando é fornecida a mesma experiência do usuário para plataformas diferentes, há duas maneiras:

Pode ser utilizado com o agregador de chamadas para paralelizar chamadas e pode reduzir a bateria e a banda para as interfaces móveis.

Trabalhando com falhas em serviços

Neste exemplo, se o estoque estiver inativo, não é necessário interromper as ações do usuário, quando o serviço estiver novamente disponível, os usuários podem consultar o estoque de produtos que foi selecionado.

Reutilizar BFF

Com as mesmas possibilidades nos BFFs diferentes acima, neste caso podemos usar um agregador para chamar os serviços comuns.

Para onde queremos ir? Evolução do BFF

Conclusão

Com o BFF Podemos limitar o número de consumidores de acordo com o dispositivo. Isso pode funcionar com mudanças, ajudando as equipes de desenvolvimento a ficarem mais focadas no seu cliente, dando mais autonomia a cada equipe, que pode controlar seu futuro, oferecendo especialidade para o seu tipo de consumidor. Mova o sistema para um design menos acoplado.

Referências:

%d blogueiros gostam disto: