SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Micro Frontend
Architecture: A Look Into
the Future
Ante Tomić, Software Engineer (Infobip)
ABOUT ME
ANTE TOMIĆ
Software Engineer at Infobip
(2016 – ...)
ARE YOU USING MICRO
FRONTENDS ALREADY?
Possibly ... yes, we are!
HOW IS THAT POSSIBLE?
Deploying only parts of the
application or page separately, ...
HOW? ISN’T THIS
SOMETHING NEW?
The idea is not new!
Micro Frontends = more friendly
and bulky term
N different projects
EXAMPLE: Navigation in
Infobip’s Web Interface
Homepage Conversations
react react-dom
momentlodash
react react-dom
momentlodash
Libraries Libraries
State management State management
ComponentsComponents
navigation navigation
Common parts Common parts
Navigation
NPM library
Homepage
react react-dom
momentlodash
Libraries
State management
Components
Common parts
Navigation
NPM library
Monolithic Web application
Dependent on bundling
Re-deploys
WHAT COULD BE THE
SOLUTION?
Scaling the application parts
into independent modules
WHAT DO WE HAVE
SO FAR?
INDEPENDENT MODULES -> MICRO SERVICES?
MICRO FRONTENDS
No unified approach!
Micro Frontend 1
Micro Frontend 2
Micro Frontend 3
SOURCE CONTROL BUILD & TEST DEPLOY Front-end
integration
Team Jaran
Team Pero
Team Rendo
CORE IDEAS
Technology Agnostic Isolate Team Code
Naming Convention
Resilience
Favor Native Browser
Features
e.g. infobip- prefix, namespaces, etc.
Separate application builds!!!
Application stability
Independency is the key!
N projects (15 < N < 45)
WEB INTERFACE:
Every project has navigation
MICRO FRONTENDS
Globally used
application parts
Common parts of
multiple apps
Main app
Application
Navigation
Error page
Translation
system
NAVIGATION MODULE
Build
Deploy
Determine the
version
Type definitions for
navigation
Navigation code
bundlee.g. v5.0.0
Choose the desired
version & location
Any Infobip
Web Interface
application
Type definitions for
navigation
Navigation code
bundle
Backend API
endpoint
Retrieve & Prepare
navigation infoNavigation data
ready
Resolves & renders
navigation in the browser
Navigation info
APPROACH?
Navigation code
bundle
Make navigation
availableDynamic import
window.navigation
window.React
window.ReactDOM
window.Lodash
... etc.
Webpack externals
Any Infobip
Web Interface
application
async
DEVELOPING MODULES
Any micro
frontend
module
Local
development
Production
Integrated into
applications
Problem with
starting the
module
1 module = 1 repository (avoid monorepo)
LOCAL DEVELOPMENT
Any micro frontend module
Exposed modules Demo page
webpack-dev-server
HTTP proxy server
WHY THIS APPROACH?
Own implementation
Bundle optimizations
Single version of dependencies
https://reactjs.org/docs/error-decoder.html/?invariant=321
Invalid hook call. Hooks can only be called inside of the body of a
function component. This could happen for one of the following
reasons: 1. You might have mismatching versions of React and
the renderer (such as React DOM) 2. You might be breaking the
Rules of Hooks 3. You might have more than one copy of React
in the same app See https://fb.me/react-invalid-hook-call for tips
about how to debug and fix this problem.
WHY THIS APPROACH?
Main reasons?
Less complexity
Easier to maintain
DIFFERENT SOLUTIONS?
Client-side
frameworks
Server-side
frameworks
Helper libraries
qiankun(乾坤)
frint.js
Mosaic
PuzzleJs
Podium
Micromono
Module Federation
Siteless
Single SPA
EventBus
POPULARITY?
https://www.npmtrends.com/
BIGGEST ISSUES?
A lot of manual work
Relies on own
implementation
Resolving shared
dependencies
A lot of trial and error Takes time to implement
CAN WE IMPROVE WEB
INTERFACE?
There is always room for
improvements!!!
Improve developer & customer
experiences!
Using an alternate solution.
CAN WE DO BETTER?
Good build performance Good Web performance
A solution for shared
dependencies
Less manual work
MODULE FEDERATION
Application
Container
Container
Host Remote
Host
Remote
MODULE FEDERATION
Container
Exposed modules
async
With version
Share
scope
async
Consumed (shared) modules
(exports)
Version check
OUR CHOICE ... WHY?
Already N projects
Gradual
implementation
Requirements Time to implement
Looking into the best
option
SHARED TOPICS?
Team Jaran
Team Pero
Team Rendo
Web Performance is key!
Establishing a common
Design System
Knowledge sharing
Team Duje
Feature development
No monoliths
Be able to keep changing
Independence
Useful for medium-large projectsRedundancy
Consistency
Heterogeneity
Requires more front-end code
and local development setup
Not good for smaller
development teams
Good sides
Bad sides
The Good, the Bad and the Ugly …
ARE MICRO FRONTENDS
WORTH ALL THE FUZZ?
In Infobip’s use case ... yes!
Analyze your projects and
decide what to do!
Remember: there is no perfect solution!
https://bit.ly/micro-frontend-shift-2020
THANK YOU!
Questions?
A.Tomic@infobip.com
https://bit.ly/micro-frontend-shift-2020

