Microservice User Interfaces?
Every so often I get asked a tough question that goes something like: “so, you are going to break up all your ‘backend’ into services but your front-end is still going to be a huge monolith?”. It’s a fair question. Fair enough that it deserves a short post to address it.
The main thing to keep in mind, when thinking of UI in the context of modern architecture, is that we live in a mobile-first, omni-channel world. The question of “what about the UI for this webapp?” used to make more sense when we were just building websites. Those “happy” times are long gone. Now we are building systems for a variety of platforms: web, iPhones, Androids etc. and the notion of what “user interface” is has significantly evolved.
Many software teams are now building systems with API-first architecture, not letting APIs have any hard dependencies on the target user-interface – which may end-up being a watch or a car dashboard, not just: smartphone or tablet. In this context, it becomes clear that, for most teams, Microservice Architecture only concerns your set of APIs (let’s all agree to not use hurtful words such as “backend”, we are all “full-stack developers”, by now, aren’t we?). The question of UI still stands, yes, and yes, you probably don’t want to build the user-interface part as a monolithic, single-component solution, but how you componentize your UI depends on whether you are building an iPhone app, Single-Page web app or Android app, so to large extent, that is an important, but a different question.