SlideShare a Scribd company logo
2019 2020 2023 2024
AGENDA
... ...
Context
Micro frontends motivation
Issues & solutions
Carry outs
1.
2.
3.
4.
2019 2020 2023 2024
CONTEXT
... ...
Team: 100+ members
Application
Extensible / Customizable
No-​
Code Platform
Monolith
Tech stack
SPA
Custom JS Framework
AMD Architecture
MVVM Pattern
2019 2020 2023 2024
ISSUES
... ...
Maintenance
Optimizations
New features
Bugs
2019 2020 2023 2024
ISSUES
... ...
Specific knowledge required
Internal community limitation
Documentation
Hiring issues
2019 2020 2023 2024
CHANGE TECH STACK ISSUES
... ...
New tech stack issues
Existing functionality and plans
Ability to integrate new techs in monolith app
Lack of expertise & experience
Educate big team
2019 2020 2023 2024
MICRO FRONTENDS: General Info
... ...
Benefits
Incremental upgrades
Decoupled codebases
Independent deployment
2019 2020 2023 2024
MICRO FRONTENDS: First steps
... ...
Preliminary work
Identifу a suitable task
Make a PoC
Be ready to face issues
2019 2020 2023 2024
MICRO FRONTENDS: First steps
... ...
Created Component with Angular
Angular
Cmp
2019 2020 2023 2024
MICRO FRONTENDS: First steps
... ...
Packed as Web-​
component
Web Cmp
Angular
Cmp
2019 2020 2023 2024
MICRO FRONTENDS: First steps
... ...
Packed as Web-​
component
import {Component, Injector} from '@angular/core';
import {createCustomElement} from '@angular/elements';
//...
@Component({
//...
})
export class AppComponent {
constructor(
injector: Injector,
public forecast: ForecastComponent,
) {
// Convert `ForecastComponent` to a custom element.
const ForecastComponent = createCustomElement(ForecastComponent,
{injector});
// Register the custom element with the browser.
customElements.define('forecast', ForecastComponent);
}
}
2019 2020 2023 2024
MICRO FRONTENDS: First steps
... ...
Used proxy for integration into existing App
Proxy Cmp
Web Cmp
Angular
Cmp
2019 2020 2023 2024
MICRO FRONTENDS: First steps
... ...
Results
Unlocked new tech injection flow
Gained new expertise & experience
Faced new issues
Proxy Cmp
Web Cmp
Angular
Cmp
Proxy Cmp
Web Cmp
Angular
Cmp
Proxy Cmp
Web Cmp
Angular
Cmp
2019 2020 2023 2024
MICRO FRONTENDS: ISSUES
... ...
Issues
Each component loads own deps
Increases traffic
Downgrades performance
Proxy Cmp
Web Cmp
Angular
Cmp Angular, RxJS
<code>
Component
<code>
2019 2020 2023 2024
MICRO FRONTENDS: Externals
... ...
The externals configuration option
provides a way of excluding
dependencies from the output bundles.
Instead, the created bundle relies on
that dependency to be present in
application environment.
Angular, RxJS
<code>
Component
<code>
Component
<code>
Component
<code>
2019 2020 2023 2024
MICRO FRONTENDS: Externals
... ...
Build external deps
"ng-​
core": {
"builder": "ngx-​
build-​
plus:browser",
"options": {
"outputPath": "dist/libs/studio-​
enterprise/util/ng-​
core",
//...
"scripts": [
//...
"node_modules/rxjs/dist/bundles/rxjs.umd.js",
"dist/@angular/core/bundles/core.umd.js",
"dist/@angular/common/bundles/common.umd.js",
"dist/@angular/common/bundles/common-​
http.umd.js",
"dist/@angular/compiler/bundles/compiler.umd.js",
"dist/@angular/elements/bundles/elements.umd.js",
"dist/@angular/platform-​
browser/bundles/platform-​
browser.umd.js",
"dist/@angular/platform-​
browser-​
dynamic/bundles/platform-​
browser-​
dynamic.umd.js"
],
},
//...
},
Angular, RxJS
<code>
2019 2020 2023 2024
MICRO FRONTENDS: Externals
... ...
External deps files
Angular, RxJS
<code>
Component
<code>
Component
<code>
Component
<code>
2019 2020 2023 2024
MICRO FRONTENDS: Externals
... ...
Build component
"forecast": {
"builder": "ngx-​
build-​
plus:browser",
"options": {
"outputPath": "dist/libs/studio-​
enterprise/forecast/",
//...
"extraWebpackConfig": "libs/studio-​
enterprise/util/ng-​
core/webpack.externals.js"
},
//...
},
Component
<code> "externals": {
"rxjs": "rxjs",
"@angular/core": true,
"@angular/common": true,
"@angular/common/http": true,
"@angular/platform-​
browser": true,
"@angular/platform-​
browser-​
dynamic": true,
"@angular/compiler": true,
"@angular/elements": true,
}
1
2
2019 2020 2023 2024
MICRO FRONTENDS: Externals
... ...
Component files
2019 2020 2023 2024
MICRO FRONTENDS: Externals
... ...
Optimization results
Angular, RxJS
<code>
Component
<code>
Component
<code>
Component
<code>
~1MB
2019 2020 2023 2024
MICRO FRONTENDS: Evolution
... ...
Since that time
Gained experience & expertise
Switched to new tech stack
for new features
2019 2020 2023 2024
MICRO FRONTENDS: Evolution
... ...
New issues
Increased Components
code size
Internal libs were not shared
between components
Angular
RxJS
<code>
Component
Dep4 Dep5
Dep1 Dep2 Dep3
Component
Dep4
Dep1 Dep2
Component
Dep5
Dep1 Dep3
2019 2020 2023 2024
MICRO FRONTENDS: MF
... ...
Module Federation is a feature introduced
in Webpack 5 that enables dynamic and
decentralized sharing of JavaScript
modules between different
Webpack-​
bundles at runtime.
Component
<code>
Dep4 Dep5
Dep1 Dep2 Dep3
Component
<code>
Dep4
Dep1 Dep2
Component
<code>
Dep5
Dep1 Dep3
Dep2
2019 2020 2023 2024
MICRO FRONTENDS: MF
... ...
Build config
withModuleFederationPlugin({
name: 'forecast_component',
filename: 'forecast-​
component.js',
exposes: {
'./Main': path.join(__dirname, './src/main.ts'),
},
shared: [
'@creatio/sdk/util/common-​
types',
'@creatio/sdk/util/utils',
'@creatio/studio-​
enterprise/ui/components',
'@creatio/studio-​
enterprise/feature/components-​
preprocessors',
'@creatio/studio-​
enterprise/ui/cdk',
'@creatio/studio-​
enterprise/ui/schema',
'@creatio/studio-​
enterprise/ui/data-​
grid-​
cdk',
'@creatio/studio-​
enterprise/ui/view',
'@creatio/studio-​
enterprise/feature/schema-​
view',
'@creatio/studio-​
enterprise/util/model',
'@creatio/studio-​
enterprise/util/low-​
code',
],
});
Component
<code>
DepN
Dep1 ...
2019 2020 2023 2024
MICRO FRONTENDS: MF
... ...
Build result
Remote entry
Dependency
Component
<code>
DepN
Dep1 ...
2019 2020 2023 2024
MICRO FRONTENDS: MF
... ...
Loading schema
1 2
2019 2020 2023 2024
MICRO FRONTENDS: MF
... ...
Optimization results
Component Before, Mb After, Mb %
Forecast 9.2 2.7 71%
Analytics Dashboard 5.6 0.05 99%
Campaign Gallery 3.11 0.05 99%
Omnichannel Messaging 2.15 0.34 84%
... ... ... ...
2019 2020 2023 2024
MICRO FRONTENDS: Further plans
... ...
Plans for the future
Split libs into a smaller chunks for more advanced
lazy loading
Optimize build process
2019 2020 2023 2024
MICRO FRONTENDS: Carry outs
... ...
Micro frontends
Enabled possibility and added flexibility in using new
technologies
Led to new issues
Join Creatio

