To keep up with the demands of the modern digital world, web applications now often cross numerous departments. Your web project may contain features created by multiple teams, and it’s sometimes best to release just particular aspects before providing the whole program.
Most of these complex programs are client-side, making maintenance difficult. There are further problems with monolithic web apps. As applications get more sophisticated and demand on-the-fly scalability and great agility, a micro-frontend design based on React become more appropriate.
Micro-frontend divides a website or web app into features maintained by various teams. Each team has a distinct business or function. This cross-functional team builds server-to-user interface capability.
Let’s take a look at the pros and cons of micro-frontend and discuss our own experiences and ways of avoiding falling into the same trap.
Pros of Micro-Frontend approach
Technology variety: Not limited to using just one library or framework. It’s possible to divide your project into sections, each of which may utilize a different framework (such as Vue.JS, AngularJS version 2+, or ReactJS). Also, you don’t have to rely on one developer; instead, you can use all of the frontend teams that specialize in a particular technology. No matter what technology was used to create this micro-frontend, it will be beneficial to integrate it everywhere in your existing application.
Multi-use: Use modules as a micro-frontend if you have many apps and code in one. If you have a huge legacy project and wish to build smaller projects, you may create a new project or use specific models as micro-frontends. When building an app from scratch, you may use several parts to create something new, grow your project, or develop it step-by-step. Multi-use helps here.
Cons of Micro-Frontend approach
Technology variety/technology overuse: Utilization of an old framework by the team. If you want your project to be successful, hire new developers or teach the ones you already have how to use less technology.
Parallel development: When anything goes wrong with one team or there are problems with deployment procedures or something similar, it will be difficult for one team to assist another. Therefore, you need to know all processes of each team and it saves time in the deployment of the product.
Multi-use: It’s great to have several teams that may be utilized to create an application. However, if you just had one team and anything were to happen to that team, all of the projects that employ these microservices would disappear.
Based on our experience we want to provide you with both successful and unsuccessful stories of the implementation of micro-frontend projects. It gives you a better understanding of what you need to use and not use in your project.
Our experience in implementing the micro-frontend architecture
Implement new code to new and old projects: Under the first case, there is an old project that’s still in development and adding new features. The difficulty with this project is that it uses an old framework, and new technologies may not meet the client’s needs. So, it is recommended to use a micro-frontend within the existing project. In this case, a new project was created to avoid rewriting the existing code and adding new functionality to all projects. A lot of time was spent writing complicated code, but it can be further utilized in other projects.
Rewrite huge legacy projects in micro-frontends: How hard is it to make a big project smaller by using micro-frontends? Because it might be hard to divide up big projects. Building an app takes a lot of time and work, so you might need to use up to 40 micro-frontends to make a copy with the same features and data flow. If your project is big, you should break it up into smaller parts. In this case, you might want to start over or think about using micro-frontends. That’s not a small app, and you probably should start making apps with more functions. It will be hard to build, keep track of, and figure out which of the 40 micro-frontends are broken. Also, I wouldn’t recommend using micro-frontends right now if you’re talking about small or weak teams. This technology is new; thus, it likely does not cover all the microservices-related issues you’ve seen, nor does it provide many examples of how to solve each problem.
High level of dependency between modules: Using this concept, you may divide a large application into micro-frontends. Your models are probably interdependent, making micro-frontends challenging. Because it must be an independent unit that can utilize any backend data when integrating another system’s data. Micro-frontends shouldn’t share components, UI elements, or JS code. Therefore, you may sometimes or often notice that a large amount of code is simply copied and pasted from one service to another service. When your app isn’t modular or monolithic. Building a micro-frontends app takes time and resources.
In this case, the problem is a microservice version of something old. All technologies are mature, and many books have been published about their uses, yet the CPU is still new and exciting under specific situations.
Easy to extend but hard to rewrite: It’s simple to add new functionalities to a project, but difficult to rewrite it. Start implementing additional features using micro-frontends or visible functionalities. Even in this case, you can reuse micro-frontends in other applications. In most cases, I won’t recommend you start extending a great application with micro-frontends, but when it’s hard to split, it’s much better to start extending or building a new functionality with micro-frontends. It will be much more helpful, and you will spend less time extending but not building something new or rethinking the big application and splitting it into micro-frontends.
Good design is always in good hands: If we were talking about a lot of things, we would have many examples, but if there is one breakthrough, one amazing fact about the micro-frontend: it is always in good hands. It means that if your team does some research, if your development team works with your business team, then you will have everything you need to produce your product.
So, update or add micro-frontend to your code. It will speed up development and save a ton of resources. Because it’s hard to put a team on a very old project and try to understand how it works. You can avoid this by just building something new with the new code or when it’s already built into micro-frontends, making it easier for developers to understand it.