SlideShare a Scribd company logo
Cross-framework
communication
on frontend
OR
How to make clients
and users of enterprise
projects happy
Grygorii Gavaleshko
I’m a Frontend Technical Leader on one of our enterprise projects.
Working in IT from 2009.
Was working so far in 4 countries on 8+ different projects.
You can check for more here: gavaleshko.org.ua
Agenda
Agenda
- Value
Agenda
- Value
- Project lifecycle
Agenda
- Value
- Project lifecycle
- Problem && Solution
Agenda
- Value
- Project lifecycle
- Problem && Solution
- Demo
Agenda
- Value
- Project lifecycle
- Problem && Solution
- Demo
- Real project examples
Agenda
- Value
- Project lifecycle
- Problem && Solution
- Demo
- Real project examples
- Summary
Agenda
- Value
- Project lifecycle
- Problem && Solution
- Demo
- Real project examples
- Summary
- Questions
Value
Value
- Work with more than one frontend framework
Value
- Work with more than one frontend framework
- Experience that help you provide valuable solution for client
Value
- Work with more than one frontend framework
- Experience that help you provide valuable solution for client
- Smooth code migration
Value
- Work with more than one frontend framework
- Experience that help you provide valuable solution for client
- Smooth code migration
- Early beta-features testing
Value
- Work with more than one frontend framework
- Experience that help you provide valuable solution for client
- Smooth code migration
- Early beta-features testing
- Project lifecycle
Value
- Work with more than one frontend framework
- Experience that help you provide valuable solution for client
- Smooth code migration
- Early beta-features testing
- Project lifecycle
- How mango is growing
- …
Project lifecycle
Project lifecycle
Initiating process
Project lifecycle
Planning process
Project lifecycle
Executing process
Project lifecycle
Initiating process - now for new cycle
Why?
Project lifecycle
Initiating process - now for new cycle
- Project is growing
Project lifecycle
Initiating process - now for new cycle
- Project is growing
- Change of core concepts
Project lifecycle
Initiating process - now for new cycle
- Project is growing
- Change of core concepts
- New features
Project lifecycle
Initiating process - now for new cycle
- Project is growing
- Change of core concepts
- New features
- …
Then you need to start from the beginning
Project lifecycle
Initiating process - now for new cycle
Problem &&
solution
Problem && solution
There is no way to replace at once everything was was working for
a years
Problem && solution
Reasons:
Problem && solution
Reasons:
- Project complexity
Problem && solution
Reasons:
- Project complexity
- Lack of resources (people, money, management)
Problem && solution
Reasons:
- Project complexity
- Lack of resources (people, money, management)
- Third-party dependencies (projects, people, tools, technologies)
Problem && solution
Reasons:
- Project complexity
- Lack of resources (people, money, management)
- Third-party dependencies (projects, people, tools, technologies)
- …
Problem && solution
Solution is in migration process/phase
Problem && solution
What we decided to make it smooth:
Problem && solution
What we decided to make it smooth:
- Integrate features (written using new framework) directly in
application
Problem && solution
What we decided to make it smooth:
- Integrate features (written using new framework) directly in
application
- Convert old features/pages into features opened in <iframe>
Problem && solution
What we decided to make it smooth:
- Integrate features (written using new framework) directly in
application
- Convert old features/pages into features opened in <iframe>
- Move simple pages first (on standalone new site)
Problem && solution
User advantages:
Problem && solution
User advantages:
- This approach allow them to start working with new changes
right now (UX and feature behavior) and even start proposing
improvements, provide valuable feedback
Problem && solution
User advantages:
- This approach allow them to start working with new changes
right now (UX and feature behavior) and even start proposing
improvements
- This will help to be familiar with everything in the moment of full
switch from old to new site
Problem && solution
Development advantages:
Problem && solution
Development advantages:
- We have enough time to check if everything is working as
expected (acceptance criteria)
Problem && solution
Development advantages:
- We have enough time to check if everything is working as
expected (acceptance criteria)
- We can test enough before the switch (from user perspective, if
this is update he was actually waiting for)
Problem && solution
Development advantages:
- We have enough time to check if everything is working as
expected (acceptance criteria)
- We can test enough before the switch (from user perspective, if
this is update he was actually waiting for)
- We can check if new technology covering all needs
Problem && solution
As result:
Problem && solution
As result:
- User/developer is working in framework-mixed environment
Problem && solution
As result:
- User/developer is working in framework-mixed environment
- We have enough time to test standalone application as it is
developed in background
Problem && solution
As result:
- User/developer is working in framework-mixed environment
- We have enough time to test standalone application as it is
developed in background
- In the end one small switch is refreshing old framework with
new one with minor influence to the user
Problem && solution
Using selected approach there is no matter what was the old
frontend technology and what will be the new one.
Problem && solution
We created a tool which is called trainmanjs. It is a public package in npm
repository And as you can see in the package description – it is a wrapper
on native window.postMessage functionality.
Problem && solution
Our project plan is:
Problem && solution
Our project plan is:
- move features which were pages to be dialogs (client request)
Problem && solution
Our project plan is:
- move features which were pages to be dialogs (client request)
- move simple pages into new stack
Problem && solution
Our project plan is:
- move features which were pages to be dialogs (client request)
- move simple pages into new stack
- some components needs to be integrated directly into old application
Problem && solution
To solve 1st case:
- move features which were pages to be dialogs
(they are the forms with complicated fields/functionality which are used to create new objects)
We inserted iframe into old stack and it contains new standalone ReactJS
application
Problem && solution
When we are going to open new dialogs from old stack the flow is next:
Problem && solution
When we are going to open new dialogs from old stack the flow is next:
1. -> Using the tool we are sending a message to iframe (new
application) with the old route string
Problem && solution
When we are going to open new dialogs from old stack the flow is next:
1. -> Using the tool we are sending a message to iframe (new
application) with the old route string
2. <- If requested route (mapping of old to new) in router is registered
then we are rendering it and sending success (or error) message back
Problem && solution
When we are going to open new dialogs from old stack the flow is next:
1. -> Using the tool we are sending a message to iframe (new
application) with the old route string
2. <- If requested route (mapping of old to new) in router is registered
then we are rendering it and sending success (or error) message back
3. Old stack received confirmation and then is opening iframe which
contains rendered feature which was requested
(or showing error if route was not found – this should not happen as mapping should be done correctly)
Problem && solution
When we are going to open new dialogs from old stack the flow is next:
4. -> When we are closing iframe message is sent again into new stack.
It is used to render some empty page
(to stop processing any actions in iframe) and clearing the information in our new application data Store (if
needed)
Problem && solution
This was the flow for initial dialogs rendering – just show the form.
Problem && solution
If user is filling all the data and clicking button to create the object then
in case of error – we are showing it in iframe and if object was
successfully created then previous flow is extended with next steps:
Problem && solution
If user is filling all the data and clicking button to create the object then
in case of error – we are showing it in iframe and if object was
successfully created then previous flow is extended with next steps:
- <- After successful creation we are sending new message with created
object details (only which are needed) to old app
Problem && solution
If user is filling all the data and clicking button to create the object then
in case of error – we are showing it in iframe and if object was
successfully created then previous flow is extended with next steps:
- <- After successful creation we are sending new message with created
object details (only which are needed)
- Then old site when receiving such message is showing notification
component with the details from message (name, etc.)
Problem && solution
To solve 2nd case:
- move simple pages into new stack
Nothing special was done, only redirection from old stack application to
new stack (only few API endpoints were needed to be rewritten to use
new version of API).
This is not a problem for a user as there is already redirection between
old frameworks. So in the end we’ll replace two old frameworks.
Problem && solution
To solve 3rd case:
- some components needs to be integrated directly into old
application
(this is list of objects from database that can be dragged to content part or edited/duplicated/deleted directly
from component, has filtering and sorting)
Problem && solution
To solve 3rd case:
- some components needs to be integrated directly into old
application
- We added our ReactJS application as an npm package dependency to
the old project (both of them)
Problem && solution
To solve 3rd case:
- some components needs to be integrated directly into old
application
- We added our ReactJS application as an npm package dependency to
the old project (both of them)
- And mounted ReactJS component directly. Communication for actions
in component was implemented in the same way as for Case 1
(for example opening already created objects for editing)
Problem && solution
To solve 3rd case:
- some components needs to be integrated directly into old
application
What specific is here?
Problem && solution
To solve 3rd case:
- some components needs to be integrated directly into old
application
This is check where ReactJS application is running. If as a library in old
stack, then on the same action we were executing post message and
repeat the flow from Case 1 and if inside native framework then just
usual flow for opening component on page.
Demo
Demo
Show simple project written on JavaScript which is communicating with
boilerplate/template application on React to demonstrate the idea of
communication.
Do not forget to show code!
Real project
examples
Real project examples
There is still no confirmation from client about ability to present this.
But I can quickly show you on my local PC how it looks like.
Summary
- Work with more than one frontend framework
- Experience that help you provide valuable solution for client
- Smooth code migration
- Early beta-features testing
- Project lifecycle
- Now we know how mango is growing
- …
Questions
Thank you
See you on our next
meeting in
June!
7 / 06 / 2018