More Related Content

Similar to "Micro frontends: Unbelievably true life story", Dmytro Pavlov

(Manual) auto cad 2000 visual lisp tutorial (autocad)
(Manual) auto cad 2000 visual lisp tutorial (autocad)(Manual) auto cad 2000 visual lisp tutorial (autocad)
(Manual) auto cad 2000 visual lisp tutorial (autocad)
Ketut Swandana
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
Matt Raible
 
Flying a Drone with JavaScript and Computer Vision
Flying a Drone with JavaScript and Computer VisionFlying a Drone with JavaScript and Computer Vision
Flying a Drone with JavaScript and Computer Vision
Ivo Andreev
 
Gajendra_RESUME
Gajendra_RESUMEGajendra_RESUME
Gajendra_RESUME
Gajendra Kumar
 
Cloud-native Java EE-volution
Cloud-native Java EE-volutionCloud-native Java EE-volution
Cloud-native Java EE-volution
QAware GmbH
 
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
Pedro J. Molina
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Nicolas HAAN
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019
PhuocNT (Fresher.VN)
 
Report-V1.5_with_comments
Report-V1.5_with_commentsReport-V1.5_with_comments
Report-V1.5_with_comments
Mohamed Abdelsalam
 
Introduction to Skia by Ryan Chou @20141008
Introduction to Skia by Ryan Chou @20141008Introduction to Skia by Ryan Chou @20141008
Introduction to Skia by Ryan Chou @20141008
Ryan Chou
 
Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web Apps
Caesar Chi
 
