0
respostas

Como saber se algo fica no microsserviço ou no BFF/Edge?

Tenho uma arquitetura microsserviços e 2 BFFs, um para web e um para mobile. Frequentemente preciso fazer algumas implementações para o mobile que não sei se serão usadas pela a web. Sendo assim existem dois caminhos viáveis: 1) implemento no microsserviço e o BFF só consome. 2) implemento diretamente no BFF MOBILE, sem depender do microsserviço.

Para requisitos funcionais costuma ser mais fácil fazer essa decisão, mas para os não funcionais (Cross Functional Requirements) essa decisão é frequentemente mais difícil. Exemplo:

O mobile está enfrentando lentidão para buscar uma determinada informação de usuário, eu devo implementar o cache de informações no BFF mobile ou direto no microsserviço de usuários, sabendo que o BFF web utiliza esse mesmo microsserviço, mas não necessariamente precisará de um cache? Colocar essa regra no microsserviço pode deixar as coisas mais engessadas para o BFF web e eventualmente até acabar atrapalhando algo no futuro?

Na primeira abordagem existe a vantagem de: se um dia a web precisar já estará pronto. Por outro lado, quem garante que a regra será utilizada exatamente da mesma forma? isso não vai contra o princípio YAGNI?

Na segunda abordagem temos mais flexibilidade, pois se no futuro a web precisar dessa mesma regra eu só preciso transferir ela pro microsserviço e fazer os dois BFFs consumirem, mas querendo ou não isso geraria um retrabalho (ainda que pequeno) no BFF mobile. Isso faz sentido?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software