More Related Content

Similar to Grygoriy gavaleshko cross-framework communication on frontent

Project report
Project report Project report
Project report
Vikram Singh
 
Software Process Model in software engineering
Software Process Model in software engineeringSoftware Process Model in software engineering
Software Process Model in software engineering
MuhammadTalha436
 
Wireless Wednesdays: Part 4
Wireless Wednesdays: Part 4Wireless Wednesdays: Part 4
Wireless Wednesdays: Part 4
Teamstudio
 
Gui application for e mail application
Gui application for e mail applicationGui application for e mail application
Gui application for e mail application
Umesh Mk
 
Cosc412 presentation1
Cosc412 presentation1Cosc412 presentation1
Cosc412 presentation1garden8an
 
CodeCamp general info
CodeCamp general infoCodeCamp general info
CodeCamp general info
Tomi Juhola
 
Agile.docx
Agile.docxAgile.docx
Agile.docx
ssusere4c6aa
 
3wks Introduction Pack
3wks Introduction Pack3wks Introduction Pack
3wks Introduction PackAlex Freeman
 
Cloudsolutionday 2016: Docker & FAAS at getvero.com
Cloudsolutionday 2016: Docker & FAAS at getvero.comCloudsolutionday 2016: Docker & FAAS at getvero.com
Cloudsolutionday 2016: Docker & FAAS at getvero.com
AWS Vietnam Community
 
