Platform Freedom with Micro-frontends

Rate this content
Bookmark
Slides

Can React and TypeScript applications run on different platforms (app shells) with minimal source code changes ? Yes !!! with the Micro-frontend strategy in Multiplying architecture. I’ll be presenting a new dimension of Micro-frontend, that paved a way to decouple the components of a larger monolithic React application using a new framework called Multiplying architecture. The framework is highly flexible and scalable for code development, also aiding the business and community.

This talk has been presented at React Advanced 2022, check out the latest edition of this React Conference.

FAQ

Microfrontend architecture is a design approach where frontend applications are broken down into smaller, independently deliverable units. Each unit, or microfrontend, can be developed, maintained, and deployed by autonomous teams. This allows for better scalability and flexibility in managing large and complex web applications.

Microfrontends address the challenges of monolithic applications by breaking them into smaller pieces that are easier to manage, reducing errors, production issues, and bugs. This modular approach enables multiple teams to work independently, speeding up development processes and reducing deployment complexities.

The two primary strategies for microfrontend integration are runtime integration and build-time integration. Runtime integration involves dynamically binding each microfrontend to the container application at runtime, while build-time integration uses package managers like NPM to incorporate microfrontends during the build process.

The multiplying architecture is a framework developed to enhance the deployment of microfrontends across different platforms with minimal code changes. It involves abstracting React components and wrapping them so they can be integrated into various environments like VS Code, web browsers, and GitHub as extensions.

TypeScript provides static type checking, which enhances the reliability and maintainability of web technologies used in microfrontends. It ensures type safety, helping developers coming from strongly-typed languages like Java to adapt more easily and develop robust frontend architectures.

Webpack's module federation feature allows microfrontends to share libraries and dependencies dynamically, reducing redundancy and improving load times. It enables the loading of specific microfrontends only when needed, optimizing resource utilization and performance in web applications.

The BFF pattern is a design approach where a backend service is specifically tailored to meet the needs of a particular frontend (microfrontend). It acts as an intermediary layer that processes requests and optimizes responses for the frontend, simplifying data handling and improving user interface performance.

Saravana Srinivasan
Saravana Srinivasan
31 min
24 Oct, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
This talk explores Microfrontend strategies and the benefits of using the multiplying architecture to deploy applications on multiple platforms. It discusses the concepts of platform freedom, microfrontend implementation, and Backend for Frontend (BFF). The talk also highlights the challenges of debugging and styling in larger microfrontend applications and introduces the multiplying architecture as a solution. It explains the core elements of the multiplying architecture and how it enables communication between different tech stacks. The talk concludes by showcasing the use of embedded lists, federated modules, and Webpack configuration to achieve efficient code sharing and deployment across multiple distributions.

1. Platform Freedom with Microfrontends

Short description:

This talk will take you through the Microfrontend strategies, the problems that are solved by the Microfrontend architecture, a new framework that was built on top of the Microfrontend strategies and how this multiplying of the new framework helped us to deploy our applications on multiple distributed systems. I wanted to share the experience what we had and the experience and the learnings that we had while implementing certain use cases. We started with micro-friendlings, and we then introduced a framework called the multiplying architecture. And we had certain learnings out of it. And finally, with the collaboration of micro-friendly strategies, along with the micro-multiplying architecture. We were able to achieve our results. Firstly, I would like to break my topic platform freedom with micro-friendliness. And I want to emphasize what I mean by the term platform freedom. We all know that web technology is completely dominating the software development industry at this point. And web technology has become a default choice for most of the developers and the companies who wish to develop an application or a product for their use case.

Hello, and welcome everyone to the talk, Platform Freedom with Microfrontends. This talk will take you through the Microfrontend strategies, the problems that are solved by the Microfrontend architecture, a new framework that was built on top of the Microfrontend strategies and how this multiplying of the new framework helped us to deploy our applications on multiple distributed systems.

So, before getting into the topic, let me introduce myself and Saravan Balaji Srinivasan, working as a senior software engineer at Red Hat as a role-full stack developer with mostly on the JavaScript technologies. I work in the areas where we build tool links for business automation products and serverless workflow specifications, etc. So, yeah, that's about me. And let's get back into the topic.