Mohan_Dissertation (1)
Mohan_Dissertation (1)Mohan_Dissertation (1)
Mohan_Dissertation (1)
Mohan Bhargav
 
Angular 8
Angular 8 Angular 8
Angular 8
Sunil OS
 
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
Antonio García-Domínguez
 
Calculating Mass Properties of the 3D geometry. Connection between SolidWorks...
Calculating Mass Properties of the 3D geometry. Connection between SolidWorks...Calculating Mass Properties of the 3D geometry. Connection between SolidWorks...
Calculating Mass Properties of the 3D geometry. Connection between SolidWorks...
FIDE Master Tihomir Dovramadjiev PhD
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
Amir Zuker
 
Using Deep Learning for Computer Vision Applications
Using Deep Learning for Computer Vision ApplicationsUsing Deep Learning for Computer Vision Applications
Using Deep Learning for Computer Vision Applications
Farshid Pirahansiah
 
Manoj(Java Developer)_Resume
Manoj(Java Developer)_ResumeManoj(Java Developer)_Resume
Manoj(Java Developer)_Resume
Vamsi Manoj
 
Utsha guha cocoa:swift-exp5
Utsha guha cocoa:swift-exp5Utsha guha cocoa:swift-exp5
Utsha guha cocoa:swift-exp5
Utsha Guha
 
Solidworks software
Solidworks softwareSolidworks software
Solidworks software
sanjeev kumar shah
 

Similar to "Micro frontends: Unbelievably true life story", Dmytro Pavlov (20)

(Manual) auto cad 2000 visual lisp tutorial (autocad)
(Manual) auto cad 2000 visual lisp tutorial (autocad)(Manual) auto cad 2000 visual lisp tutorial (autocad)
(Manual) auto cad 2000 visual lisp tutorial (autocad)
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
 
Flying a Drone with JavaScript and Computer Vision
Flying a Drone with JavaScript and Computer VisionFlying a Drone with JavaScript and Computer Vision
Flying a Drone with JavaScript and Computer Vision
 
Gajendra_RESUME
Gajendra_RESUMEGajendra_RESUME
Gajendra_RESUME
 
Cloud-native Java EE-volution
Cloud-native Java EE-volutionCloud-native Java EE-volution
Cloud-native Java EE-volution
 
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019
 
Report-V1.5_with_comments
Report-V1.5_with_commentsReport-V1.5_with_comments
Report-V1.5_with_comments
 
Introduction to Skia by Ryan Chou @20141008
Introduction to Skia by Ryan Chou @20141008Introduction to Skia by Ryan Chou @20141008
Introduction to Skia by Ryan Chou @20141008
 
Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web Apps
 
Mohan_Dissertation (1)
Mohan_Dissertation (1)Mohan_Dissertation (1)
Mohan_Dissertation (1)
 
Angular 8
Angular 8 Angular 8
Angular 8
 
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
 
Calculating Mass Properties of the 3D geometry. Connection between SolidWorks...
Calculating Mass Properties of the 3D geometry. Connection between SolidWorks...Calculating Mass Properties of the 3D geometry. Connection between SolidWorks...
Calculating Mass Properties of the 3D geometry. Connection between SolidWorks...
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
 
Using Deep Learning for Computer Vision Applications
Using Deep Learning for Computer Vision ApplicationsUsing Deep Learning for Computer Vision Applications
Using Deep Learning for Computer Vision Applications
 
Manoj(Java Developer)_Resume
Manoj(Java Developer)_ResumeManoj(Java Developer)_Resume
Manoj(Java Developer)_Resume
 
Utsha guha cocoa:swift-exp5
Utsha guha cocoa:swift-exp5Utsha guha cocoa:swift-exp5
Utsha guha cocoa:swift-exp5
 
Solidworks software
Solidworks softwareSolidworks software
Solidworks software
 

More from Fwdays