Report for-smart-trash-project
Report for-smart-trash-project Report for-smart-trash-project
Report for-smart-trash-project
Aimen Hajri
 
L06 Using Design Patterns
L06 Using Design PatternsL06 Using Design Patterns
L06 Using Design Patterns
Ólafur Andri Ragnarsson
 
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speechVue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Divante
 
Rapid Application Development with MEAN Stack
Rapid Application Development with MEAN StackRapid Application Development with MEAN Stack
Rapid Application Development with MEAN Stack
Avinash Kaza
 
TO DO list APP Called Do It
TO DO list APP Called Do ItTO DO list APP Called Do It
TO DO list APP Called Do It
محمود فرغلي
 
fireup pro software house - this is who we are
fireup pro software house - this is who we arefireup pro software house - this is who we are
fireup pro software house - this is who we are
fireup.pro
 
projectreport.pdf
projectreport.pdfprojectreport.pdf
projectreport.pdf
AyushGupta540746
 
Utsha guha cocoa:swift-exp5.9yr
Utsha guha cocoa:swift-exp5.9yrUtsha guha cocoa:swift-exp5.9yr
Utsha guha cocoa:swift-exp5.9yr
Utsha Guha
 
zaid ppt.pptx
zaid ppt.pptxzaid ppt.pptx
zaid ppt.pptx
aasim40
 