I would like to start with the Red Hat story. I wanted to take this talk in such a way that I wanted to share the experience what we had and the experience and the learnings that we had while implementing certain use cases. Sometime ago, we had a use case where we wanted to deploy certain tools that we built to run on various platforms, and we wanted to just reuse the components that we recreated on the React JS. So that was the story idea behind it. We started with micro-friendlings, and we then introduced a framework called the multiplying architecture. And we had certain learnings out of it. And finally, with the collaboration of micro-friendly strategies, along with the micro-multiplying architecture. We were able to achieve our results. So this upcoming slide will show you how we were able to do it.

Firstly, I would like to break my topic platform freedom with micro-friendliness. And I want to emphasize what I mean by the term platform freedom. So we all know that web technology is completely dominating the software development industry at this point. And web technology has become a default choice for most of the developers and the companies who wish to develop an application or a product for their use case. This is because web technology has a stronger foundation. It has stronger standards, patterns, techniques. And the architectures of web technology are evolving very fast over the period of time. Also, it has a rich ecosystem. When we speak about the web technologies, we cannot ignore JavaScript. So now, at this point, JavaScript is everywhere. Though it initially started with a scripting language for a small purpose, and now it has evolved over a period of time, and you can find JavaScript everywhere on your browser. Browser of your laptop, on your mobile phones, on your PWA, on your servers, everywhere you can see JavaScript now. And also, after the introduction of the TypeScript, I personally feel that, just because of its behavior of static type checking, the perception of the developers on the web technology has totally changed. So, people like me who started my career in the Java technology, as a Java developer, after I turned into a JavaScript engineer and then, for web technology and all, as a full stack engineer now, I started liking web technology after learning TypeScript, because my code is totally type safe. And I will also emphasize that – browser is everywhere now at this point, right? So, you can have your browser on your laptop, you can have it on your mobile, and servers, and PWA, etc.

2. Platform and Microfrontend Strategies

Short description:

The goal is to run applications on multiple platforms such as VS Code, browsers, and GitHub. The web technology has evolved rapidly, starting with evolutionary architecture, followed by microservices and serverless. Micro frontend strategies are used to break down monolithic applications into smaller, independently deliverable frontend applications. Each micro frontend can be owned and maintained by an individual and autonomous team.

Now, the browser is not just a window to access your internet. So, you can show your graphical user interface anywhere on your browser and that can run on any platform. So, the term what I mean by the platform in my topic is, the application must run on platforms. So, in our use case, the platforms that we wanted to achieve is that, to run our applications on the VS code IDE as an extension. And it should run on the browser as an extension. Maybe in case of Chrome, it should run as a Chrome extension. And in case of Firefox, it has to run as a Firefox extension. And the same set of code, same set of components has to run on the web app and also on the GitHub as a GitHub extension. So, this was the end goal that we wanted to achieve. For which, I mean, this is what I mean, I want my two links to run on VS Code, GitHub browser as a web app and also on the...

So, while implementing, when we thought about this implementation, we were analyzing the architecture that we have on the web technology. The web technology has, I mean, as I mentioned in the previous slide, it is growing very fast. I mean, starting with the evolutionary architecture, which supports incremental guided change as a first principle across multiple dimensions. Then comes path breaker, which we call it as microservices, which allowed the backend to be broken into a smaller decoupled microservices, which can run independently. And then comes the buzzing word at this point, which is serverless, where backend is a service. You can deploy your function on a server, and you can just pay for the number of hits that a function gets and how much amount of time that the function is used. You can just pay for that instead of owning the entire server. And finally, we have the term micro frontend, which will, again, I mean, from where we thought about implementing micro frontend strategies for a use case. That takes me to the next slide again.

