O Desafio do Acoplamento entre APIs: Backend For Frontend (BFF)

Em arquiteturas tradicionais, é comum expor uma única API REST ou GraphQL centralizada (uma General-Purpose API) para atender a todas as aplicações clientes do sistema. Essa API genérica serve tanto o aplicativo mobile quanto a aplicação web desktop, painéis administrativos e dispositivos IoT, retornando a mesma estrutura de dados para qualquer consumidor.

Conforme a aplicação cresce, as necessidades de interface de cada dispositivo começam a divergir drasticamente. Aplicativos móveis exigem dados compactados e menos chamadas de rede devido a conexões 3G/4G/5G instáveis e telas menores. Já aplicações web desktop possuem espaço de sobra em tela, conexões de alta velocidade e exigem visões agregadas e detalhadas. Tentar atender a todos esses cenários com um único ponto de entrada gera degradação de performance e acoplamento excessivo.

A Abordagem Tradicional: API Gateway Genérico Único

A tentativa convencional de resolver a comunicação entre clientes e microsserviços baseou-se no uso de um API Gateway Monolítico. Nesse modelo, uma única camada de fachada recebe todas as requisições, faz o roteamento para os microsserviços internos e devolve respostas padronizadas para qualquer tipo de dispositivo.

Limitações do API Gateway Genérico

  • Over-fetching e Under-fetching de Dados: Dispositivos móveis recebem dezenas de campos desnecessários para a tela atual (over-fetching) ou precisam fazer múltiplas chamadas consecutivas para montar uma única interface (under-fetching);
  • Acoplamento de Times: Mudanças na API para atender uma nova funcionalidade do aplicativo mobile correm o risco de quebrar a aplicação web ou exigir alinhamentos entre múltiplos times;
  • Gargalo de Implantação: O API Gateway central vira um ponto único de alteração, onde qualquer novo deploy exige coordenação global e aumenta o risco de regressões;
  • Lógica de Interface no Backend Central: Validações específicas de telas ou formatação de dados para visualização acabam poluindo os microsserviços de domínio.

A Abordagem Moderna: Backend For Frontend (BFF) Pattern

O padrão Backend For Frontend (BFF) resolve esse problema criando camadas de backend customizadas e dedicadas para cada tipo de interface de usuário. Em vez de uma API única para todos, cria-se um BFF específico para o app iOS/Android, outro para a aplicação Web Desktop e, se necessário, outro para integrações de parceiros.

Cada camada BFF é desenhada, mantida e frequentemente implantada pelo mesmo time responsável pela interface do usuário (Frontend) correspondente.

Como Funciona o Mecanismo

  1. Requisição Otimizada: O aplicativo mobile faz uma única chamada HTTP para o seu Mobile-BFF, solicitando apenas o estritamente necessário para montar a tela atual.
  2. Orquestração Interna: O Mobile-BFF faz as chamadas em paralelo para os microsserviços de catálogo, preços e perfil na rede interna de alta velocidade.
  3. Formatação e Agregação: O BFF filtra os campos desnecessários, formata os dados para o padrão do aplicativo e devolve um único JSON enxuto e pronto para ser renderizado.
  4. Isolamento de Mudanças: Atualizações na interface da Web alteram apenas o Web-BFF, sem impactar em nada o ecossistema móvel.

Estratégias de Implementação do BFF

1. BFF por Tipo de Dispositivo (Mobile vs. Web)

Cria-se um BFF unificado para plataformas móveis (iOS/Android) e outro para navegadores web. É a abordagem mais comum e oferece um excelente equilíbrio entre desempenho e manutenção.

  • Vantagens: Atende bem às diferenças de largura de banda e tamanho de tela sem multiplicar excessivamente o número de aplicações.
  • Desvantagens: Se o app iOS e Android divergirem muito em funcionalidades, o Mobile-BFF pode começar a acumular condicionais internas.

2. BFF por Aplicação/Plataforma Específica

Cada aplicação do ecossistema possui seu próprio backend dedicado (ex: iOS-BFF, Android-BFF, Admin-Web-BFF).

  • Vantagens: Autonomia total para os times de frontend e otimização máxima para o ciclo de vida daquela plataforma.
  • Desvantagens: Risco de duplicação de lógica de agregação entre os diferentes BFFs se não houver um bom alinhamento de arquitetura.

Quando Utilizar Cada Abordagem?

  • Utilize uma API Genérica (API Gateway Único) quando: O sistema for pequeno, possuir apenas uma aplicação web consumindo os dados ou os requisitos de dados entre mobile e web forem idênticos.
  • Utilize BFF por Tipo de Dispositivo quando: O aplicativo móvel sofrer com lentidão devido a múltiplas chamadas de rede (chattiness) e a equipe desejar otimizar o consumo de dados móveis sem inflar as APIs internas.
  • Utilize BFF por Aplicação Específica quando: Existirem times independentes cuidando de cada plataforma (iOS, Android, Web), com ciclos de release distintos e interfaces significativamente diferentes.

Na prática, o padrão Backend For Frontend (BFF) tornou-se fundamental para grandes produtos digitais, permitindo que times de frontend tenham autonomia total para evoluir suas interfaces com altíssima performance de rede.

Quer uma solução personalizada para seu negócio?

Nossos especialistas em cloud computing analisam seu caso e criam uma estratégia sob medida.

Compartilhe essa publicação
Sobre o autor

Emanuel Nerys

Sou Arquiteto Cloud na KXC, focado em desenhar e implementar arquiteturas multi-cloud resilientes e de alta disponibilidade. Garanto o alinhamento de infraestruturas complexas com as melhores práticas de mercado, integrando segurança de ponta a ponta e cultura DevOps. Atuo na liderança técnica de ambientes altamente dinâmicos e automatizados, com forte domínio em Kubernetes.

Ver perfil e posts