Manual testing interview questions
Manual testing interview questionsManual testing interview questions
Manual testing interview questions
BABAR MANZAR
 

Similar to Grygoriy gavaleshko cross-framework communication on frontent (20)

Project report
Project report Project report
Project report
 
Software Process Model in software engineering
Software Process Model in software engineeringSoftware Process Model in software engineering
Software Process Model in software engineering
 
Avinash-Whawal_Resume
Avinash-Whawal_ResumeAvinash-Whawal_Resume
Avinash-Whawal_Resume
 
Wireless Wednesdays: Part 4
Wireless Wednesdays: Part 4Wireless Wednesdays: Part 4
Wireless Wednesdays: Part 4
 
Gui application for e mail application
Gui application for e mail applicationGui application for e mail application
Gui application for e mail application
 
Cosc412 presentation1
Cosc412 presentation1Cosc412 presentation1
Cosc412 presentation1
 
CodeCamp general info
CodeCamp general infoCodeCamp general info
CodeCamp general info
 
Agile.docx
Agile.docxAgile.docx
Agile.docx
 
3wks Introduction Pack
3wks Introduction Pack3wks Introduction Pack
3wks Introduction Pack
 
Cloudsolutionday 2016: Docker & FAAS at getvero.com
Cloudsolutionday 2016: Docker & FAAS at getvero.comCloudsolutionday 2016: Docker & FAAS at getvero.com
Cloudsolutionday 2016: Docker & FAAS at getvero.com
 
Report for-smart-trash-project
Report for-smart-trash-project Report for-smart-trash-project
Report for-smart-trash-project
 
L06 Using Design Patterns
L06 Using Design PatternsL06 Using Design Patterns
L06 Using Design Patterns
 
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speechVue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
 
Rapid Application Development with MEAN Stack
Rapid Application Development with MEAN StackRapid Application Development with MEAN Stack
Rapid Application Development with MEAN Stack
 
TO DO list APP Called Do It
TO DO list APP Called Do ItTO DO list APP Called Do It
TO DO list APP Called Do It
 
fireup pro software house - this is who we are
fireup pro software house - this is who we arefireup pro software house - this is who we are
fireup pro software house - this is who we are
 
projectreport.pdf
projectreport.pdfprojectreport.pdf
projectreport.pdf
 
Utsha guha cocoa:swift-exp5.9yr
Utsha guha cocoa:swift-exp5.9yrUtsha guha cocoa:swift-exp5.9yr
Utsha guha cocoa:swift-exp5.9yr
 
zaid ppt.pptx
zaid ppt.pptxzaid ppt.pptx
zaid ppt.pptx
 
Manual testing interview questions
Manual testing interview questionsManual testing interview questions
Manual testing interview questions
 

More from Aneta Kołosowska (Wiśniewska)

Seven circles of BA hell - Krzysztof Kolosowski
Seven circles of BA hell  - Krzysztof KolosowskiSeven circles of BA hell  - Krzysztof Kolosowski
Seven circles of BA hell - Krzysztof Kolosowski
Aneta Kołosowska (Wiśniewska)
 
Performance testing meets the cloud - Artem Shendrikov
Performance testing meets the cloud -  Artem ShendrikovPerformance testing meets the cloud -  Artem Shendrikov
Performance testing meets the cloud - Artem Shendrikov
Aneta Kołosowska (Wiśniewska)
 
Maciej Hryniszak, Technical Leader WebUI: "Project reanimation: a general case"
Maciej Hryniszak, Technical Leader WebUI: "Project reanimation: a general case"Maciej Hryniszak, Technical Leader WebUI: "Project reanimation: a general case"
Maciej Hryniszak, Technical Leader WebUI: "Project reanimation: a general case"
Aneta Kołosowska (Wiśniewska)
 
Edyta Samborska & Remigiusz Samborski presentation - Change Giraffe – "story ...
Edyta Samborska & Remigiusz Samborski presentation - Change Giraffe – "story ...Edyta Samborska & Remigiusz Samborski presentation - Change Giraffe – "story ...
Edyta Samborska & Remigiusz Samborski presentation - Change Giraffe – "story ...
Aneta Kołosowska (Wiśniewska)
 
