O que é BFF na TI?

O que é BFF na TI?

À medida que a complexidade dos produtos que desenvolvemos aumenta, é mais provável que o número de suas “faces” também aumente. Hoje, é muito comum que o mesmo produto tenha, por exemplo, uma interface de usuário web, uma interface de usuário móvel e uma interface de usuário responsiva. Nesse contexto, entendo que é bastante tentador projetar uma única API de back-end reutilizável para todas as interfaces.

No entanto, é claro que, como sempre, uma solução simples não combina com um produto complexo. As necessidades e limitações são bastante diferentes e por vezes é necessária uma adaptação. Para resolver esse problema, surge o BFF, que pode até ser considerado como melhores amigos para sempre, mas na verdade significa Back-end para Front-end.

Neste artigo vamos entender um pouco melhor o que é BFF, como funciona e de onde ele vem, mas primeiro precisamos entender um pouco mais sobre micros serviços.

O que é um micro serviço?

O modelo de arquitetura de micro serviços foi criado para acelerar o desenvolvimento e melhorar a produtividade e escalabilidade. A ideia é reorganizar o código para reunir uma coleção de pequenos serviços desconectados que se comunicam usando um protocolo leve. Assim, podemos dividir as funções em diferentes grupos.

Todas as arquiteturas de micro serviço compartilham algumas características comuns. São eles:

  • 1. Descentralização: cada micro serviço tem uma visão do modelo de dados, e cada um é desenvolvido, publicado, gerenciado e gerenciado de forma diferente;
  • 2. Independência: Cada micros serviço pode ser modificado, atualizado ou substituído sem afetar a operação de outros componentes. Dessa forma, equipes responsáveis ​​por diferentes micros serviços também podem trabalhar de forma independente;
  • 3. Uma coisa bem-feita: Cada componente se concentra em um domínio específico, por isso é projetado de acordo com suas características e funções específicas. Se começar a ficar muito complexo, pode ser dividido em outros micros serviços;
  • 4. Poliglota: As equipes podem escolher a melhor plataforma para cada problema. Dessa forma, as arquiteturas de micros serviços podem abranger vários sistemas operacionais, linguagens de programação, armazenamentos de dados ou ferramentas.
  • 5. Caixa-preta: Os componentes de micro serviço são projetados em uma caixa-preta, “ocultando” seus detalhes de complexidade de outros componentes. Toda a comunicação entre eles depende de uma API bem definida.

Os benefícios de usar uma abordagem de micros serviços vão além do desenvolvimento mais rápido. Isso nos permite contar com maior agilidade, flexibilidade e escalabilidade, além de uma manutenção significativamente mais fácil. Além disso, conseguimos controlar e automatizar processos e continuar focados em agregar valor ao cliente, que deve ser o principal objetivo de uma empresa.

O que é um BFF?

Back-end para Front-end é um micro serviço que configura a entrega de back-end para cada interface ou experiência do usuário. Isso é muito útil quando temos um produto complexo com múltiplas interfaces, pois cada uma tem uma necessidade específica. Em outras palavras, é melhor definir diferentes serviços de back-end para cada cliente front-end. Melhor ainda, cada back-end é desenvolvido por equipes que combinam cada interface para garantir que todas as necessidades sejam atendidas.

Esse padrão foi descrito pela primeira vez por Sam Newman quando descobriu o uso do micro serviço pelo SoundCloud, plataforma de distribuição de música e áudio. Originalmente, o SoundCloud era um sistema monolítico com uma única API servindo interfaces web, aplicativos Android e iOS, e vários outros clientes como mashups, parceiros, internet, etc.

Depois de algum tempo, este sistema começou a causar problemas tanto ao adicionar novos. funções e em diferentes plataformas. Por exemplo, uma API móvel é melhor usar um espaço menor e solicitar dados com mais frequência. Uma API monolítica não levou isso em consideração e foi desenvolvida por outra equipe. Em outras palavras, toda vez que os aplicativos precisavam de algo novo, o pessoal do front-end precisava convencer os usuários do back-end a priorizá-lo.

Para resolver tudo isso, o SoundCloud decidiu que, se a implementação de um recurso exigir uma API específica, a equipe responsável por ela também pode implementar o endpoint da API e decidir como os dados serão agregados e para onde serão exportados. Assim nasceu o BFF, que já se pode adaptar às necessidades de determinadas plataformas e recursos, como Android, iOS, web ou outros.

A evolução do BFF

Uma das funções do BFF é retirar todas as chamadas diretas fora dos limites dos serviços que atende. Isso permitiu uma intrusão mínima na arquitetura baseada em micros serviços, pois o BFF ocultava quaisquer alterações subjacentes. À medida que novos recursos passavam pelo BFF, ele chamava o monolito ou micro serviço criado.

À medida que mais recursos foram adicionados ao micro serviço, o BFF mudou, enquanto o código do aplicativo permaneceu o mesmo. Então, o pessoal do SoundCloud criou o BFF para ocultar as chamadas de API dos clientes.

Problemas e considerações

Antes de usar efetivamente o BFF como seu melhor amigo para sempre, lembre-se de que os micros serviços devem contar apenas com o comportamento específico do cliente, e a lógica, a lógica de negócios e outros recursos globais devem ser gerenciados em outro lugar em seu aplicativo.

Verifique também se você precisa criar diferentes BFFs por plataforma ou serviço e se depende das necessidades de negócios do seu produto. Explore as opções e veja o que faz sentido para cada uma das suas preocupações. Pete Hodgson apontou que BFFs funcionam melhor quando alinhados em torno dos limites da equipe, então a estrutura de sua equipe deve ditar quantos BFFs você tem. Lembre-se também de que quando você implementa um novo modelo, o back-end existente ainda está lá e você deve mantê-lo e apoiá-lo.

Outra dica importante é que após a implementação do template, é muito provável que você tenha que copiar os códigos e é bem possível. Por fim, considere como esse modelo pode se traduzir em responsabilidades de equipe e considere o tempo necessário para implementar o BFF.

Finalmente, se você precisar fornecer alguma funcionalidade para uma interface de usuário móvel ou de terceiros, deve considerar usar o BFF para cada parte da linha de fundo. Mas a equipe tem que desenvolvê-lo de acordo com cada tipo de interface de usuário, para que cada back-end se adeque às necessidades de cada cliente.