Weitere ähnliche Inhalte

Was ist angesagt?

Micro Frontends Architecture
Micro Frontends ArchitectureMicro Frontends Architecture
Micro Frontends ArchitectureRag Dhiman
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...Fwdays
 
"Micro-frontends, web development", Oleksandr Khivrych
"Micro-frontends, web development", Oleksandr Khivrych"Micro-frontends, web development", Oleksandr Khivrych
"Micro-frontends, web development", Oleksandr KhivrychFwdays
 
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 wayPrasanna Venkatesan
 
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019Codemotion
 
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...DevDay.org
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro FrontendMiki Lombardi
 
Introduction To Micro Frontends
Introduction To Micro Frontends Introduction To Micro Frontends
Introduction To Micro Frontends Meitar Karas
 
Microfrontends Monoreops & Trunkbased based
Microfrontends Monoreops & Trunkbased basedMicrofrontends Monoreops & Trunkbased based
Microfrontends Monoreops & Trunkbased basedVinci Rufus
 
How to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsHow to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsMarcellKiss7
 
From Monolithic to Microservices
From Monolithic to Microservices From Monolithic to Microservices
From Monolithic to Microservices Amazon Web Services
 
Micro frontend: The microservices puzzle extended to frontend
Micro frontend: The microservices puzzle  extended to frontendMicro frontend: The microservices puzzle  extended to frontend
Micro frontend: The microservices puzzle extended to frontendAudrey Neveu
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitecturePaul Mooney
 
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap..."Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...Fwdays
 
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 dayPrasanna Venkatesan
 

Was ist angesagt? (20)

Micro Frontends Architecture
Micro Frontends ArchitectureMicro Frontends Architecture
Micro Frontends Architecture
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
 
Micro-frontends – is it a new normal?
Micro-frontends – is it a new normal?Micro-frontends – is it a new normal?
Micro-frontends – is it a new normal?
 
Micro Frontends
Micro FrontendsMicro Frontends
Micro Frontends
 
"Micro-frontends, web development", Oleksandr Khivrych
"Micro-frontends, web development", Oleksandr Khivrych"Micro-frontends, web development", Oleksandr Khivrych
"Micro-frontends, web development", Oleksandr Khivrych
 
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
 
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
 
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro Frontend
 
Micro frontend
Micro frontendMicro frontend
Micro frontend
 
Introduction To Micro Frontends
Introduction To Micro Frontends Introduction To Micro Frontends
Introduction To Micro Frontends
 
Microfrontends Monoreops & Trunkbased based
Microfrontends Monoreops & Trunkbased basedMicrofrontends Monoreops & Trunkbased based
Microfrontends Monoreops & Trunkbased based
 
How to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsHow to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elements
 
Micro-Frontend Architecture
Micro-Frontend ArchitectureMicro-Frontend Architecture
Micro-Frontend Architecture
 
From Monolithic to Microservices
From Monolithic to Microservices From Monolithic to Microservices
From Monolithic to Microservices
 
Micro frontend: The microservices puzzle extended to frontend
Micro frontend: The microservices puzzle  extended to frontendMicro frontend: The microservices puzzle  extended to frontend
Micro frontend: The microservices puzzle extended to frontend
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap..."Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
 
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
 

Ähnlich wie Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - Ante Tomic (Infobip)

Micro Frontends.pptx
Micro Frontends.pptxMicro Frontends.pptx
Micro Frontends.pptxShanAli738907
 
Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Jonas Bandi
 
Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Jonas Bandi
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidConAmir Zuker
 
Scaling frontend applications with micro-frontends Presentation.pdf
Scaling frontend applications with micro-frontends Presentation.pdfScaling frontend applications with micro-frontends Presentation.pdf
Scaling frontend applications with micro-frontends Presentation.pdfKatamaRajuBandigari1
 
Microservice architecture : Part 1
Microservice architecture : Part 1Microservice architecture : Part 1
Microservice architecture : Part 1NodeXperts
 
OdessaJs 2020 - How to build your first micro frontend in a matter of minutes
OdessaJs 2020 - How to build your first micro frontend in a matter of minutesOdessaJs 2020 - How to build your first micro frontend in a matter of minutes
OdessaJs 2020 - How to build your first micro frontend in a matter of minutesVlad Fedosov
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekDr. Felix Raab
 
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...OdessaJS Conf
 