ITea&Coffee - Atomic design systems 2.0
ITea&Coffee - Atomic design systems 2.0ITea&Coffee - Atomic design systems 2.0
ITea&Coffee - Atomic design systems 2.0
Aneta Kołosowska (Wiśniewska)
 
ITea&Coffee - Using coaching techniques in the business analysis work
ITea&Coffee - Using coaching techniques in the business analysis workITea&Coffee - Using coaching techniques in the business analysis work
ITea&Coffee - Using coaching techniques in the business analysis work
Aneta Kołosowska (Wiśniewska)
 
Tips and techniques for successful facilitation Agata Szocik
Tips and techniques for successful facilitation Agata SzocikTips and techniques for successful facilitation Agata Szocik
Tips and techniques for successful facilitation Agata Szocik
Aneta Kołosowska (Wiśniewska)
 

More from Aneta Kołosowska (Wiśniewska) (7)

Seven circles of BA hell - Krzysztof Kolosowski
Seven circles of BA hell  - Krzysztof KolosowskiSeven circles of BA hell  - Krzysztof Kolosowski
Seven circles of BA hell - Krzysztof Kolosowski
 
Performance testing meets the cloud - Artem Shendrikov
Performance testing meets the cloud -  Artem ShendrikovPerformance testing meets the cloud -  Artem Shendrikov
Performance testing meets the cloud - Artem Shendrikov
 
Maciej Hryniszak, Technical Leader WebUI: "Project reanimation: a general case"
Maciej Hryniszak, Technical Leader WebUI: "Project reanimation: a general case"Maciej Hryniszak, Technical Leader WebUI: "Project reanimation: a general case"
Maciej Hryniszak, Technical Leader WebUI: "Project reanimation: a general case"
 
Edyta Samborska & Remigiusz Samborski presentation - Change Giraffe – "story ...
Edyta Samborska & Remigiusz Samborski presentation - Change Giraffe – "story ...Edyta Samborska & Remigiusz Samborski presentation - Change Giraffe – "story ...
Edyta Samborska & Remigiusz Samborski presentation - Change Giraffe – "story ...
 
ITea&Coffee - Atomic design systems 2.0
ITea&Coffee - Atomic design systems 2.0ITea&Coffee - Atomic design systems 2.0
ITea&Coffee - Atomic design systems 2.0
 
ITea&Coffee - Using coaching techniques in the business analysis work
ITea&Coffee - Using coaching techniques in the business analysis workITea&Coffee - Using coaching techniques in the business analysis work
ITea&Coffee - Using coaching techniques in the business analysis work
 
Tips and techniques for successful facilitation Agata Szocik
Tips and techniques for successful facilitation Agata SzocikTips and techniques for successful facilitation Agata Szocik
Tips and techniques for successful facilitation Agata Szocik
 

Recently uploaded

How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
KrzysztofKkol1
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
ayushiqss
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 

Recently uploaded (20)

How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 