"What I learned through reverse engineering", Yuri Artiukh
"What I learned through reverse engineering", Yuri Artiukh"What I learned through reverse engineering", Yuri Artiukh
"What I learned through reverse engineering", Yuri Artiukh
Fwdays
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
Fwdays
 
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
Fwdays
 
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
Fwdays
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
Fwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
Fwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
Fwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
Fwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
Fwdays
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
Fwdays
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
Fwdays
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
Fwdays
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
Fwdays
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
Fwdays
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
Fwdays
 

More from Fwdays (20)

"What I learned through reverse engineering", Yuri Artiukh
"What I learned through reverse engineering", Yuri Artiukh"What I learned through reverse engineering", Yuri Artiukh
"What I learned through reverse engineering", Yuri Artiukh
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
"Objects validation and comparison using runtime types (io-ts)", Oleksandr Suhak
 
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
"JavaScript. Standard evolution, when nobody cares", Roman Savitskyi
 
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 

Recently uploaded

leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
GDSC PJATK
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 

Recently uploaded (20)

leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 

"Micro frontends: Unbelievably true life story", Dmytro Pavlov

  • 1.
  • 2.
  • 3. 2019 2020 2023 2024 AGENDA ... ... Context Micro frontends motivation Issues & solutions Carry outs 1. 2. 3. 4.
  • 4. 2019 2020 2023 2024 CONTEXT ... ... Team: 100+ members Application Extensible / Customizable No-​ Code Platform Monolith Tech stack SPA Custom JS Framework AMD Architecture MVVM Pattern
  • 5. 2019 2020 2023 2024 ISSUES ... ... Maintenance Optimizations New features Bugs
  • 6. 2019 2020 2023 2024 ISSUES ... ... Specific knowledge required Internal community limitation Documentation Hiring issues
  • 7. 2019 2020 2023 2024 CHANGE TECH STACK ISSUES ... ... New tech stack issues Existing functionality and plans Ability to integrate new techs in monolith app Lack of expertise & experience Educate big team
  • 8. 2019 2020 2023 2024 MICRO FRONTENDS: General Info ... ... Benefits Incremental upgrades Decoupled codebases Independent deployment
  • 9. 2019 2020 2023 2024 MICRO FRONTENDS: First steps ... ... Preliminary work Identifу a suitable task Make a PoC Be ready to face issues
  • 10. 2019 2020 2023 2024 MICRO FRONTENDS: First steps ... ... Created Component with Angular Angular Cmp
  • 11. 2019 2020 2023 2024 MICRO FRONTENDS: First steps ... ... Packed as Web-​ component Web Cmp Angular Cmp
  • 12. 2019 2020 2023 2024 MICRO FRONTENDS: First steps ... ... Packed as Web-​ component import {Component, Injector} from '@angular/core'; import {createCustomElement} from '@angular/elements'; //... @Component({ //... }) export class AppComponent { constructor( injector: Injector, public forecast: ForecastComponent, ) { // Convert `ForecastComponent` to a custom element. const ForecastComponent = createCustomElement(ForecastComponent, {injector}); // Register the custom element with the browser. customElements.define('forecast', ForecastComponent); } }
  • 13. 2019 2020 2023 2024 MICRO FRONTENDS: First steps ... ... Used proxy for integration into existing App Proxy Cmp Web Cmp Angular Cmp
  • 14. 2019 2020 2023 2024 MICRO FRONTENDS: First steps ... ... Results Unlocked new tech injection flow Gained new expertise & experience Faced new issues Proxy Cmp Web Cmp Angular Cmp Proxy Cmp Web Cmp Angular Cmp Proxy Cmp Web Cmp Angular Cmp
  • 15. 2019 2020 2023 2024 MICRO FRONTENDS: ISSUES ... ... Issues Each component loads own deps Increases traffic Downgrades performance Proxy Cmp Web Cmp Angular Cmp Angular, RxJS <code> Component <code>
  • 16. 2019 2020 2023 2024 MICRO FRONTENDS: Externals ... ... The externals configuration option provides a way of excluding dependencies from the output bundles. Instead, the created bundle relies on that dependency to be present in application environment. Angular, RxJS <code> Component <code> Component <code> Component <code>
  • 17. 2019 2020 2023 2024 MICRO FRONTENDS: Externals ... ... Build external deps "ng-​ core": { "builder": "ngx-​ build-​ plus:browser", "options": { "outputPath": "dist/libs/studio-​ enterprise/util/ng-​ core", //... "scripts": [ //... "node_modules/rxjs/dist/bundles/rxjs.umd.js", "dist/@angular/core/bundles/core.umd.js", "dist/@angular/common/bundles/common.umd.js", "dist/@angular/common/bundles/common-​ http.umd.js", "dist/@angular/compiler/bundles/compiler.umd.js", "dist/@angular/elements/bundles/elements.umd.js", "dist/@angular/platform-​ browser/bundles/platform-​ browser.umd.js", "dist/@angular/platform-​ browser-​ dynamic/bundles/platform-​ browser-​ dynamic.umd.js" ], }, //... }, Angular, RxJS <code>
  • 18. 2019 2020 2023 2024 MICRO FRONTENDS: Externals ... ... External deps files Angular, RxJS <code> Component <code> Component <code> Component <code>
  • 19. 2019 2020 2023 2024 MICRO FRONTENDS: Externals ... ... Build component "forecast": { "builder": "ngx-​ build-​ plus:browser", "options": { "outputPath": "dist/libs/studio-​ enterprise/forecast/", //... "extraWebpackConfig": "libs/studio-​ enterprise/util/ng-​ core/webpack.externals.js" }, //... }, Component <code> "externals": { "rxjs": "rxjs", "@angular/core": true, "@angular/common": true, "@angular/common/http": true, "@angular/platform-​ browser": true, "@angular/platform-​ browser-​ dynamic": true, "@angular/compiler": true, "@angular/elements": true, } 1 2
  • 20. 2019 2020 2023 2024 MICRO FRONTENDS: Externals ... ... Component files
  • 21. 2019 2020 2023 2024 MICRO FRONTENDS: Externals ... ... Optimization results Angular, RxJS <code> Component <code> Component <code> Component <code> ~1MB
  • 22. 2019 2020 2023 2024 MICRO FRONTENDS: Evolution ... ... Since that time Gained experience & expertise Switched to new tech stack for new features
  • 23. 2019 2020 2023 2024 MICRO FRONTENDS: Evolution ... ... New issues Increased Components code size Internal libs were not shared between components Angular RxJS <code> Component Dep4 Dep5 Dep1 Dep2 Dep3 Component Dep4 Dep1 Dep2 Component Dep5 Dep1 Dep3
  • 24. 2019 2020 2023 2024 MICRO FRONTENDS: MF ... ... Module Federation is a feature introduced in Webpack 5 that enables dynamic and decentralized sharing of JavaScript modules between different Webpack-​ bundles at runtime. Component <code> Dep4 Dep5 Dep1 Dep2 Dep3 Component <code> Dep4 Dep1 Dep2 Component <code> Dep5 Dep1 Dep3 Dep2
  • 25. 2019 2020 2023 2024 MICRO FRONTENDS: MF ... ... Build config withModuleFederationPlugin({ name: 'forecast_component', filename: 'forecast-​ component.js', exposes: { './Main': path.join(__dirname, './src/main.ts'), }, shared: [ '@creatio/sdk/util/common-​ types', '@creatio/sdk/util/utils', '@creatio/studio-​ enterprise/ui/components', '@creatio/studio-​ enterprise/feature/components-​ preprocessors', '@creatio/studio-​ enterprise/ui/cdk', '@creatio/studio-​ enterprise/ui/schema', '@creatio/studio-​ enterprise/ui/data-​ grid-​ cdk', '@creatio/studio-​ enterprise/ui/view', '@creatio/studio-​ enterprise/feature/schema-​ view', '@creatio/studio-​ enterprise/util/model', '@creatio/studio-​ enterprise/util/low-​ code', ], }); Component <code> DepN Dep1 ...
  • 26. 2019 2020 2023 2024 MICRO FRONTENDS: MF ... ... Build result Remote entry Dependency Component <code> DepN Dep1 ...
  • 27. 2019 2020 2023 2024 MICRO FRONTENDS: MF ... ... Loading schema 1 2
  • 28. 2019 2020 2023 2024 MICRO FRONTENDS: MF ... ... Optimization results Component Before, Mb After, Mb % Forecast 9.2 2.7 71% Analytics Dashboard 5.6 0.05 99% Campaign Gallery 3.11 0.05 99% Omnichannel Messaging 2.15 0.34 84% ... ... ... ...
  • 29. 2019 2020 2023 2024 MICRO FRONTENDS: Further plans ... ... Plans for the future Split libs into a smaller chunks for more advanced lazy loading Optimize build process
  • 30. 2019 2020 2023 2024 MICRO FRONTENDS: Carry outs ... ... Micro frontends Enabled possibility and added flexibility in using new technologies Led to new issues