SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Building applications in a
Micro-frontends way
Prasanna N Venkatesan@pvenk
Lead Developer with
ThoughtWorks for 9
Years
pvenk
prasann
#java #ruby #javascript #clojure
prasann@thoughtworks.com
AGENDA
Team and Tech-
stack
Introducing Micro-
frontends
Things to take care
in Micro-frontends
When to choose
Micro-frontends
TEAM AND TECH-STACK
Migrate a legacy application
for selling cars by 2020
5teams with 30developers
distributed over 2countries
AGENDA
Team and Tech-
stack
Introducing Micro-
frontends
Things to take care
in Micro-frontends
When to choose
Micro-frontends
INTRODUCING MICRO-FRONTENDS
Monoliths aren’t a
bad design choice
Monolith
web
application
INTRODUCING MICRO-FRONTENDS
Then came Microservices
Monolith
web
application
● Strong module boundaries
● Independent deployment
● Technology diversity
But...
INTRODUCING MICRO-FRONTENDS
Microservices were like these
Monolith
web
application Independent deployments
!== Independent releases
Frontend Monolith
INTRODUCING MICRO-FRONTENDS
All of Microservices’
promises
+
Independent releases
Frontend Monolith
Monolith
web
application
Micro-frontends
AGENDA
Team and Tech-
stack
Introducing Micro-
frontends
Things to take care
in Micro-frontends
When to choose
Micro-frontends
THINGS TO LOOK OUT IN MICRO-FRONTENDS
● Composing multiple frontends
● Sharing data between multiple
frontends.
● Consistent UX across multiple frontends
● Testing strategy
INTRODUCING SERVICES
Configure
Search
Order
Frame
A business-logic agonistic
orchestrator service that knows
how to download the rest of the
services’ frontend
1
3
Composing Multiple
Frontends
COMPOSING MULTIPLE FRONTENDS
Build time
Composition
Run-time
Composition
vs
BUILD TIME FRONTEND COMPOSITION
Search
Configure
Order
Package
Registry
Frame
deploys to
deploys to
deploys to
builds the
app
deploys
App
Server
BUILD TIME FRONTEND COMPOSITION
Good dependency
management resulting in
smaller bundles
Independent cross team
development
A monolith built by
different teams
Non atomic deployments
RUN TIME FRONTEND COMPOSITION
Frame
downloaded initially
Search
Configure
Order
downloaded later
dow
nloaded
later
downloadedlater
Integration happens in
browser
RUN TIME FRONTEND COMPOSITION - TOOLKIT
Client Side
● JSPM
● SystemJS
● FrintJS
● Single-Spa
Server Side
● SSI (Server side
includes)
● Tailor (from Zalando)
RUN TIME FRONTEND COMPOSITION
Independent teams with
independent deployments.
Atomic deployments, so no
versioning issues.
Too many network calls
from client, with increased
bundle size.
Sharing data
between multiple
frontends
SHARING DATA - COMPONENT INITIALIZATION
SHARING DATA - BROWSER STORE
State
Management
Tools
MobX
SHARING DATA - THROUGH DOM EVENTS
SHARING DATA - REDUX ACTIONS
● Reducers will receive all
actions within a store.
● Dynamically possible to
combine reducers after
store initialization.
Design consistency
DESIGN CONSISTENCY
Design
Issues
UX
Consistency
CSS
Ambiguity
CSS AMBIGUITY
CSS AMBIGUITY
UX CONSISTENCY
UX CONSISTENCY
Design
Guild
UX CONSISTENCY
Design Guild
# 0 0 7 8 b f
0 ,1 2 0 ,1 9 1
# 0 0 b c c d
0 ,1 8 8 ,2 0 5
# 7 d c e d 5
1 2 5 ,2 0 6 ,2 1 3
# 0 0 a a 5 b
0 ,1 7 0 ,9 1
# 8 5 b 8 8 0
1 3 3 ,1 8 4 ,1 2 8
# b d b d 3 2
1 8 9 ,1 8 9 ,5 0
# f f f 3 5 0
2 5 5 ,2 4 3 ,8 0
# f b e 0 c e
2 5 1 ,2 2 4 ,2 0 6
# f 2 b a 9 7
2 4 2 ,1 8 6 ,1 5 1
# a 1 7 8 6 1
1 6 1 ,1 2 0 ,9 7
# 8 0 8 1 8 4
1 2 8 ,1 2 9 ,1 3 2
# e e e e e e
2 3 8 ,2 3 8 ,2 3 8
# e e 5 b a 0
2 3 8 ,9 1 ,1 6 0
# 7 0 2 2 6 9
1 1 2 ,3 4 ,1 0 5
# b 5 1 b 5 8
1 8 1 ,2 7 ,8 8
# e d 3 1 2 f
2 3 ` 7 ,4 9 ,4 7
# f 5 8 a 3 3
2 4 5 ,1 3 8 ,5 1
# 5 f 3 c 2 5
9 5 ,6 0 ,3 7
Styleguide
Testing strategy
TESTING STRATEGY
3
3
Integration Tests
● Consumer driven
Contracts (CDC)
● Api journey tests
TESTING STRATEGY - CDC
3
4
● Frame services is the consumer of
all services
● Frame issues a contract that runs
in all pipelines
TESTING STRATEGY - CDC
3
5
Sample of
Frame’s
contract
TESTING STRATEGY
3
6
Functional Tests
TESTING STRATEGY
3
7
Service level testing
Application Smoke
Test
AGENDA
Team and Tech-
stack
Introducing Micro-
frontends
Things to take care
in Micro-frontends
When to choose
Micro-frontends
WHEN MICRO-FRONTENDS
● Distributed self-contained teams, with a need for
independent releases.
● Collaborate with different frameworks in the frontend.
● Teams have experience building Microservices application,
and willing to take it to next step.
It’s not a sprint, it’s a
marathon.
Questions?
Prasanna N Venkatesan@pvenk

Mais conteúdo relacionado

Mais procurados

Service integration made easy with Open Source Kuma
Service integration made easy with Open Source KumaService integration made easy with Open Source Kuma
Service integration made easy with Open Source Kuma
Sven Bernhardt
 
BibinKT_resume
BibinKT_resumeBibinKT_resume
BibinKT_resume
Bibin KT
 

Mais procurados (20)

From Microservices to Service Mesh - devcafe event - July 2018
From Microservices to Service Mesh - devcafe event - July 2018From Microservices to Service Mesh - devcafe event - July 2018
From Microservices to Service Mesh - devcafe event - July 2018
 
Service Mesh for Microservices - Vietnam Mobile Day - June 2018
Service Mesh for Microservices - Vietnam Mobile Day - June 2018Service Mesh for Microservices - Vietnam Mobile Day - June 2018
Service Mesh for Microservices - Vietnam Mobile Day - June 2018
 
Atwix - Ярослав Рогоза
Atwix - Ярослав РогозаAtwix - Ярослав Рогоза
Atwix - Ярослав Рогоза
 
MuleSoft London Community September 2020 - Project Vita
MuleSoft London Community September 2020 - Project VitaMuleSoft London Community September 2020 - Project Vita
MuleSoft London Community September 2020 - Project Vita
 
Senior C# .Net Developer job in London, see @bilal_abrs
Senior C#  .Net Developer job in London, see @bilal_abrsSenior C#  .Net Developer job in London, see @bilal_abrs
Senior C# .Net Developer job in London, see @bilal_abrs
 
Service integration made easy with Open Source Kuma
Service integration made easy with Open Source KumaService integration made easy with Open Source Kuma
Service integration made easy with Open Source Kuma
 
Kubernetes: Increasing velocity without sacrificing quality
Kubernetes: Increasing velocity without sacrificing qualityKubernetes: Increasing velocity without sacrificing quality
Kubernetes: Increasing velocity without sacrificing quality
 
Nitrodroid 2013 | Building your first Android App on PhoneGap
Nitrodroid 2013 | Building your first Android App on PhoneGapNitrodroid 2013 | Building your first Android App on PhoneGap
Nitrodroid 2013 | Building your first Android App on PhoneGap
 
Senior C# .Net Developer job in London from abrs
Senior C#  .Net Developer job in London from abrsSenior C#  .Net Developer job in London from abrs
Senior C# .Net Developer job in London from abrs
 
Of Microservices and Microservices - Robert Munteanu
Of Microservices and Microservices -  Robert MunteanuOf Microservices and Microservices -  Robert Munteanu
Of Microservices and Microservices - Robert Munteanu
 
Stop Configuring Varnish and Start Coding (NAMER)
Stop Configuring Varnish and Start Coding (NAMER)Stop Configuring Varnish and Start Coding (NAMER)
Stop Configuring Varnish and Start Coding (NAMER)
 
SOA, OTD, and Web 2.0 = Collaboration
SOA, OTD, and Web 2.0 = CollaborationSOA, OTD, and Web 2.0 = Collaboration
SOA, OTD, and Web 2.0 = Collaboration
 
Develop, deploy, and operate services at reddit scale oscon 2018
Develop, deploy, and operate services at reddit scale   oscon 2018Develop, deploy, and operate services at reddit scale   oscon 2018
Develop, deploy, and operate services at reddit scale oscon 2018
 
BibinKT_resume
BibinKT_resumeBibinKT_resume
BibinKT_resume
 
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
 
10th Manila MuleSoft Meetup Aug 2021
10th Manila MuleSoft Meetup Aug 202110th Manila MuleSoft Meetup Aug 2021
10th Manila MuleSoft Meetup Aug 2021
 
MVP with GWT and GWTP
MVP with GWT and GWTPMVP with GWT and GWTP
MVP with GWT and GWTP
 
Continuous delivery journey at LesFurets.com
Continuous delivery journey at LesFurets.comContinuous delivery journey at LesFurets.com
Continuous delivery journey at LesFurets.com
 
Lightning barcelona 2-6_synchronizing-activiti-user-tasks
Lightning barcelona 2-6_synchronizing-activiti-user-tasksLightning barcelona 2-6_synchronizing-activiti-user-tasks
Lightning barcelona 2-6_synchronizing-activiti-user-tasks
 
Applanga - Going full circle - Automated Screenshots - In-Context Translation...
Applanga - Going full circle - Automated Screenshots - In-Context Translation...Applanga - Going full circle - Automated Screenshots - In-Context Translation...
Applanga - Going full circle - Automated Screenshots - In-Context Translation...
 

Semelhante a Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf Munich&Barcelona

Rajendra Kumar Sahu_243535(Maximo 7 5 Certified )
Rajendra Kumar Sahu_243535(Maximo 7 5 Certified )Rajendra Kumar Sahu_243535(Maximo 7 5 Certified )
Rajendra Kumar Sahu_243535(Maximo 7 5 Certified )
Rajendra Kumar Sahu
 
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptxSH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
MongoDB
 

Semelhante a Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf Munich&Barcelona (20)

Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf ManchesterBuilding application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
Building application in a "Microfrontends" way - Matthias Lauf *XConf Manchester
 
Building applications in a Micro-frontends way
Building applications in a Micro-frontends wayBuilding applications in a Micro-frontends way
Building applications in a Micro-frontends way
 
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Oracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesOracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservices
 
Oracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesOracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to Microservices
 
Rajendra Kumar Sahu_243535(Maximo 7 5 Certified )
Rajendra Kumar Sahu_243535(Maximo 7 5 Certified )Rajendra Kumar Sahu_243535(Maximo 7 5 Certified )
Rajendra Kumar Sahu_243535(Maximo 7 5 Certified )
 
Microservices the Good Bad and the Ugly
Microservices the Good Bad and the UglyMicroservices the Good Bad and the Ugly
Microservices the Good Bad and the Ugly
 
Architecture Evolution as Company Scales - VoxxedDays Athens 2022
Architecture Evolution as Company Scales - VoxxedDays Athens 2022Architecture Evolution as Company Scales - VoxxedDays Athens 2022
Architecture Evolution as Company Scales - VoxxedDays Athens 2022
 
Getting Started With ThousandEyes Proof of Concepts: End User Digital Experience
Getting Started With ThousandEyes Proof of Concepts: End User Digital ExperienceGetting Started With ThousandEyes Proof of Concepts: End User Digital Experience
Getting Started With ThousandEyes Proof of Concepts: End User Digital Experience
 
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
 
#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to Microservices#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to Microservices
 
Microxchg Microservices
Microxchg MicroservicesMicroxchg Microservices
Microxchg Microservices
 
Automating Screenshot Testing Component Library
Automating Screenshot Testing Component LibraryAutomating Screenshot Testing Component Library
Automating Screenshot Testing Component Library
 
[Tutorial] building machine learning models for predictive maintenance applic...
[Tutorial] building machine learning models for predictive maintenance applic...[Tutorial] building machine learning models for predictive maintenance applic...
[Tutorial] building machine learning models for predictive maintenance applic...
 
Micro frontends with react and redux dev day
Micro frontends with react and redux   dev dayMicro frontends with react and redux   dev day
Micro frontends with react and redux dev day
 
Getting Started with ThousandEyes Proof of Concepts
Getting Started with ThousandEyes Proof of ConceptsGetting Started with ThousandEyes Proof of Concepts
Getting Started with ThousandEyes Proof of Concepts
 
Profreekey.pptx
Profreekey.pptxProfreekey.pptx
Profreekey.pptx
 
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptxSH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
 
Getting Started with ThousandEyes Proof of Concepts
Getting Started with ThousandEyes Proof of ConceptsGetting Started with ThousandEyes Proof of Concepts
Getting Started with ThousandEyes Proof of Concepts
 

Mais de Thoughtworks

Mais de Thoughtworks (20)

Design System as a Product
Design System as a ProductDesign System as a Product
Design System as a Product
 
Designers, Developers & Dogs
Designers, Developers & DogsDesigners, Developers & Dogs
Designers, Developers & Dogs
 
Cloud-first for fast innovation
Cloud-first for fast innovationCloud-first for fast innovation
Cloud-first for fast innovation
 
More impact with flexible teams
More impact with flexible teamsMore impact with flexible teams
More impact with flexible teams
 
Culture of Innovation
Culture of InnovationCulture of Innovation
Culture of Innovation
 
Dual-Track Agile
Dual-Track AgileDual-Track Agile
Dual-Track Agile
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer Experience
 
When we design together
When we design togetherWhen we design together
When we design together
 
Hardware is hard(er)
Hardware is hard(er)Hardware is hard(er)
Hardware is hard(er)
 
Customer-centric innovation enabled by cloud
 Customer-centric innovation enabled by cloud Customer-centric innovation enabled by cloud
Customer-centric innovation enabled by cloud
 
Amazon's Culture of Innovation
Amazon's Culture of InnovationAmazon's Culture of Innovation
Amazon's Culture of Innovation
 
When in doubt, go live
When in doubt, go liveWhen in doubt, go live
When in doubt, go live
 
Don't cross the Rubicon
Don't cross the RubiconDon't cross the Rubicon
Don't cross the Rubicon
 
Error handling
Error handlingError handling
Error handling
 
Your test coverage is a lie!
Your test coverage is a lie!Your test coverage is a lie!
Your test coverage is a lie!
 
Docker container security
Docker container securityDocker container security
Docker container security
 
Redefining the unit
Redefining the unitRedefining the unit
Redefining the unit
 
Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22
 
A Tribute to Turing
A Tribute to TuringA Tribute to Turing
A Tribute to Turing
 
Rsa maths worked out
Rsa maths worked outRsa maths worked out
Rsa maths worked out
 

Último

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Último (20)

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

Building application in a "Microfrontends" way - Prasanna N Venkatesen *XConf Munich&Barcelona