SlideShare a Scribd company logo
1 of 20
Download to read offline
Case study:
Pluginable frontend
Łukasz “Max” Kokoszka
Klient
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
Łukasz “Max” Kokoszka
Klient - informacje
▪ Potentat w branży sub-metering*
* pośrednictwo rozliczeniowe; energetyka
▪ 24 kraje
▪ Dostawca kompleksowych
rozwiązań
▪ „Corporate” vs „Countries”
czyli kontekst biznesowy
Case study: Pluginable frontend
Klient - ekosystem
Case study: Pluginable frontend
Data HUB Internal systemsPortal
„A czy dałoby się…?”
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
Łukasz “Max” Kokoszka
„A czy dałoby się…?” – oczekiwania biznesowe
▪ Dodatkowe treści
▪ Selektywne modyfikacje
▪ Konfiguracja per kontekst
▪ Niezależny development
Case study: Pluginable frontend
Łukasz “Max” Kokoszka
„A czy dałoby się…?” – treści, modyfikacje, konfiguracja
Case study: Pluginable frontend
„A czy dałoby się…?” – wymagania techniczne
▪ Niezależny cykl życia
▪ Separacja rozwiązań i technologii
▪ Separacja odpowiedzialności
▪ Aktualizacja @Runtime
▪ Spójność UX/UI
▪ Zdolność integracji z dodatkowymi systemami
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
„Będzie Pan zadowolony”
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
„Będzie Pan zadowolony” – trzy opcje
▪ „Full modification”
▪ Moduły AngularJS, współdzielony codebase, wszyscy mogą
wszystko
▪ „Separation by convention”
▪ Rozszerzenia dostarczane jako „paczki”, jasno określone co
kto może
▪ „Full separation” czyli…
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
DXPE
Dynamic eXtension Points Engine
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
Łukasz “Max” Kokoszka
DXPE - ekosystem
Case study: Pluginable frontend
Portal
Plugin #1
Plugin #2
Internal systemsData HUB
Client
Configuration Server
Git
Client
DXPE
Host
Host
API
Client
API
CCS
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
XDS*
* Extensions Definition Schema
XD**
** Extensions Definition
HostHost
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
Client
Host-DXPE
Adapter
<iframe>
„HTML5” postMessage
+ promisy
Łukasz “Max” Kokoszka
Case study: Pluginable frontend
window.parent.postMessage(message, targetOrigin, transferable);
DXPE.client.ux.dispatchInfoToast(message); => promise {
"messageId": (string),
"eventId": (string),
"data": (object),
…
}
DXPE.host.onMessage(fn);
function (eventId, data, done) {
…
host.toastHandler(data.msg).then(done);
}channel.postMessage(message);
Łukasz “Max” Kokoszka
XDS – eXtensions Definition Schema
Case study: Pluginable frontend
{
"schemaVersion": (string),
"extensions": [
{
"pointType": (string),
"pointData": (object)
}
]
}
• availableLanguages
• configuration
• corporateFeatureToggle
• defaultFeatures
• feature
• iconSet
• menuInjections
• translations
Łukasz “Max” Kokoszka
XD – eXtensions Definition
Case study: Pluginable frontend
"pointType": "feature",
"pointData": {
"featureId": "EXAMPLE_PLUGIN",
"location": "http://example.com/plugin",
…
}
"pointType": "menuInjections",
"pointData": {
"menuId": "main",
"injections": [
{
"menuItemId": "examplePluginMenuItem",
"$featureId": "EXAMPLE_PLUGIN"
…
}
]
}
Łukasz “Max” Kokoszka
XD – eXtensions Definition
Case study: Pluginable frontend
Łukasz “Max” Kokoszka
DXPE – visit the rabbit hole (DEMO)
Case study: Pluginable frontend
Łukasz „Max” Kokoszka
http://www.linkedin.com/in/lukasz-max-kokoszka
Case study: Pluginable frontend
lkokoszka@future-processing.com
www.future-processing.pl

More Related Content

