Backend-for-Frontend (BFF) layers solve a real problem.

As systems grow, frontends often need data from multiple APIs, services, runtimes, and data stores. Without some kind of aggregation layer, the browser ends up coordinating requests, understanding backend topology, and stitching together responses.

That was exactly the problem we were trying to solve, right out the gate.

Our frontend wasn't talking to a single backend application. Different capabilities lived in different domains (We are DDD practitioners). Some experiences were powered by query-oriented read models. Others depended on operational runtimes responsible for workflow execution. Identity, billing, reporting, onboarding, and platform configuration all had their own responsibilities.

The frontend didn't need to understand any of that. So we introduced a Backend-for-Frontend layer. Very simple and straightforward, as it was early.