I assumed that most of you would have already tried something out on the micro frontend strategies or maybe you would have heard the term, but still, I would like to, I mean, touch base with the strategies of micro frontend to the people who are yet to learn it. So consider if you have a bigger monolith frontend application, when I say monolith, it's a huge chunk of application which is maintained by a vast team and which has a huge chunk of code. When you have this kind of a scenario, you're obviously bound to a lot of errors, production issues, bugs, which can't be addressed that easily. So to address this problem, developers across the world, they started thinking of a solution to break this monolith application into smaller pieces. This happened some five, six years back. At that point of time, microservice was evolving a lot at the backend technologies, so the frontend developers wanted to have this similar set of strategies to be on the frontend as well. So that's when they introduced the term called microfrontend. That's how the microfrontend evolved. As for Kam Jackson, who's a renowned architect, and microfrontend architecture is an architectural style where independently deliverable frontend applications are composed into a greater whole. Simply, I can say that breaking off a monolith application into smaller microfrontends, and each microfrontend can be owned by an individual and autonomous team. They can have their own deployments, they can have their own release cycles, they can maintain their own microfrontends without depending on the other other microfrontends or other teams.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Scaling Up with Remix and Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Understanding React’s Fiber Architecture
React Advanced 2022React Advanced 2022
29 min
Understanding React’s Fiber Architecture
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Full Stack Components
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
Monolith to Micro-Frontends
React Advanced 2022React Advanced 2022
22 min
Monolith to Micro-Frontends
Top Content
Microfrontends are considered as a solution to the problems of exponential growth, code duplication, and unclear ownership in older applications. Transitioning from a monolith to microfrontends involves decoupling the system and exploring options like a modular monolith. Microfrontends enable independent deployments and runtime composition, but there is a discussion about the alternative of keeping an integrated application composed at runtime. Choosing a composition model and a router are crucial decisions in the technical plan. The Strangler pattern and the reverse Strangler pattern are used to gradually replace parts of the monolith with the new application.
The Eternal Sunshine of the Zero Build Pipeline
React Finland 2021React Finland 2021
36 min
The Eternal Sunshine of the Zero Build Pipeline
For many years, we have migrated all our devtools to Node.js for the sake of simplicity: a common language (JS/TS), a large ecosystem (NPM), and a powerful engine. In the meantime, we moved a lot of computation tasks to the client-side thanks to PWA and JavaScript Hegemony.
So we made Webapps for years, developing with awesome reactive frameworks and bundling a lot of dependencies. We progressively moved from our simplicity to complex apps toolchains. We've become the new Java-like ecosystem. It sucks.
It's 2021, we've got a lot of new technologies to sustain our Users eXperience. It's time to have a break and rethink our tools rather than going faster and faster in the same direction. It's time to redesign the Developer eXperience. It's time for a bundle-free dev environment. It's time to embrace a new frontend building philosophy, still with our lovely JavaScript.
Introducing Snowpack, Vite, Astro, and other Bare Modules tools concepts!
Composition vs Configuration: How to Build Flexible, Resilient and Future-proof Components
React Summit 2022React Summit 2022
17 min
Composition vs Configuration: How to Build Flexible, Resilient and Future-proof Components
Top Content
Today's Talk discusses building flexible, resilient, and future-proof React components using composition and configuration approaches. The composition approach allows for flexibility without excessive conditional logic by using multiple components and passing props. The context API can be used for variant styling, allowing for appropriate styling and class specification. Adding variants and icons is made easy by consuming the variant context. The composition and configuration approaches can be combined for the best of both worlds.

Workshops on related topic

AI on Demand: Serverless AI
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
Micro Frontends with Module Federation and React
JSNation Live 2021JSNation Live 2021
113 min
Micro Frontends with Module Federation and React
Workshop
Alex Lobera
Alex Lobera
Did you ever work in a monolithic Next.js app? I did and scaling a large React app so that many teams can work simultaneously is not easy. With micro frontends you can break up a frontend monolith into smaller pieces so that each team can build and deploy independently. In this workshop you'll learn how to build large React apps that scale using micro frontends.
High-performance Next.js
React Summit 2022React Summit 2022
50 min
High-performance Next.js
Workshop
Michele Riva
Michele Riva
Next.js is a compelling framework that makes many tasks effortless by providing many out-of-the-box solutions. But as soon as our app needs to scale, it is essential to maintain high performance without compromising maintenance and server costs. In this workshop, we will see how to analyze Next.js performances, resources usage, how to scale it, and how to make the right decisions while writing the application architecture.
Micro-Frontends with Module Federation and Angular
JSNation Live 2021JSNation Live 2021
113 min
Micro-Frontends with Module Federation and Angular
Workshop
Manfred Steyer
Manfred Steyer
Ever more companies are choosing Micro-Frontends. However, they are anything but easy to implement. Fortunately, Module Federation introduced with webpack 5 has initiated a crucial change of direction.
In this interactive workshop, you will learn from Manfred Steyer -- Angular GDE and Trusted Collaborator in the Angular team -- how to plan and implement Micro-Frontend architectures with Angular and the brand new webpack Module Federation. We talk about sharing libraries and advanced concepts like dealing with version mismatches, dynamic Module Federation, and integration into monorepos.
After the individual exercises, you will have a case study you can use as a template for your projects. This workshop helps you evaluate the individual options for your projects.
Prerequisites:You should have some experience with Angular.