Using a micro-apps architecture to create streamlined user experiences
At Dante we have been at the forefront of implementing a micro-services architecture to deliver solutions to our clients. This approach has yielded significant benefits to our clients in terms of accelerating the pace of delivery, reducing cost of operations and improving the resiliency of software solutions.
These benefits have led us to apply the same concepts in the context of the user experience. In essence, breaking the Web application user experience monolith into micro-apps or micro-frontends that can be developed and deployed independently and combined in various ways to provide an optimal user experience. In fact these micro-apps may be developed in different technologies and co-exist in the same solution. For example, some micro-apps may be developed in ReactJS while others are built in AngularJS.
This approach has proven to be very useful in a variety of scenarios:
- Incremental migration of large web applications to a new architecture.
- Creating unique user experiences for different types of users by assembling micro-apps differently to meet the needs of specific user roles.
- Enabling multiple organizations to contribute micro-apps to a combined eco-system.
- Enabling new models of user engagement by assembling the micro-apps in the context of a different user experience metaphor. For example, enabling a map centric user engagement model versus a task centric user engagement model.
Adopting this approach allows an organization to extend the feature team end-to-end ownership concept to the user experience. In essence, the feature team owns the functionality from frontend user experience, to back end micro-services, to persistence. And each micro-app can be independently developed, tested and deployed without affecting the rest of the system.
To achieve this goal, we needed to address the following key concepts:
- How do the various micro-apps integrate with a main app without the need to change the main app code? A registration mechanism that enables loosely coupled integration between the main app and various micro-apps and dynamic loading of micro-apps is essential.
- How is context shared between the main app and the various micro-apps in a loosely coupled manner? An Event Hub architecture is essential to making this work from a back-end integration perspective. But additional front end based context sharing also comes into play.
- What are the mechanisms by which authentication and authorization can be accomplished across micro-apps especially when hybrid technology solutions are involved?
Engage the Dante team to help you reap the benefits of a micro-apps architecture.