React Js vs Node Js_ Which Framework to Choose for Your Next Web Application
React Js vs Node Js_ Which Framework to Choose for Your Next Web ApplicationReact Js vs Node Js_ Which Framework to Choose for Your Next Web Application
React Js vs Node Js_ Which Framework to Choose for Your Next Web Applicationadityakumar2080
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | IntroductionJohnTaieb
 
Frontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In BanglaFrontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In BanglaStack Learner
 
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...Bojan Veljanovski
 
Die Qual der Wahl bei den Single Page Application Frameworks
Die Qual der Wahl bei den Single Page Application FrameworksDie Qual der Wahl bei den Single Page Application Frameworks
Die Qual der Wahl bei den Single Page Application FrameworksJonas Bandi
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) Sascha Sambale
 
Designing Powerful Web Applications - Monterey
Designing Powerful Web Applications - MontereyDesigning Powerful Web Applications - Monterey
Designing Powerful Web Applications - MontereyDave Malouf
 
Best practices for creating modular Web applications
Best practices for creating modular Web applicationsBest practices for creating modular Web applications
Best practices for creating modular Web applicationspeychevi
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDave Malouf
 

Ähnlich wie Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - Ante Tomic (Infobip) (20)

Micro Frontends.pptx
Micro Frontends.pptxMicro Frontends.pptx
Micro Frontends.pptx
 
Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!
 
Teamwork Presentation
Teamwork PresentationTeamwork Presentation
Teamwork Presentation
 
Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!Frontend Monoliths: Run if you can!
Frontend Monoliths: Run if you can!
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
 
Scaling frontend applications with micro-frontends Presentation.pdf
Scaling frontend applications with micro-frontends Presentation.pdfScaling frontend applications with micro-frontends Presentation.pdf
Scaling frontend applications with micro-frontends Presentation.pdf
 
Microservice architecture : Part 1
Microservice architecture : Part 1Microservice architecture : Part 1
Microservice architecture : Part 1
 
OdessaJs 2020 - How to build your first micro frontend in a matter of minutes
OdessaJs 2020 - How to build your first micro frontend in a matter of minutesOdessaJs 2020 - How to build your first micro frontend in a matter of minutes
OdessaJs 2020 - How to build your first micro frontend in a matter of minutes
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...
 
React Js vs Node Js_ Which Framework to Choose for Your Next Web Application
React Js vs Node Js_ Which Framework to Choose for Your Next Web ApplicationReact Js vs Node Js_ Which Framework to Choose for Your Next Web Application
React Js vs Node Js_ Which Framework to Choose for Your Next Web Application
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
How backbone.js is different from ember.js?
How backbone.js is different from ember.js?How backbone.js is different from ember.js?
How backbone.js is different from ember.js?
 
Frontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In BanglaFrontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In Bangla
 
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
 
Die Qual der Wahl bei den Single Page Application Frameworks
Die Qual der Wahl bei den Single Page Application FrameworksDie Qual der Wahl bei den Single Page Application Frameworks
Die Qual der Wahl bei den Single Page Application Frameworks
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Designing Powerful Web Applications - Monterey
Designing Powerful Web Applications - MontereyDesigning Powerful Web Applications - Monterey
Designing Powerful Web Applications - Monterey
 
Best practices for creating modular Web applications
Best practices for creating modular Web applicationsBest practices for creating modular Web applications
Best practices for creating modular Web applications
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAs
 

Mehr von Shift Conference

Shift Remote: AI: How Does Face Recognition Work (ars futura)
Shift Remote: AI: How Does Face Recognition Work  (ars futura)Shift Remote: AI: How Does Face Recognition Work  (ars futura)
Shift Remote: AI: How Does Face Recognition Work (ars futura)Shift Conference
 
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...Shift Conference
 
