What are Federated Microservices?
Federated Microservices are the independently deployable components of a federated application. In a federated application, components are loaded from multiple network locations and repositories at runtime. They are not developed by a single team or built from a single codebase. Multiple federated application components can run in a single application instance; and can be redeployed at any time, without restarting the application or interrupting other components that happen to be running.
What purpose do they serve?
Not incidentally, the word “federation” accurately describes the structure of the development organization microservices enables: one made up of small, independent teams. Despite this internal autonomy, the software produced by each team interacts successfully. Let’s consider what enables this result and what role distributed computing plays.
Microservices and Distributed Computing
What is the purpose of distribution in a microservice-style architecture: scalability, polyglossia, deployment independence? It enables all three. But which properties are indispensable to the kind of organization we want to support? If we conflate concurrency of users with concurrency of developers, we could say scalability is essential. But in the proper sense of the term, you can also scale a monolith. The same options are available: horizontal, vertical, component-wise (e.g. target hot parts of the app with a load balancer). If that doesn’t satisfy, consider that all frontends were monolithic not too long ago. Relative to backend microservices, micro-frontends are recent. As for polyglossia, it does open up the potential developer pool and language fitness-for-purpose. But what makes each team able to innovate at their own pace without being dependent on, or subject to, the activities of the others? Clearly, its deployment independence.
So while distribution may make it easier to scale, scalability is not a reason for implementing microservices. You…