DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

The software you build is only as secure as the code that powers it. Learn how malicious code creeps into your software supply chain.

Apache Cassandra combines the benefits of major NoSQL databases to support data management needs not covered by traditional RDBMS vendors.

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workloads.

Related

  • Monolithic First
  • Single Responsibility Principle: The Most Important Rule in the Software World
  • Transitioning from Monolith to Microservices
  • Microservices vs. Monolith at a Startup: Making the Choice

Trending

  • Event-Driven Microservices: How Kafka and RabbitMQ Power Scalable Systems
  • Apple and Anthropic Partner on AI-Powered Vibe-Coding Tool – Public Release TBD
  • Distributed Consensus: Paxos vs. Raft and Modern Implementations
  • Implementing Explainable AI in CRM Using Stream Processing
  1. DZone
  2. Software Design and Architecture
  3. Microservices
  4. Micro-Frontend Architecture

Micro-Frontend Architecture

The goal of this architecture is to see web applications as a composition of functionalities where each one is worked by independent teams.

By 
Arnau Gris user avatar
Arnau Gris
·
Jan. 04, 22 · Analysis
Likes (15)
Comment
Save
Tweet
Share
8.6K Views

Join the DZone community and get the full member experience.

Join For Free

What Is a Micro-Frontend Architecture?

The micro-frontend architecture is a type of design applied to the frontend that allows us to divide it into smaller, individual, and semi-independent applications that work together. This frontend concept is very much inspired by the microservices used mostly in the backend.

The goal of this architecture is to see web applications as a composition of functionalities where each one is worked by independent teams. Each team has a specific business area and development is done end-to-end, from the database to the user interface.

However, this idea is not something new, this concept appeared around 2016, but before this type of architecture was already used and it was called "Frontend integration for vertical systems" or "Self-contained systems." Undoubtedly, micro-frontends have the ability to be more "trendy."

In the following image, you can see different structures where the frontend is always monolithic.

Comparison of Different Architecture Structures

In this other image, you can see a vertical structure where the frontend is not monolithic.

Micro-Frontends and Microservices

Key Concepts

Behind this architecture, there are some key concepts on which this concept is based and which must be applied to take them into account. These are explained below.

  • Technological independence: Each team can have different technological stacks without depending on each other.
  • Separation of teams: This point is more related to the work methodology. It allows you to have a more specific focus on each team and to be able to make more specific and detailed management directed to the objective.
  • Team nomenclatures: There are certain resources that must be shared between teams and each team must have a specific nomenclature to avoid mixing resources.
  • Resilient web design: Each team will work in an isolated section of the system and this will help to solve problems faster and be adaptive.
  • Use native browser events: The best option is to use native browser events that allow communication between teams, in case this is not enough I will try to keep a common API as basic as possible.

4 Best Practices For Micro-Frontend Architecture

In the world of micro-frontends, there are also good practices and it is necessary to apply them so that the result has the expected quality. Here are some of the best practices that should be applied when using a micro-frontend architecture.

1. Flow Organization

As mentioned in the previous section, this architecture allows us to have different teams independent of each other. Just for this reason, we have to take into account that each team has different objectives and challenges that have to be agreed upon between all of them. In order to achieve all these objectives, it is very important that the contracts between all parties and the API are very well defined so that communication is as fluid as possible.

This way your team will be able to move independently to achieve its objectives.

It is also important to be able to deliver in a modular way. If your business requirements prevent you from doing so, it means that this architecture does not suit your organization, which is monolithic.

2. Automation

Automation is important in all systems but in micro-frontends, it is vital, because if you don't have good automation you can create blockages with certain functionalities.

Test automation is very important because it ensures the compatibility of a micro-frontend with the other components of the system and that at the time of integration with production it will work without problems.

3. Don't Overuse Micro-Frontends

If you fragment your system too much, it is very likely that in the end you will be left with fragments that do not add value to your objective. It is important that there is a reason why the system is divided, for example, the way in which the deployment is done or the strategy that each part follows. If you overuse this architecture, in the end, it is meaningless.

4. Finding the Right Size for Your Micro-Frontend

The way to find the perfect size for your micro-frontend is similar to the one used in microservices, because if it is too big your application will have too much coupling and if they are too small you will have a fragmented application.

Unfortunately, there is no golden rule for making this division. However, it is important to remember that each business purpose must be isolated.

The best way is to decide your division in advance so that you can plan all the contracts and the interaction between all the parts before you start.

Wrap Up

In the end, it depends a lot on the business case you are facing to know if it will be worth using this architecture or not. This architecture is not valid for small teams or small projects. Mostly, it is applied in large projects with different distributed teams and with a large infrastructure. For this reason, this system is used by the largest companies, since they are the ones that get the most out of it.

Some of these companies are Ikea, DAZN, Spotify, Zalando, and many others.

I hope you have learned about this architecture that is undoubtedly already the presence of large corporations and is marking the way of working.

If you need help with Frontend Architecture, let me know!

Architecture teams Concept (generic programming) application Business requirements Test automation microservice Design

Published at DZone with permission of Arnau Gris. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Monolithic First
  • Single Responsibility Principle: The Most Important Rule in the Software World
  • Transitioning from Monolith to Microservices
  • Microservices vs. Monolith at a Startup: Making the Choice

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!