Shift Remote: AI: Smarter AI with analytical graph databases - Victor Lee (Ti...
Shift Remote: AI: Smarter AI with analytical graph databases - Victor Lee (Ti...Shift Remote: AI: Smarter AI with analytical graph databases - Victor Lee (Ti...
Shift Remote: AI: Smarter AI with analytical graph databases - Victor Lee (Ti...Shift Conference
 
Shift Remote: DevOps: Devops with Azure Devops and Github - Juarez Junior (Mi...
Shift Remote: DevOps: Devops with Azure Devops and Github - Juarez Junior (Mi...Shift Remote: DevOps: Devops with Azure Devops and Github - Juarez Junior (Mi...
Shift Remote: DevOps: Devops with Azure Devops and Github - Juarez Junior (Mi...Shift Conference
 
Shift Remote: DevOps: Autodesks research into digital twins for AEC - Kean W...
Shift Remote: DevOps: Autodesks research into digital twins for AEC -  Kean W...Shift Remote: DevOps: Autodesks research into digital twins for AEC -  Kean W...
Shift Remote: DevOps: Autodesks research into digital twins for AEC - Kean W...Shift Conference
 
Shift Remote: DevOps: When metrics are not enough, and everyone is on-call - ...
Shift Remote: DevOps: When metrics are not enough, and everyone is on-call - ...Shift Remote: DevOps: When metrics are not enough, and everyone is on-call - ...
Shift Remote: DevOps: When metrics are not enough, and everyone is on-call - ...Shift Conference
 
Shift Remote: DevOps: Modern incident management with opsgenie - Kristijan L...
Shift Remote: DevOps: Modern incident management with opsgenie -  Kristijan L...Shift Remote: DevOps: Modern incident management with opsgenie -  Kristijan L...
Shift Remote: DevOps: Modern incident management with opsgenie - Kristijan L...Shift Conference
 
Shift Remote: DevOps: Gitlab ci hands-on experience - Ivan Rimac (Barrage)
Shift Remote: DevOps: Gitlab ci hands-on experience - Ivan Rimac (Barrage)Shift Remote: DevOps: Gitlab ci hands-on experience - Ivan Rimac (Barrage)
Shift Remote: DevOps: Gitlab ci hands-on experience - Ivan Rimac (Barrage)Shift Conference
 
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...Shift Conference
 
Shift Remote: DevOps: An (Un)expected Journey - Zeljko Margeta (RBA)
Shift Remote: DevOps: An (Un)expected Journey - Zeljko Margeta (RBA)Shift Remote: DevOps: An (Un)expected Journey - Zeljko Margeta (RBA)
Shift Remote: DevOps: An (Un)expected Journey - Zeljko Margeta (RBA)Shift Conference
 
Shift Remote: Game Dev - Localising Mobile Games - Marta Kunic (Nanobit)
Shift Remote: Game Dev - Localising Mobile Games - Marta Kunic (Nanobit)Shift Remote: Game Dev - Localising Mobile Games - Marta Kunic (Nanobit)
Shift Remote: Game Dev - Localising Mobile Games - Marta Kunic (Nanobit)Shift Conference
 
Shift Remote: Game Dev - Challenges Introducing Open Source to the Games Indu...
Shift Remote: Game Dev - Challenges Introducing Open Source to the Games Indu...Shift Remote: Game Dev - Challenges Introducing Open Source to the Games Indu...
Shift Remote: Game Dev - Challenges Introducing Open Source to the Games Indu...Shift Conference
 
Shift Remote: Game Dev - Ghost in the Machine: Authorial Voice in System Desi...
Shift Remote: Game Dev - Ghost in the Machine: Authorial Voice in System Desi...Shift Remote: Game Dev - Ghost in the Machine: Authorial Voice in System Desi...
Shift Remote: Game Dev - Ghost in the Machine: Authorial Voice in System Desi...Shift Conference
 
Shift Remote: Game Dev - Building Better Worlds with Game Culturalization - K...
Shift Remote: Game Dev - Building Better Worlds with Game Culturalization - K...Shift Remote: Game Dev - Building Better Worlds with Game Culturalization - K...
Shift Remote: Game Dev - Building Better Worlds with Game Culturalization - K...Shift Conference
 
Shift Remote: Game Dev - Open Match: An Open Source Matchmaking Framework - J...
Shift Remote: Game Dev - Open Match: An Open Source Matchmaking Framework - J...Shift Remote: Game Dev - Open Match: An Open Source Matchmaking Framework - J...
Shift Remote: Game Dev - Open Match: An Open Source Matchmaking Framework - J...Shift Conference
 
Shift Remote: Game Dev - Designing Inside the Box - Fernando Reyes Medina (34...
Shift Remote: Game Dev - Designing Inside the Box - Fernando Reyes Medina (34...Shift Remote: Game Dev - Designing Inside the Box - Fernando Reyes Medina (34...
Shift Remote: Game Dev - Designing Inside the Box - Fernando Reyes Medina (34...Shift Conference
 
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Conference
 
Shift Remote: Mobile - Introduction to MotionLayout on Android - Denis Fodor ...
Shift Remote: Mobile - Introduction to MotionLayout on Android - Denis Fodor ...Shift Remote: Mobile - Introduction to MotionLayout on Android - Denis Fodor ...
Shift Remote: Mobile - Introduction to MotionLayout on Android - Denis Fodor ...Shift Conference
 
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Conference
 
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)Shift Conference
 

Mehr von Shift Conference (20)

Shift Remote: AI: How Does Face Recognition Work (ars futura)
Shift Remote: AI: How Does Face Recognition Work  (ars futura)Shift Remote: AI: How Does Face Recognition Work  (ars futura)
Shift Remote: AI: How Does Face Recognition Work (ars futura)
 
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
 
Shift Remote: AI: Smarter AI with analytical graph databases - Victor Lee (Ti...
Shift Remote: AI: Smarter AI with analytical graph databases - Victor Lee (Ti...Shift Remote: AI: Smarter AI with analytical graph databases - Victor Lee (Ti...
Shift Remote: AI: Smarter AI with analytical graph databases - Victor Lee (Ti...
 
Shift Remote: DevOps: Devops with Azure Devops and Github - Juarez Junior (Mi...
Shift Remote: DevOps: Devops with Azure Devops and Github - Juarez Junior (Mi...Shift Remote: DevOps: Devops with Azure Devops and Github - Juarez Junior (Mi...
Shift Remote: DevOps: Devops with Azure Devops and Github - Juarez Junior (Mi...
 
Shift Remote: DevOps: Autodesks research into digital twins for AEC - Kean W...
Shift Remote: DevOps: Autodesks research into digital twins for AEC -  Kean W...Shift Remote: DevOps: Autodesks research into digital twins for AEC -  Kean W...
Shift Remote: DevOps: Autodesks research into digital twins for AEC - Kean W...
 
Shift Remote: DevOps: When metrics are not enough, and everyone is on-call - ...
Shift Remote: DevOps: When metrics are not enough, and everyone is on-call - ...Shift Remote: DevOps: When metrics are not enough, and everyone is on-call - ...
Shift Remote: DevOps: When metrics are not enough, and everyone is on-call - ...
 
Shift Remote: DevOps: Modern incident management with opsgenie - Kristijan L...
Shift Remote: DevOps: Modern incident management with opsgenie -  Kristijan L...Shift Remote: DevOps: Modern incident management with opsgenie -  Kristijan L...
Shift Remote: DevOps: Modern incident management with opsgenie - Kristijan L...
 
Shift Remote: DevOps: Gitlab ci hands-on experience - Ivan Rimac (Barrage)
Shift Remote: DevOps: Gitlab ci hands-on experience - Ivan Rimac (Barrage)Shift Remote: DevOps: Gitlab ci hands-on experience - Ivan Rimac (Barrage)
Shift Remote: DevOps: Gitlab ci hands-on experience - Ivan Rimac (Barrage)
 
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
Shift Remote: DevOps: DevOps Heroes - Adding Advanced Automation to your Tool...
 
Shift Remote: DevOps: An (Un)expected Journey - Zeljko Margeta (RBA)
Shift Remote: DevOps: An (Un)expected Journey - Zeljko Margeta (RBA)Shift Remote: DevOps: An (Un)expected Journey - Zeljko Margeta (RBA)
Shift Remote: DevOps: An (Un)expected Journey - Zeljko Margeta (RBA)
 
Shift Remote: Game Dev - Localising Mobile Games - Marta Kunic (Nanobit)
Shift Remote: Game Dev - Localising Mobile Games - Marta Kunic (Nanobit)Shift Remote: Game Dev - Localising Mobile Games - Marta Kunic (Nanobit)
Shift Remote: Game Dev - Localising Mobile Games - Marta Kunic (Nanobit)
 
Shift Remote: Game Dev - Challenges Introducing Open Source to the Games Indu...
Shift Remote: Game Dev - Challenges Introducing Open Source to the Games Indu...Shift Remote: Game Dev - Challenges Introducing Open Source to the Games Indu...
Shift Remote: Game Dev - Challenges Introducing Open Source to the Games Indu...
 
Shift Remote: Game Dev - Ghost in the Machine: Authorial Voice in System Desi...
Shift Remote: Game Dev - Ghost in the Machine: Authorial Voice in System Desi...Shift Remote: Game Dev - Ghost in the Machine: Authorial Voice in System Desi...
Shift Remote: Game Dev - Ghost in the Machine: Authorial Voice in System Desi...
 
Shift Remote: Game Dev - Building Better Worlds with Game Culturalization - K...
Shift Remote: Game Dev - Building Better Worlds with Game Culturalization - K...Shift Remote: Game Dev - Building Better Worlds with Game Culturalization - K...
Shift Remote: Game Dev - Building Better Worlds with Game Culturalization - K...
 
Shift Remote: Game Dev - Open Match: An Open Source Matchmaking Framework - J...
Shift Remote: Game Dev - Open Match: An Open Source Matchmaking Framework - J...Shift Remote: Game Dev - Open Match: An Open Source Matchmaking Framework - J...
Shift Remote: Game Dev - Open Match: An Open Source Matchmaking Framework - J...
 
Shift Remote: Game Dev - Designing Inside the Box - Fernando Reyes Medina (34...
Shift Remote: Game Dev - Designing Inside the Box - Fernando Reyes Medina (34...Shift Remote: Game Dev - Designing Inside the Box - Fernando Reyes Medina (34...
Shift Remote: Game Dev - Designing Inside the Box - Fernando Reyes Medina (34...
 
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
 
Shift Remote: Mobile - Introduction to MotionLayout on Android - Denis Fodor ...
Shift Remote: Mobile - Introduction to MotionLayout on Android - Denis Fodor ...Shift Remote: Mobile - Introduction to MotionLayout on Android - Denis Fodor ...
Shift Remote: Mobile - Introduction to MotionLayout on Android - Denis Fodor ...
 
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
 
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
 

Kürzlich hochgeladen

Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls DubaiEscorts Call Girls
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.soniya singh
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...SUHANI PANDEY
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableSeo
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirtrahman018755
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Call Girls in Nagpur High Profile
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...Escorts Call Girls
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.soniya singh
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...singhpriety023
 
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...SUHANI PANDEY
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.soniya singh
 

Kürzlich hochgeladen (20)

Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls Dubai
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 

Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - Ante Tomic (Infobip)

Hinweis der Redaktion

  1. Hi everyone, thank you for joining. Today I will introduce you into the world of micro frontends and how we implemented them, so let’s start.
  2. Hi. My name is Ante, 26 years old Software Engineer working in Infobip for 4 years. I am focused on technical side of Web and recently I am focusing on React, Webpack, Node.JS and optimization of application and project infrastructure and build processes. You will find me holding a talk on local meetups and I always hope to pass my knowledges and experiences through presentations, meetups and conferences to the other developers. (00:50) In my free time I love exploring and hobby photography, so you will often find me with my camera.
  3. (00:50) Let’s start with an important question. Are we already using micro frontends? It is likely that we are! Usually when working on projects, we think about project optimization and optimizing developer experience by avoiding frequent re-deploys. We usually do that by separating parts of the application, so that we can deploy them independently. Well, by doing that we changed application archutecture and actually implemented some sort of microfrontends without being aware of it! Let’s check how this is possible.
  4. The idea of creating independent modules from parts of the application is definitely not anything new as micro frontends are more an arhitectural approach than a specific technique, but the name is new and it came from micro services. Micro Frontends are obviously more friendly and bulky term under which this concept became more popular and present.
  5. To understand this better, I will take an example of navigation in Infobip’s Web Interface. This is our main Web product that is a collection of N different projects. Those projects can be separate applications, even parts of the application. We will focus on the general picture, so let’s start by checking the implementation we will explain. 
  6. If we look at this screenshot, we can see a web application that contains navigation. But, as this is a big product with N projects, this is not the only application and we have navigation shown in N different projects. So, this is component that is common for absolutely every project.
  7. (03:00) Let’s check the structure. We have projects split up into multiple separate areas, so that it is easier to support them by multiple teams. As these are Node.JS projects, the foundation are dependencies like react, lodash, moment, webpack, and more. Some projects also can have additional dependencies or some sort of store or state management if necessary. Or common parts necessary and usually present in all applications. And of couse, then we have components. Now, we saw the navigation in the previous slide which contained the screenshot and we know that it is global. What should we do with more present components like that? Extract them into a separate library!
  8. What problem do we have? Our Web applications are monolithic meaning that they contain everything. Even though we separated some parts to libraries, it is not enough because we are building and including components and everything into application code bundles. And that is not good because code bundles are a static code what means that we have to do the re-deploy whenever we have changes. But how could we solve this? We can optimize our applications by scaling and decomposing parts into independent modules which can then be deployed separately from the application. Let’s dive in more to check what this means.
  9. (04:51) We can define micro frontends and micro services as architectural approach that allows us to split up the application into independent multiple areas. With micro services we get agility and independence because teams can take ownership for their services, easier deployment because one micro service is not dependent on the others, technological freedom because we can choose what to use, and resilience because service independence increases an application’s resistance to failure. This is related to the micro services architecture, but the main difference is that micro frontends include user interface. By doing this we avoid monolithic UI where change in one part can have unexpected effects on the other side, so let’s dive into micro frontends and learn more.
  10. (05:57) There is no unified approach for implementing micro frontends, but we have a general goal. By separating monolithic UI into the smaller independent modules we optimize them for feature development by having a separate front-end modules each maintained by the team that owns its stack. In our example, let’s say that we have Team Jaran, Team Pero and Team Rendo. As we see here, each micro frontend is independent: it has own build and deploy after which the new feature is shipped directly to the customer without depending on anyone else. To better explain and understand how we can approach implementing micro frontends, let’s start by exploring the core ideas.
  11. To start with, we should be technology agnostic – each team should be able to choose and upgrade their stack without coordinating with other teams. Your application modules should be independent what means that code between applications shouldn’t be shared. Establish some sort of naming convention, especially for parts which can’t be isolated yet. Try to rely on using native browser events for communication instead of Custom APIs, but if you need API, keep it as simple as possible. And lastly, your modules should be resilient and work even if something else fails.
  12. It is important to say that independency is the key. A lot depends on how applications are set up because there are multiple approaches for implementing this. To easier understand the implementation, let’s set up some conditions. All projects are in React. We have N projects and each one of them uses the same navigation code that we will decompose. Let’s assume we are using Amazon Web Services and CDN.
  13. In Infobip Web Interface it makes sense for us to extract navigation and additionally error page because they are common and should work consistently everywhere. Additionally, we are also extracting the translation system which we are improving and unifying at one place, so with its global usage it makes sense to extract it. We are working on expanding this, so we are just getting started.
  14. (09:00) Let’s check general picture. Our navigation module contains build and deploy stages by using Jenkins. We are keeping them separate because we want to choose by ourselves which micro frontend to deploy and when. When we run application build, we determine the navigation version. This is important because we need to have the version ready for deploy. Then with that version, we make type definitions and Webpack-generated code bundle for CDN. Then when we want to deploy, we start the Jenkins deploy job by choosing the desired version and environment. That job will save the version information to Redis.
  15. In Web application we use Redis to retrieve and prepare any neccessary information about CDN links and version by using our application back-end. Then as soon as we have everything ready, we pass all of it to any Web Interface application. With that information it has everything necessary to dynamically fetch and render the navigation in current client’s browser without any issues. (10:21) Then as a final result, application is loaded with navigation visible and there is no change for user in comparison to earlier.
  16. (10:27) In application we resolve navigation dynamically right before we need it. We do this asynchronously with what we ensure that the navigation is loaded before the application. Performance and UI are not affected as fetching the bundle doesn’t take more than 80 milliseconds. When we load the bundle, it automatically makes navigation available with window scope and Webpack for using. As we share some dependencies inside every application, our navigation code bundle uses them as Webpack extenals. This means that everything under window is resolved as EcmaScript import. We will explore why we did this, but let’s first talk about how we develop new features for modules like navigation.
  17. For micro frontend modules we always have one local development and one production build. Production is easy because our module is loaded into applications and we can immediately see the result and if everything works. But, local development is challenging because we need to ensure that we can test everything like in production. (11:49) Everything should be inside your repository and you should avoid using something like monorepo as it is considered an anti-pattern and doesn’t allow you to take advantage of organization benefits of independent teams and applications.
  18. Our modules in Infobip usually consist of 2 parts: exposed modules and demo page for local development. Demo page includes exposed modules and is done to mimic the functionalities and behaviour from production. Apart from demo page, we also need web application server like webpack-dev-server. And sometimes you will need to make API requests and then it is good to ensure that you are making the calls same locally and in production. You can use HTTP proxy server which can then take care of that. Also, additionally today’s Web development is quite powerful and you have a lot of possibilities. (12:41) It is important to remember that your module shouldn’t know or care about the development environment of other teams, so definitely try to avoid dependency like that.
  19. Why did we do this approach? Like most developers, we decided to go with own implementation based on our needs. The second reason is optimization of navigation bundle. This helped us significantly reduce the bundle size by 60 percent. The third reason is ensuring the single version of dependencies, especially for React libraries. Let’s check the React error message quote below. Just read what is bolded in red colour. We learned this lesson the hard way when we had issue with one shared component using React Hooks and after a little bit of investigation, we realized that having multiple copies from React even from the same folder in node_modules still causes issues.
  20. (13:44) There are two more main reasons. The first is less complexity. By breaking up the application into smaller parts, we can deploy those parts independently. And then that means that it is easier to maintain the projects because they are noticeably smaller and you are not depending on anything else to update your micro service module.
  21. We can also use some existing solution instead. We have 3 categories: client-side frameworks which allow for client-side micro frontends while also offering server-side rendering; server-side frameworks which are usually libraries or frameworks for Node.JS Express, but can also come in a form of services rolled out into your infrastructure; and helper libraries that either provide some infrastructure for sharing dependencies, routing events, or just bringing together different micro frontends and their lifecycles. Helper libraries are our desired direction and the implemention worth mentioning here is Webpack’s Module Federation.
  22. But first, let’s check all solutions. We see interesting trend here: client-side and server-side frameworks are less popular, while helper libraries like Single SPA and Postal are more popular. They are still far from popular libraries, but this shows that developers are getting interested for sharing dependencies and bringing different microfrontends together. This is expected as micro frontends are starting to gain more traction.
  23. Let’s first talk about downsides of our approach. There is a lot of manual work as we have to cover everything by ourselves like loading foreign modules, script tags, on-demand loading, and more. The problem is also resolving shared dependencies because we need to be careful about for example resolving React versions problem we mentioned. And any own solution requires a lot of trial and error to be sure that everything is working properly and they can take time to properly implement and test. But, can we improve this?
  24. (16:33) There is always room for improvements, but you have to be aware of something: no solution is perfect and you can find good and bad sides anywhere. The most important things are developer and customer experiences, so it is good to think about build and Web performance and especially automation, so that you have less manual work. You can even consider a different solution, so let’s check Module Federation.
  25. If we take Module Federation and compare it with our solution, we can see that automation and less manual work are problems because we can’t achieve that at the moment. We can get good build performance by optimizing bundles, Web performance by optimizing what we load and how, and shared dependencies to some extent by using window global scope and externals, but let’s dive in into Module Federation because automation makes a difference here.
  26. With Module Federation idea is same – we want application parts as a separate build. We will call those separate builds Containers. Containers can be referenced either directly by Application or by other containers and in such relationship the container is the remote and the consumer of the container is the host. The remote can then expose the modules to the host which can then use them. We call those modules remote modules. And this means that we have separate builds what brings us independence and much better build performance.
  27. But what actually happens? Normally we have exports as EcmaScript Modules. Here we specify which modules to expose in remote, so that the hosts can consume them. That is done asynchronously what allows the build to put each exposed module in a separate file with all necessary dependencies. Thanks to async, we load only what is really necessary what ensures good Web performance because we make only necessary requests with the number of total downloads low. Another thing we saw with navigation is sharing dependencies. Here we have shared modules. Any container and application can put shared modules into the share scope together with version information. And they can consume shared modules available in the share scope together with the version requirement check. We will always get from share scope the highest available version of a shared module within the version requirement. And shared modules are also provided in async way meaning that providing them has no download cost and we download only what we really use.
  28. (20:00) We chose the externals solution because we already have N projects and we wanted to start gradually. We wanted more instant results due to incoming navigation updates that gave us a good starting point we can build. Client-side and server-side frameworks would take us too long, so we knew that we would go for our own solution or a helper library. But this doesn’t mean that we are not looking into the other options. We are waiting for Webpack 5 to be out of beta and after that we are planning to test Module Federation and possibly integrate it, so the future is bright. (20:47) But remember, migrating to micro frontend architecture is complex and definitely not trivial, so this is the big reason why we are doing it slice-by-slice and improving it along the way.
  29. (20:49) As Micro Frontends are all about working in teams on independent modules, there are always some shared topics which are essential for covering and addressing. This is important to ensure a good end-result and avoid redundant work. Let’s take our already mentioned tems Jaran, Pero and Rendo and assume we have more teams like Team Duje. Each team shouldn’t be the one to reinvent the wheel and it is always a good idea to share knowledge, ideas or implementations with the other teams through either presenting your solution or some Community of Practice. It is also good to have a technical Web team which can then improve some things teams usually don’t have time for. And when we are developing, we need to ensure a consistent look-and-feel for customer and we can do that by having a common Design System. And lastly, Web Performance is very important because you have faster response time and less code shipped to the browser which results in a better load time and it is better to unify improvements across all modules.
  30. (22:08) Let’s summarize micro frontends. They are useful for optimizing feature development because they improve development speed. There are also no monoliths anymore. You are able to keep changing and improving your projects because you can do local decision-making and eliminate legacy code. And there is independence as we have self-contained modules, no shared code, and lighter projects we can run with less computing resources. But, because each micro frontend has own stack, you have to maintain everything separately what can lead to redundancy, but this may be avoidable with Module Federation. And if you need to get some info or data from the other teams, you may have to depend on them and keep everything consistent. And even though micro frontends are technology-agnostic, there is a problem of heterogeneity which is one of the more controversial things. Just because you can doesn’t mean that you should pick a different technology stack. We defined that we will always use technologies like Node.JS or React and avoided this problem. And we already said that setting up local development what can be a challenge. And lastly, while micro frontends are awesome for medium and large projects, they may be an overkill for smaller teams and smaller amount of developers that don’t have an issue with communication.
  31. (24:01) So, your takeaway from today should be that micro frontends are worth all the fuzz! They helped us a lot with optimizing everything in Infobip, especially with N projects and we are planning to continue to use and improve it. For your projects, definitely take time to analyze them and then decide about what you will do. And remember – there is no perfect solution, you can find good and bad sides for absolutely everything. (24:35) Pick up the solution that best fits your needs and first try implementing it on one smaller parts and if all works well, then expand it to more global level.
  32. Before wrapping up, I just want to share link where I have prepared the little reference list where you can check frameworks and some things I have mentioned. I used some of those links to prepare this presentation, so hopefully it will be useful for you.
  33. Thank you and any questions?