I've worked in a few orgs where backend devs work on both the standard backend and the BFF, often adjusting both when adding new features. It's just convenient to have a separate layer closer to the frontend, dedicated to it.
On the surface may sound weird but in practice has actually been pretty great when used mindfully.
Writing your BFF in the same codebase, sharing types, and parsing incoming data on the server without filling up the client bundle is a fab experience.
PS: I wouldn't call it "political" (negatively connotated) but "organizational" (statement of fact)
If you're arguing that most microservice vs monolith decisions represent a political and not a technical decision, I'll grant you that.
This is the degenerate form of Conways Law.
Your post brings up an interesting angle which is that the frontend and backend people can have different expectations of what the backend should actually do (perhaps leading to dependency spaghetti). In this case, introducing a BFF can be a way to isolate that from the rest of the architecture.
The BFF layer seems like a natural next step, basically a code shim to abstract away the peculiarities of each FE platform from the (presumably) "pure" business logic / API platform of the BE.
However, assuming you've got them, BFF means only one group has to get the following right:
* User authentication
* Web performance analytics
* A/B testing
* More difficult bits of HTTP (fast TLS, prefetch, streaming responses)
If you have microservices but no BFF, you're pretty much stuck with your page being substantially rendered via js. Maybe that's okay for some things? I sure don't like it.
if your app gets "bigger" this can work OK, but I've found they typically get "wider" and then any work on the monolith gets really painful and slow. My last two gigs have been at opposite ends of the spectrum and it's kind of a "pick your poison" situation.
In the case of GraphQL Federation, the ”BFF” does solve the N+1 queries problem, which is an actual problem.
Edit: Which I see you agree about.