Similar to [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Optymalizacja pracy front-end developera
Optymalizacja pracy front-end developeraOptymalizacja pracy front-end developera
Optymalizacja pracy front-end developeraWordCamp Polska
 
Nawigacja pomiędzy serwerami, czyli dlaczego serverless to nie lambda albo fu...
Nawigacja pomiędzy serwerami, czyli dlaczego serverless to nie lambda albo fu...Nawigacja pomiędzy serwerami, czyli dlaczego serverless to nie lambda albo fu...
Nawigacja pomiędzy serwerami, czyli dlaczego serverless to nie lambda albo fu...Serverless User Group Poland
 
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...PROIDEA
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun againMarcin Gajda
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wojciech Barczyński
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychThe Software House
 
Oracle Apex - 3 real-life case studies (Pretius presentation for WDI2015)
Oracle Apex - 3 real-life case studies (Pretius presentation for WDI2015)Oracle Apex - 3 real-life case studies (Pretius presentation for WDI2015)
Oracle Apex - 3 real-life case studies (Pretius presentation for WDI2015)Pretius
 
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and AnalyticsŁukasz Grala
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoTomasz Dziuda
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 

Similar to [FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend (20)

Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Optymalizacja pracy front-end developera
Optymalizacja pracy front-end developeraOptymalizacja pracy front-end developera
Optymalizacja pracy front-end developera
 
Nawigacja pomiędzy serwerami, czyli dlaczego serverless to nie lambda albo fu...
Nawigacja pomiędzy serwerami, czyli dlaczego serverless to nie lambda albo fu...Nawigacja pomiędzy serwerami, czyli dlaczego serverless to nie lambda albo fu...
Nawigacja pomiędzy serwerami, czyli dlaczego serverless to nie lambda albo fu...
 
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
 
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
O danych w 2016
O danych w 2016O danych w 2016
O danych w 2016
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
 
Hugo. Make webdev fun again!
Hugo. Make webdev fun again!Hugo. Make webdev fun again!
Hugo. Make webdev fun again!
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
Oracle Apex - 3 real-life case studies (Pretius presentation for WDI2015)
Oracle Apex - 3 real-life case studies (Pretius presentation for WDI2015)Oracle Apex - 3 real-life case studies (Pretius presentation for WDI2015)
Oracle Apex - 3 real-life case studies (Pretius presentation for WDI2015)
 
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 

More from Future Processing

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfFuture Processing
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfFuture Processing
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfFuture Processing
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurzeFuture Processing
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shakeFuture Processing
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myśleniaFuture Processing
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletkaFuture Processing
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 

More from Future Processing (20)

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdf
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdf
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 

[FDD 2017] Łukasz Kokoszka - Case study: pluginable frontend

  • 2. Klient Łukasz “Max” Kokoszka Case study: Pluginable frontend
  • 3. Łukasz “Max” Kokoszka Klient - informacje ▪ Potentat w branży sub-metering* * pośrednictwo rozliczeniowe; energetyka ▪ 24 kraje ▪ Dostawca kompleksowych rozwiązań ▪ „Corporate” vs „Countries” czyli kontekst biznesowy Case study: Pluginable frontend
  • 4. Klient - ekosystem Case study: Pluginable frontend Data HUB Internal systemsPortal
  • 5. „A czy dałoby się…?” Łukasz “Max” Kokoszka Case study: Pluginable frontend
  • 6. Łukasz “Max” Kokoszka „A czy dałoby się…?” – oczekiwania biznesowe ▪ Dodatkowe treści ▪ Selektywne modyfikacje ▪ Konfiguracja per kontekst ▪ Niezależny development Case study: Pluginable frontend
  • 7. Łukasz “Max” Kokoszka „A czy dałoby się…?” – treści, modyfikacje, konfiguracja Case study: Pluginable frontend
  • 8. „A czy dałoby się…?” – wymagania techniczne ▪ Niezależny cykl życia ▪ Separacja rozwiązań i technologii ▪ Separacja odpowiedzialności ▪ Aktualizacja @Runtime ▪ Spójność UX/UI ▪ Zdolność integracji z dodatkowymi systemami Łukasz “Max” Kokoszka Case study: Pluginable frontend
  • 9. „Będzie Pan zadowolony” Łukasz “Max” Kokoszka Case study: Pluginable frontend
  • 10. „Będzie Pan zadowolony” – trzy opcje ▪ „Full modification” ▪ Moduły AngularJS, współdzielony codebase, wszyscy mogą wszystko ▪ „Separation by convention” ▪ Rozszerzenia dostarczane jako „paczki”, jasno określone co kto może ▪ „Full separation” czyli… Łukasz “Max” Kokoszka Case study: Pluginable frontend
  • 11. DXPE Dynamic eXtension Points Engine Łukasz “Max” Kokoszka Case study: Pluginable frontend
  • 12. Łukasz “Max” Kokoszka DXPE - ekosystem Case study: Pluginable frontend Portal Plugin #1 Plugin #2 Internal systemsData HUB Client Configuration Server Git
  • 13. Client DXPE Host Host API Client API CCS Łukasz “Max” Kokoszka Case study: Pluginable frontend XDS* * Extensions Definition Schema XD** ** Extensions Definition
  • 14. HostHost Łukasz “Max” Kokoszka Case study: Pluginable frontend Client Host-DXPE Adapter <iframe> „HTML5” postMessage + promisy
  • 15. Łukasz “Max” Kokoszka Case study: Pluginable frontend window.parent.postMessage(message, targetOrigin, transferable); DXPE.client.ux.dispatchInfoToast(message); => promise { "messageId": (string), "eventId": (string), "data": (object), … } DXPE.host.onMessage(fn); function (eventId, data, done) { … host.toastHandler(data.msg).then(done); }channel.postMessage(message);
  • 16. Łukasz “Max” Kokoszka XDS – eXtensions Definition Schema Case study: Pluginable frontend { "schemaVersion": (string), "extensions": [ { "pointType": (string), "pointData": (object) } ] } • availableLanguages • configuration • corporateFeatureToggle • defaultFeatures • feature • iconSet • menuInjections • translations
  • 17. Łukasz “Max” Kokoszka XD – eXtensions Definition Case study: Pluginable frontend "pointType": "feature", "pointData": { "featureId": "EXAMPLE_PLUGIN", "location": "http://example.com/plugin", … }
  • 18. "pointType": "menuInjections", "pointData": { "menuId": "main", "injections": [ { "menuItemId": "examplePluginMenuItem", "$featureId": "EXAMPLE_PLUGIN" … } ] } Łukasz “Max” Kokoszka XD – eXtensions Definition Case study: Pluginable frontend
  • 19. Łukasz “Max” Kokoszka DXPE – visit the rabbit hole (DEMO) Case study: Pluginable frontend
  • 20. Łukasz „Max” Kokoszka http://www.linkedin.com/in/lukasz-max-kokoszka Case study: Pluginable frontend lkokoszka@future-processing.com www.future-processing.pl