Microfrontend Principles: Guiding the Domain Driven Design
Domain Driven Design approach is best suited with the complexity of modern day applications. While microservices architecture ensures a domain driven backend, the Microfrontends extend the concept to frontend development. This means that now the applications can be vertically sliced where each slice will be responsible for a single domain. For an OTT platform like Netflix, the various domains can be – user profiling, content profiling, device management etc. Frontend development for each of this slices will be handled by the Micro frontend architecture (MFA). Therefore, it will be useful to take a look into the guiding principles of this architecture and understand what governs its numerous benefits.
Micro frontend Principles
- Decentralized Architecture: This is in direct contradiction with the monolithic style of application development. Micro Frontends need to be decentralized in their approach. Only then each Micro frontend unit will be treated solely for the objective it is meant to fulfill. This principle essentially paves way for the vertical slices. It is essential for Microfrontend’s development, governance, data management, and performance.
- Scalable Performance: Next necessity that the micro frontend architecture needs to fulfill is scalability. In fact, the decentralization principle has already cleared the way for it. Scalability and performance go hand in hand. As the number for application users increases, the application should also be able to serve them without any change in quality of its services. Scalable frontend promises:
- Smart Capacity planning
- Adaptiveness towards the traffic patterns
- Quick identification of resource bottlenecks
- Reusability: This is arguably the most important principle for this architecture. This makes sure that all the micro frontend units are independently deployable frontends on their own. This principle essentially sets the quantum size of these units. Anything smaller than that might as well be a frontend component and nothing more.
- Agility: For any development architecture for today’s times, the principle of agility is a given. Micro Frontends units should be developed and deployed in minimal time. Also, if there’s any improvement required in any of the units, then that too should be readily available.
- Flexible Ecosystem: Flexible ecosystems is necessary for both development of the micro frontend units. It states that the unit should be developed independently without any coupling or dependency. As for the integration, they should be able adapt and communicate with each other without any trouble. This allows the different development teams to choose the technology stack of their choice. If there are any reusable components pertaining to a certain domain, they can be tweaked a little for the current applications. Flexibility of the architecture will ensure that the rest of the application can work with them.
- Failure Isolation: This can be seen as an extension of the flexibility principle. While that is meant for development, this principle sets the guidelines for micro frontend maintenance. It states that if there’s any failure or update in any of the micro frontend units, it should be isolated from the rest of the application. The rest of the system should be able to run practically unaffected from this change. The agility principle will make sure that no failure or update take too much time before it gets noticeable by the user.
These principles are very much similar to the microservice architecture as they should be. Microfrontends are essential for the autonomy of the development teams and the complexity of applications. With problem-solving approaches getting more and more human centric and users looking more for experience than services, Microfrontend architecture helps in a more focused new age development.