Grygoriy gavaleshko cross-framework communication on frontent

  • 2. OR
  • 3. How to make clients and users of enterprise projects happy
  • 4. Grygorii Gavaleshko I’m a Frontend Technical Leader on one of our enterprise projects. Working in IT from 2009. Was working so far in 4 countries on 8+ different projects. You can check for more here: gavaleshko.org.ua
  • 8. Agenda - Value - Project lifecycle - Problem && Solution
  • 9. Agenda - Value - Project lifecycle - Problem && Solution - Demo
  • 10. Agenda - Value - Project lifecycle - Problem && Solution - Demo - Real project examples
  • 11. Agenda - Value - Project lifecycle - Problem && Solution - Demo - Real project examples - Summary
  • 12. Agenda - Value - Project lifecycle - Problem && Solution - Demo - Real project examples - Summary - Questions
  • 13. Value
  • 14. Value - Work with more than one frontend framework
  • 15. Value - Work with more than one frontend framework - Experience that help you provide valuable solution for client
  • 16. Value - Work with more than one frontend framework - Experience that help you provide valuable solution for client - Smooth code migration
  • 17. Value - Work with more than one frontend framework - Experience that help you provide valuable solution for client - Smooth code migration - Early beta-features testing
  • 18. Value - Work with more than one frontend framework - Experience that help you provide valuable solution for client - Smooth code migration - Early beta-features testing - Project lifecycle
  • 19. Value - Work with more than one frontend framework - Experience that help you provide valuable solution for client - Smooth code migration - Early beta-features testing - Project lifecycle - How mango is growing - …
  • 24. Project lifecycle Initiating process - now for new cycle Why?
  • 25. Project lifecycle Initiating process - now for new cycle - Project is growing
  • 26. Project lifecycle Initiating process - now for new cycle - Project is growing - Change of core concepts
  • 27. Project lifecycle Initiating process - now for new cycle - Project is growing - Change of core concepts - New features
  • 28. Project lifecycle Initiating process - now for new cycle - Project is growing - Change of core concepts - New features - … Then you need to start from the beginning
  • 31. Problem && solution There is no way to replace at once everything was was working for a years
  • 33. Problem && solution Reasons: - Project complexity
  • 34. Problem && solution Reasons: - Project complexity - Lack of resources (people, money, management)
  • 35. Problem && solution Reasons: - Project complexity - Lack of resources (people, money, management) - Third-party dependencies (projects, people, tools, technologies)
  • 36. Problem && solution Reasons: - Project complexity - Lack of resources (people, money, management) - Third-party dependencies (projects, people, tools, technologies) - …
  • 37. Problem && solution Solution is in migration process/phase
  • 38. Problem && solution What we decided to make it smooth:
  • 39. Problem && solution What we decided to make it smooth: - Integrate features (written using new framework) directly in application
  • 40. Problem && solution What we decided to make it smooth: - Integrate features (written using new framework) directly in application - Convert old features/pages into features opened in <iframe>
  • 41. Problem && solution What we decided to make it smooth: - Integrate features (written using new framework) directly in application - Convert old features/pages into features opened in <iframe> - Move simple pages first (on standalone new site)
  • 43. Problem && solution User advantages: - This approach allow them to start working with new changes right now (UX and feature behavior) and even start proposing improvements, provide valuable feedback
  • 44. Problem && solution User advantages: - This approach allow them to start working with new changes right now (UX and feature behavior) and even start proposing improvements - This will help to be familiar with everything in the moment of full switch from old to new site
  • 46. Problem && solution Development advantages: - We have enough time to check if everything is working as expected (acceptance criteria)
  • 47. Problem && solution Development advantages: - We have enough time to check if everything is working as expected (acceptance criteria) - We can test enough before the switch (from user perspective, if this is update he was actually waiting for)
  • 48. Problem && solution Development advantages: - We have enough time to check if everything is working as expected (acceptance criteria) - We can test enough before the switch (from user perspective, if this is update he was actually waiting for) - We can check if new technology covering all needs
  • 50. Problem && solution As result: - User/developer is working in framework-mixed environment
  • 51. Problem && solution As result: - User/developer is working in framework-mixed environment - We have enough time to test standalone application as it is developed in background
  • 52. Problem && solution As result: - User/developer is working in framework-mixed environment - We have enough time to test standalone application as it is developed in background - In the end one small switch is refreshing old framework with new one with minor influence to the user
  • 53. Problem && solution Using selected approach there is no matter what was the old frontend technology and what will be the new one.
  • 54. Problem && solution We created a tool which is called trainmanjs. It is a public package in npm repository And as you can see in the package description – it is a wrapper on native window.postMessage functionality.
  • 55. Problem && solution Our project plan is:
  • 56. Problem && solution Our project plan is: - move features which were pages to be dialogs (client request)
  • 57. Problem && solution Our project plan is: - move features which were pages to be dialogs (client request) - move simple pages into new stack
  • 58. Problem && solution Our project plan is: - move features which were pages to be dialogs (client request) - move simple pages into new stack - some components needs to be integrated directly into old application
  • 59. Problem && solution To solve 1st case: - move features which were pages to be dialogs (they are the forms with complicated fields/functionality which are used to create new objects) We inserted iframe into old stack and it contains new standalone ReactJS application
  • 60. Problem && solution When we are going to open new dialogs from old stack the flow is next:
  • 61. Problem && solution When we are going to open new dialogs from old stack the flow is next: 1. -> Using the tool we are sending a message to iframe (new application) with the old route string
  • 62. Problem && solution When we are going to open new dialogs from old stack the flow is next: 1. -> Using the tool we are sending a message to iframe (new application) with the old route string 2. <- If requested route (mapping of old to new) in router is registered then we are rendering it and sending success (or error) message back
  • 63. Problem && solution When we are going to open new dialogs from old stack the flow is next: 1. -> Using the tool we are sending a message to iframe (new application) with the old route string 2. <- If requested route (mapping of old to new) in router is registered then we are rendering it and sending success (or error) message back 3. Old stack received confirmation and then is opening iframe which contains rendered feature which was requested (or showing error if route was not found – this should not happen as mapping should be done correctly)
  • 64. Problem && solution When we are going to open new dialogs from old stack the flow is next: 4. -> When we are closing iframe message is sent again into new stack. It is used to render some empty page (to stop processing any actions in iframe) and clearing the information in our new application data Store (if needed)
  • 65. Problem && solution This was the flow for initial dialogs rendering – just show the form.
  • 66. Problem && solution If user is filling all the data and clicking button to create the object then in case of error – we are showing it in iframe and if object was successfully created then previous flow is extended with next steps:
  • 67. Problem && solution If user is filling all the data and clicking button to create the object then in case of error – we are showing it in iframe and if object was successfully created then previous flow is extended with next steps: - <- After successful creation we are sending new message with created object details (only which are needed) to old app
  • 68. Problem && solution If user is filling all the data and clicking button to create the object then in case of error – we are showing it in iframe and if object was successfully created then previous flow is extended with next steps: - <- After successful creation we are sending new message with created object details (only which are needed) - Then old site when receiving such message is showing notification component with the details from message (name, etc.)
  • 69. Problem && solution To solve 2nd case: - move simple pages into new stack Nothing special was done, only redirection from old stack application to new stack (only few API endpoints were needed to be rewritten to use new version of API). This is not a problem for a user as there is already redirection between old frameworks. So in the end we’ll replace two old frameworks.
  • 70. Problem && solution To solve 3rd case: - some components needs to be integrated directly into old application (this is list of objects from database that can be dragged to content part or edited/duplicated/deleted directly from component, has filtering and sorting)
  • 71. Problem && solution To solve 3rd case: - some components needs to be integrated directly into old application - We added our ReactJS application as an npm package dependency to the old project (both of them)
  • 72. Problem && solution To solve 3rd case: - some components needs to be integrated directly into old application - We added our ReactJS application as an npm package dependency to the old project (both of them) - And mounted ReactJS component directly. Communication for actions in component was implemented in the same way as for Case 1 (for example opening already created objects for editing)
  • 73. Problem && solution To solve 3rd case: - some components needs to be integrated directly into old application What specific is here?
  • 74. Problem && solution To solve 3rd case: - some components needs to be integrated directly into old application This is check where ReactJS application is running. If as a library in old stack, then on the same action we were executing post message and repeat the flow from Case 1 and if inside native framework then just usual flow for opening component on page.
  • 75. Demo
  • 76. Demo Show simple project written on JavaScript which is communicating with boilerplate/template application on React to demonstrate the idea of communication. Do not forget to show code!
  • 78. Real project examples There is still no confirmation from client about ability to present this. But I can quickly show you on my local PC how it looks like.
  • 79. Summary - Work with more than one frontend framework - Experience that help you provide valuable solution for client - Smooth code migration - Early beta-features testing - Project lifecycle - Now we know how mango is growing - …
  • 82.
  • 83. See you on our next meeting in June! 7 / 06 / 2018